You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.6 KiB
167 lines
4.6 KiB
4 years ago
|
import BigNumber from 'bignumber.js';
|
||
|
import { addCurrencies, conversionUtil } from './conversion-util';
|
||
7 years ago
|
|
||
4 years ago
|
describe('conversion utils', () => {
|
||
|
describe('addCurrencies()', () => {
|
||
|
it('add whole numbers', () => {
|
||
4 years ago
|
const result = addCurrencies(3, 9, {
|
||
|
aBase: 10,
|
||
|
bBase: 10,
|
||
4 years ago
|
});
|
||
4 years ago
|
expect(result.toNumber()).toStrictEqual(12);
|
||
4 years ago
|
});
|
||
7 years ago
|
|
||
4 years ago
|
it('add decimals', () => {
|
||
4 years ago
|
const result = addCurrencies(1.3, 1.9, {
|
||
|
aBase: 10,
|
||
|
bBase: 10,
|
||
4 years ago
|
});
|
||
4 years ago
|
expect(result.toNumber()).toStrictEqual(3.2);
|
||
4 years ago
|
});
|
||
7 years ago
|
|
||
4 years ago
|
it('add repeating decimals', () => {
|
||
4 years ago
|
const result = addCurrencies(1 / 3, 1 / 9, {
|
||
|
aBase: 10,
|
||
|
bBase: 10,
|
||
4 years ago
|
});
|
||
4 years ago
|
expect(result.toNumber()).toStrictEqual(0.4444444444444444);
|
||
4 years ago
|
});
|
||
|
});
|
||
4 years ago
|
|
||
4 years ago
|
describe('conversionUtil', () => {
|
||
|
it('returns expected types', () => {
|
||
4 years ago
|
const conv1 = conversionUtil(1000000000000000000, {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'hex',
|
||
4 years ago
|
});
|
||
4 years ago
|
const conv2 = conversionUtil(1, {
|
||
|
fromNumericBase: 'dec',
|
||
|
fromDenomination: 'ETH',
|
||
|
toDenomination: 'WEI',
|
||
4 years ago
|
});
|
||
4 years ago
|
expect(typeof conv1 === 'string').toStrictEqual(true);
|
||
|
expect(conv2 instanceof BigNumber).toStrictEqual(true);
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts from dec to hex', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1000000000000000000', {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'hex',
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('de0b6b3a7640000');
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1500000000000000000', {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'hex',
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('14d1120d7b160000');
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts hex formatted numbers to dec', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('0xde0b6b3a7640000', {
|
||
|
fromNumericBase: 'hex',
|
||
|
toNumericBase: 'dec',
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('1000000000000000000');
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('0x14d1120d7b160000', {
|
||
|
fromNumericBase: 'hex',
|
||
|
toNumericBase: 'dec',
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('1500000000000000000');
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts WEI to ETH', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('0xde0b6b3a7640000', {
|
||
|
fromNumericBase: 'hex',
|
||
|
toNumericBase: 'dec',
|
||
|
fromDenomination: 'WEI',
|
||
|
toDenomination: 'ETH',
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('1');
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('0x14d1120d7b160000', {
|
||
|
fromNumericBase: 'hex',
|
||
|
toNumericBase: 'dec',
|
||
|
fromDenomination: 'WEI',
|
||
|
toDenomination: 'ETH',
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('1.5');
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts ETH to WEI', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1', {
|
||
|
fromNumericBase: 'dec',
|
||
|
fromDenomination: 'ETH',
|
||
|
toDenomination: 'WEI',
|
||
4 years ago
|
}).toNumber(),
|
||
4 years ago
|
).toStrictEqual(1000000000000000000);
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1.5', {
|
||
|
fromNumericBase: 'dec',
|
||
|
fromDenomination: 'ETH',
|
||
|
toDenomination: 'WEI',
|
||
4 years ago
|
}).toNumber(),
|
||
4 years ago
|
).toStrictEqual(1500000000000000000);
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts ETH to GWEI', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1', {
|
||
|
fromNumericBase: 'dec',
|
||
|
fromDenomination: 'ETH',
|
||
|
toDenomination: 'GWEI',
|
||
4 years ago
|
}).toNumber(),
|
||
4 years ago
|
).toStrictEqual(1000000000);
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1.5', {
|
||
|
fromNumericBase: 'dec',
|
||
|
fromDenomination: 'ETH',
|
||
|
toDenomination: 'GWEI',
|
||
4 years ago
|
}).toNumber(),
|
||
4 years ago
|
).toStrictEqual(1500000000);
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts ETH to USD', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1', {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'dec',
|
||
|
toCurrency: 'usd',
|
||
|
conversionRate: 468.58,
|
||
|
numberOfDecimals: 2,
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('468.58');
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('1.5', {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'dec',
|
||
|
toCurrency: 'usd',
|
||
|
conversionRate: 468.58,
|
||
|
numberOfDecimals: 2,
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('702.87');
|
||
4 years ago
|
});
|
||
4 years ago
|
it('converts USD to ETH', () => {
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('468.58', {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'dec',
|
||
|
toCurrency: 'usd',
|
||
|
conversionRate: 468.58,
|
||
|
numberOfDecimals: 2,
|
||
|
invertConversionRate: true,
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('1');
|
||
|
expect(
|
||
4 years ago
|
conversionUtil('702.87', {
|
||
|
fromNumericBase: 'dec',
|
||
|
toNumericBase: 'dec',
|
||
|
toCurrency: 'usd',
|
||
|
conversionRate: 468.58,
|
||
|
numberOfDecimals: 2,
|
||
|
invertConversionRate: true,
|
||
|
}),
|
||
4 years ago
|
).toStrictEqual('1.5');
|
||
4 years ago
|
});
|
||
|
});
|
||
|
});
|