@uniswap/sdk-core 7.6.0 → 7.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{addresses.d.ts → cjs/src/addresses.d.ts} +58 -58
- package/dist/cjs/src/addresses.js +433 -0
- package/dist/cjs/src/addresses.js.map +1 -0
- package/dist/cjs/src/addresses.test.d.ts +1 -0
- package/dist/cjs/src/addresses.test.js +41 -0
- package/dist/cjs/src/addresses.test.js.map +1 -0
- package/dist/{chains.d.ts → cjs/src/chains.d.ts} +44 -44
- package/dist/cjs/src/chains.js +79 -0
- package/dist/cjs/src/chains.js.map +1 -0
- package/dist/{constants.d.ts → cjs/src/constants.d.ts} +12 -12
- package/dist/cjs/src/constants.js +18 -0
- package/dist/cjs/src/constants.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/baseCurrency.d.ts +49 -49
- package/dist/cjs/src/entities/baseCurrency.js +27 -0
- package/dist/cjs/src/entities/baseCurrency.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/currency.d.ts +3 -3
- package/dist/cjs/src/entities/currency.js +3 -0
- package/dist/cjs/src/entities/currency.js.map +1 -0
- package/dist/cjs/src/entities/currency.test.d.ts +1 -0
- package/dist/cjs/src/entities/currency.test.js +27 -0
- package/dist/cjs/src/entities/currency.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/ether.d.ts +13 -13
- package/dist/cjs/src/entities/ether.js +30 -0
- package/dist/cjs/src/entities/ether.js.map +1 -0
- package/dist/cjs/src/entities/ether.test.d.ts +1 -0
- package/dist/cjs/src/entities/ether.test.js +19 -0
- package/dist/cjs/src/entities/ether.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/currencyAmount.d.ts +31 -31
- package/dist/cjs/src/entities/fractions/currencyAmount.js +72 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.js.map +1 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.test.js +99 -0
- package/dist/cjs/src/entities/fractions/currencyAmount.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/fraction.d.ts +24 -24
- package/dist/cjs/src/entities/fractions/fraction.js +104 -0
- package/dist/cjs/src/entities/fractions/fraction.js.map +1 -0
- package/dist/cjs/src/entities/fractions/fraction.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/fraction.test.js +86 -0
- package/dist/cjs/src/entities/fractions/fraction.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/index.d.ts +4 -4
- package/dist/cjs/src/entities/fractions/index.js +12 -0
- package/dist/cjs/src/entities/fractions/index.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/percent.d.ts +14 -14
- package/dist/cjs/src/entities/fractions/percent.js +43 -0
- package/dist/cjs/src/entities/fractions/percent.js.map +1 -0
- package/dist/cjs/src/entities/fractions/percent.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/percent.test.js +53 -0
- package/dist/cjs/src/entities/fractions/percent.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/fractions/price.d.ts +38 -38
- package/dist/cjs/src/entities/fractions/price.js +73 -0
- package/dist/cjs/src/entities/fractions/price.js.map +1 -0
- package/dist/cjs/src/entities/fractions/price.test.d.ts +1 -0
- package/dist/cjs/src/entities/fractions/price.test.js +58 -0
- package/dist/cjs/src/entities/fractions/price.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/index.d.ts +6 -6
- package/dist/cjs/src/entities/index.js +10 -0
- package/dist/cjs/src/entities/index.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/nativeCurrency.d.ts +8 -8
- package/dist/cjs/src/entities/nativeCurrency.js +16 -0
- package/dist/cjs/src/entities/nativeCurrency.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/token.d.ts +48 -48
- package/dist/cjs/src/entities/token.js +69 -0
- package/dist/cjs/src/entities/token.js.map +1 -0
- package/dist/cjs/src/entities/token.test.d.ts +1 -0
- package/dist/cjs/src/entities/token.test.js +74 -0
- package/dist/cjs/src/entities/token.test.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/weth9.d.ts +7 -7
- package/dist/cjs/src/entities/weth9.js +35 -0
- package/dist/cjs/src/entities/weth9.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +5 -5
- package/dist/cjs/src/index.js +9 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/computePriceImpact.d.ts +8 -8
- package/dist/cjs/src/utils/computePriceImpact.js +18 -0
- package/dist/cjs/src/utils/computePriceImpact.js.map +1 -0
- package/dist/cjs/src/utils/computePriceImpact.test.d.ts +1 -0
- package/dist/cjs/src/utils/computePriceImpact.test.js +20 -0
- package/dist/cjs/src/utils/computePriceImpact.test.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/computeZksyncCreate2Address.d.ts +2 -2
- package/dist/cjs/src/utils/computeZksyncCreate2Address.js +15 -0
- package/dist/cjs/src/utils/computeZksyncCreate2Address.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/index.d.ts +5 -5
- package/dist/cjs/src/utils/index.js +14 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/sortedInsert.d.ts +1 -1
- package/dist/cjs/src/utils/sortedInsert.js +38 -0
- package/dist/cjs/src/utils/sortedInsert.js.map +1 -0
- package/dist/cjs/src/utils/sortedInsert.test.d.ts +1 -0
- package/dist/cjs/src/utils/sortedInsert.test.js +60 -0
- package/dist/cjs/src/utils/sortedInsert.test.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/sqrt.d.ts +7 -7
- package/dist/cjs/src/utils/sqrt.js +32 -0
- package/dist/cjs/src/utils/sqrt.js.map +1 -0
- package/dist/cjs/src/utils/sqrt.test.d.ts +1 -0
- package/dist/cjs/src/utils/sqrt.test.js +26 -0
- package/dist/cjs/src/utils/sqrt.test.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/validateAndParseAddress.d.ts +10 -10
- package/dist/cjs/src/utils/validateAndParseAddress.js +31 -0
- package/dist/cjs/src/utils/validateAndParseAddress.js.map +1 -0
- package/dist/cjs/src/utils/validateAndParseAddress.test.d.ts +1 -0
- package/dist/cjs/src/utils/validateAndParseAddress.test.js +32 -0
- package/dist/cjs/src/utils/validateAndParseAddress.test.js.map +1 -0
- package/dist/esm/src/addresses.d.ts +58 -0
- package/dist/esm/src/addresses.js +429 -0
- package/dist/esm/src/addresses.js.map +1 -0
- package/dist/esm/src/addresses.test.d.ts +1 -0
- package/dist/esm/src/addresses.test.js +39 -0
- package/dist/esm/src/addresses.test.js.map +1 -0
- package/dist/esm/src/chains.d.ts +44 -0
- package/dist/esm/src/chains.js +76 -0
- package/dist/esm/src/chains.js.map +1 -0
- package/dist/esm/src/constants.d.ts +12 -0
- package/dist/esm/src/constants.js +14 -0
- package/dist/esm/src/constants.js.map +1 -0
- package/dist/esm/src/entities/baseCurrency.d.ts +49 -0
- package/dist/esm/src/entities/baseCurrency.js +22 -0
- package/dist/esm/src/entities/baseCurrency.js.map +1 -0
- package/dist/esm/src/entities/currency.d.ts +3 -0
- package/dist/esm/src/entities/currency.js +2 -0
- package/dist/esm/src/entities/currency.js.map +1 -0
- package/dist/esm/src/entities/currency.test.d.ts +1 -0
- package/dist/esm/src/entities/currency.test.js +25 -0
- package/dist/esm/src/entities/currency.test.js.map +1 -0
- package/dist/esm/src/entities/ether.d.ts +13 -0
- package/dist/esm/src/entities/ether.js +25 -0
- package/dist/esm/src/entities/ether.js.map +1 -0
- package/dist/esm/src/entities/ether.test.d.ts +1 -0
- package/dist/esm/src/entities/ether.test.js +17 -0
- package/dist/esm/src/entities/ether.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/currencyAmount.d.ts +31 -0
- package/dist/esm/src/entities/fractions/currencyAmount.js +67 -0
- package/dist/esm/src/entities/fractions/currencyAmount.js.map +1 -0
- package/dist/esm/src/entities/fractions/currencyAmount.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/currencyAmount.test.js +96 -0
- package/dist/esm/src/entities/fractions/currencyAmount.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/fraction.d.ts +24 -0
- package/dist/esm/src/entities/fractions/fraction.js +99 -0
- package/dist/esm/src/entities/fractions/fraction.js.map +1 -0
- package/dist/esm/src/entities/fractions/fraction.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/fraction.test.js +83 -0
- package/dist/esm/src/entities/fractions/fraction.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/index.d.ts +4 -0
- package/dist/esm/src/entities/fractions/index.js +5 -0
- package/dist/esm/src/entities/fractions/index.js.map +1 -0
- package/dist/esm/src/entities/fractions/percent.d.ts +14 -0
- package/dist/esm/src/entities/fractions/percent.js +38 -0
- package/dist/esm/src/entities/fractions/percent.js.map +1 -0
- package/dist/esm/src/entities/fractions/percent.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/percent.test.js +51 -0
- package/dist/esm/src/entities/fractions/percent.test.js.map +1 -0
- package/dist/esm/src/entities/fractions/price.d.ts +38 -0
- package/dist/esm/src/entities/fractions/price.js +68 -0
- package/dist/esm/src/entities/fractions/price.js.map +1 -0
- package/dist/esm/src/entities/fractions/price.test.d.ts +1 -0
- package/dist/esm/src/entities/fractions/price.test.js +56 -0
- package/dist/esm/src/entities/fractions/price.test.js.map +1 -0
- package/dist/esm/src/entities/index.d.ts +6 -0
- package/dist/esm/src/entities/index.js +7 -0
- package/dist/esm/src/entities/index.js.map +1 -0
- package/dist/esm/src/entities/nativeCurrency.d.ts +8 -0
- package/dist/esm/src/entities/nativeCurrency.js +12 -0
- package/dist/esm/src/entities/nativeCurrency.js.map +1 -0
- package/dist/esm/src/entities/token.d.ts +48 -0
- package/dist/esm/src/entities/token.js +64 -0
- package/dist/esm/src/entities/token.js.map +1 -0
- package/dist/esm/src/entities/token.test.d.ts +1 -0
- package/dist/esm/src/entities/token.test.js +72 -0
- package/dist/esm/src/entities/token.test.js.map +1 -0
- package/dist/esm/src/entities/weth9.d.ts +7 -0
- package/dist/esm/src/entities/weth9.js +32 -0
- package/dist/esm/src/entities/weth9.js.map +1 -0
- package/dist/esm/src/index.d.ts +5 -0
- package/dist/esm/src/index.js +6 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/utils/computePriceImpact.d.ts +8 -0
- package/dist/esm/src/utils/computePriceImpact.js +14 -0
- package/dist/esm/src/utils/computePriceImpact.js.map +1 -0
- package/dist/esm/src/utils/computePriceImpact.test.d.ts +1 -0
- package/dist/esm/src/utils/computePriceImpact.test.js +18 -0
- package/dist/esm/src/utils/computePriceImpact.test.js.map +1 -0
- package/dist/esm/src/utils/computeZksyncCreate2Address.d.ts +2 -0
- package/dist/esm/src/utils/computeZksyncCreate2Address.js +11 -0
- package/dist/esm/src/utils/computeZksyncCreate2Address.js.map +1 -0
- package/dist/esm/src/utils/index.d.ts +5 -0
- package/dist/esm/src/utils/index.js +6 -0
- package/dist/esm/src/utils/index.js.map +1 -0
- package/dist/esm/src/utils/sortedInsert.d.ts +1 -0
- package/dist/esm/src/utils/sortedInsert.js +33 -0
- package/dist/esm/src/utils/sortedInsert.js.map +1 -0
- package/dist/esm/src/utils/sortedInsert.test.d.ts +1 -0
- package/dist/esm/src/utils/sortedInsert.test.js +58 -0
- package/dist/esm/src/utils/sortedInsert.test.js.map +1 -0
- package/dist/esm/src/utils/sqrt.d.ts +7 -0
- package/dist/esm/src/utils/sqrt.js +27 -0
- package/dist/esm/src/utils/sqrt.js.map +1 -0
- package/dist/esm/src/utils/sqrt.test.d.ts +1 -0
- package/dist/esm/src/utils/sqrt.test.js +23 -0
- package/dist/esm/src/utils/sqrt.test.js.map +1 -0
- package/dist/esm/src/utils/validateAndParseAddress.d.ts +10 -0
- package/dist/esm/src/utils/validateAndParseAddress.js +26 -0
- package/dist/esm/src/utils/validateAndParseAddress.js.map +1 -0
- package/dist/esm/src/utils/validateAndParseAddress.test.d.ts +1 -0
- package/dist/esm/src/utils/validateAndParseAddress.test.js +30 -0
- package/dist/esm/src/utils/validateAndParseAddress.test.js.map +1 -0
- package/dist/types/src/addresses.d.ts +58 -0
- package/dist/types/src/addresses.test.d.ts +1 -0
- package/dist/types/src/chains.d.ts +44 -0
- package/dist/types/src/constants.d.ts +12 -0
- package/dist/types/src/entities/baseCurrency.d.ts +49 -0
- package/dist/types/src/entities/currency.d.ts +3 -0
- package/dist/types/src/entities/currency.test.d.ts +1 -0
- package/dist/types/src/entities/ether.d.ts +13 -0
- package/dist/types/src/entities/ether.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/currencyAmount.d.ts +31 -0
- package/dist/types/src/entities/fractions/currencyAmount.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/fraction.d.ts +24 -0
- package/dist/types/src/entities/fractions/fraction.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/index.d.ts +4 -0
- package/dist/types/src/entities/fractions/percent.d.ts +14 -0
- package/dist/types/src/entities/fractions/percent.test.d.ts +1 -0
- package/dist/types/src/entities/fractions/price.d.ts +38 -0
- package/dist/types/src/entities/fractions/price.test.d.ts +1 -0
- package/dist/types/src/entities/index.d.ts +6 -0
- package/dist/types/src/entities/nativeCurrency.d.ts +8 -0
- package/dist/types/src/entities/token.d.ts +48 -0
- package/dist/types/src/entities/token.test.d.ts +1 -0
- package/dist/types/src/entities/weth9.d.ts +7 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/utils/computePriceImpact.d.ts +8 -0
- package/dist/types/src/utils/computePriceImpact.test.d.ts +1 -0
- package/dist/types/src/utils/computeZksyncCreate2Address.d.ts +2 -0
- package/dist/types/src/utils/index.d.ts +5 -0
- package/dist/types/src/utils/sortedInsert.d.ts +1 -0
- package/dist/types/src/utils/sortedInsert.test.d.ts +1 -0
- package/dist/types/src/utils/sqrt.d.ts +7 -0
- package/dist/types/src/utils/sqrt.test.d.ts +1 -0
- package/dist/types/src/utils/validateAndParseAddress.d.ts +10 -0
- package/dist/types/src/utils/validateAndParseAddress.test.d.ts +1 -0
- package/package.json +28 -10
- package/dist/index.js +0 -8
- package/dist/sdk-core.cjs.development.js +0 -1138
- package/dist/sdk-core.cjs.development.js.map +0 -1
- package/dist/sdk-core.cjs.production.min.js +0 -2
- package/dist/sdk-core.cjs.production.min.js.map +0 -1
- package/dist/sdk-core.esm.js +0 -1099
- package/dist/sdk-core.esm.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currencyAmount.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/currencyAmount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
6
|
+
const ether_1 = require("../ether");
|
|
7
|
+
const token_1 = require("../token");
|
|
8
|
+
const currencyAmount_1 = require("./currencyAmount");
|
|
9
|
+
const percent_1 = require("./percent");
|
|
10
|
+
describe('CurrencyAmount', () => {
|
|
11
|
+
const ADDRESS_ONE = '0x0000000000000000000000000000000000000001';
|
|
12
|
+
describe('constructor', () => {
|
|
13
|
+
it('works', () => {
|
|
14
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 18);
|
|
15
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 100);
|
|
16
|
+
expect(amount.quotient).toEqual(jsbi_1.default.BigInt(100));
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('#quotient', () => {
|
|
20
|
+
it('returns the amount after multiplication', () => {
|
|
21
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 18);
|
|
22
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 100).multiply(new percent_1.Percent(15, 100));
|
|
23
|
+
expect(amount.quotient).toEqual(jsbi_1.default.BigInt(15));
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('#ether', () => {
|
|
27
|
+
it('produces ether amount', () => {
|
|
28
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(ether_1.Ether.onChain(1), 100);
|
|
29
|
+
expect(amount.quotient).toEqual(jsbi_1.default.BigInt(100));
|
|
30
|
+
expect(amount.currency).toEqual(ether_1.Ether.onChain(1));
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it('token amount can be max uint256', () => {
|
|
34
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(new token_1.Token(1, ADDRESS_ONE, 18), constants_1.MaxUint256);
|
|
35
|
+
expect(amount.quotient).toEqual(constants_1.MaxUint256);
|
|
36
|
+
});
|
|
37
|
+
it('token amount cannot exceed max uint256', () => {
|
|
38
|
+
expect(() => currencyAmount_1.CurrencyAmount.fromRawAmount(new token_1.Token(1, ADDRESS_ONE, 18), jsbi_1.default.add(constants_1.MaxUint256, jsbi_1.default.BigInt(1)))).toThrow('AMOUNT');
|
|
39
|
+
});
|
|
40
|
+
it('token amount quotient cannot exceed max uint256', () => {
|
|
41
|
+
expect(() => currencyAmount_1.CurrencyAmount.fromFractionalAmount(new token_1.Token(1, ADDRESS_ONE, 18), jsbi_1.default.add(jsbi_1.default.multiply(constants_1.MaxUint256, jsbi_1.default.BigInt(2)), jsbi_1.default.BigInt(2)), jsbi_1.default.BigInt(2))).toThrow('AMOUNT');
|
|
42
|
+
});
|
|
43
|
+
it('token amount numerator can be gt. uint256 if denominator is gt. 1', () => {
|
|
44
|
+
const amount = currencyAmount_1.CurrencyAmount.fromFractionalAmount(new token_1.Token(1, ADDRESS_ONE, 18), jsbi_1.default.add(constants_1.MaxUint256, jsbi_1.default.BigInt(2)), 2);
|
|
45
|
+
expect(amount.numerator).toEqual(jsbi_1.default.add(jsbi_1.default.BigInt(2), constants_1.MaxUint256));
|
|
46
|
+
});
|
|
47
|
+
describe('#toFixed', () => {
|
|
48
|
+
it('throws for decimals > currency.decimals', () => {
|
|
49
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 0);
|
|
50
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1000);
|
|
51
|
+
expect(() => amount.toFixed(3)).toThrow('DECIMALS');
|
|
52
|
+
});
|
|
53
|
+
it('is correct for 0 decimals', () => {
|
|
54
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 0);
|
|
55
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123456);
|
|
56
|
+
expect(amount.toFixed(0)).toEqual('123456');
|
|
57
|
+
});
|
|
58
|
+
it('is correct for 18 decimals', () => {
|
|
59
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 18);
|
|
60
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1e15);
|
|
61
|
+
expect(amount.toFixed(9)).toEqual('0.001000000');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('#toSignificant', () => {
|
|
65
|
+
it('does not throw for sig figs > currency.decimals', () => {
|
|
66
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 0);
|
|
67
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1000);
|
|
68
|
+
expect(amount.toSignificant(3)).toEqual('1000');
|
|
69
|
+
});
|
|
70
|
+
it('is correct for 0 decimals', () => {
|
|
71
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 0);
|
|
72
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123456);
|
|
73
|
+
expect(amount.toSignificant(4)).toEqual('123400');
|
|
74
|
+
});
|
|
75
|
+
it('is correct for 18 decimals', () => {
|
|
76
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 18);
|
|
77
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1e15);
|
|
78
|
+
expect(amount.toSignificant(9)).toEqual('0.001');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('#toExact', () => {
|
|
82
|
+
it('does not throw for sig figs > currency.decimals', () => {
|
|
83
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 0);
|
|
84
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 1000);
|
|
85
|
+
expect(amount.toExact()).toEqual('1000');
|
|
86
|
+
});
|
|
87
|
+
it('is correct for 0 decimals', () => {
|
|
88
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 0);
|
|
89
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123456);
|
|
90
|
+
expect(amount.toExact()).toEqual('123456');
|
|
91
|
+
});
|
|
92
|
+
it('is correct for 18 decimals', () => {
|
|
93
|
+
const token = new token_1.Token(1, ADDRESS_ONE, 18);
|
|
94
|
+
const amount = currencyAmount_1.CurrencyAmount.fromRawAmount(token, 123e13);
|
|
95
|
+
expect(amount.toExact()).toEqual('0.00123');
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=currencyAmount.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currencyAmount.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/currencyAmount.test.ts"],"names":[],"mappings":";;;AAAA,wDAAuB;AACvB,+CAA4C;AAC5C,oCAAgC;AAChC,oCAAgC;AAChC,qDAAiD;AACjD,uCAAmC;AAEnC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,WAAW,GAAG,4CAA4C,CAAA;IAEhE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACf,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,iBAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;YACtF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,aAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAClE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACjD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,aAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,sBAAU,CAAC,CAAA;QACtF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,sBAAU,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,GAAG,EAAE,CACV,+BAAc,CAAC,aAAa,CAAC,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,cAAI,CAAC,GAAG,CAAC,sBAAU,EAAE,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAClG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,GAAG,EAAE,CACV,+BAAc,CAAC,oBAAoB,CACjC,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAC7B,cAAI,CAAC,GAAG,CAAC,cAAI,CAAC,QAAQ,CAAC,sBAAU,EAAE,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACnE,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACf,CACF,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,MAAM,GAAG,+BAAc,CAAC,oBAAoB,CAChD,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAC7B,cAAI,CAAC,GAAG,CAAC,sBAAU,EAAE,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACpC,CAAC,CACF,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,cAAI,CAAC,GAAG,CAAC,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,sBAAU,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACxD,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC1D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,+BAAc,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import JSBI from 'jsbi';
|
|
2
|
-
import { BigintIsh, Rounding } from '../../constants';
|
|
3
|
-
export declare class Fraction {
|
|
4
|
-
readonly numerator: JSBI;
|
|
5
|
-
readonly denominator: JSBI;
|
|
6
|
-
constructor(numerator: BigintIsh, denominator?: BigintIsh);
|
|
7
|
-
private static tryParseFraction;
|
|
8
|
-
get quotient(): JSBI;
|
|
9
|
-
get remainder(): Fraction;
|
|
10
|
-
invert(): Fraction;
|
|
11
|
-
add(other: Fraction | BigintIsh): Fraction;
|
|
12
|
-
subtract(other: Fraction | BigintIsh): Fraction;
|
|
13
|
-
lessThan(other: Fraction | BigintIsh): boolean;
|
|
14
|
-
equalTo(other: Fraction | BigintIsh): boolean;
|
|
15
|
-
greaterThan(other: Fraction | BigintIsh): boolean;
|
|
16
|
-
multiply(other: Fraction | BigintIsh): Fraction;
|
|
17
|
-
divide(other: Fraction | BigintIsh): Fraction;
|
|
18
|
-
toSignificant(significantDigits: number, format?: object, rounding?: Rounding): string;
|
|
19
|
-
toFixed(decimalPlaces: number, format?: object, rounding?: Rounding): string;
|
|
20
|
-
/**
|
|
21
|
-
* Helper method for converting any super class back to a fraction
|
|
22
|
-
*/
|
|
23
|
-
get asFraction(): Fraction;
|
|
24
|
-
}
|
|
1
|
+
import JSBI from 'jsbi';
|
|
2
|
+
import { BigintIsh, Rounding } from '../../constants';
|
|
3
|
+
export declare class Fraction {
|
|
4
|
+
readonly numerator: JSBI;
|
|
5
|
+
readonly denominator: JSBI;
|
|
6
|
+
constructor(numerator: BigintIsh, denominator?: BigintIsh);
|
|
7
|
+
private static tryParseFraction;
|
|
8
|
+
get quotient(): JSBI;
|
|
9
|
+
get remainder(): Fraction;
|
|
10
|
+
invert(): Fraction;
|
|
11
|
+
add(other: Fraction | BigintIsh): Fraction;
|
|
12
|
+
subtract(other: Fraction | BigintIsh): Fraction;
|
|
13
|
+
lessThan(other: Fraction | BigintIsh): boolean;
|
|
14
|
+
equalTo(other: Fraction | BigintIsh): boolean;
|
|
15
|
+
greaterThan(other: Fraction | BigintIsh): boolean;
|
|
16
|
+
multiply(other: Fraction | BigintIsh): Fraction;
|
|
17
|
+
divide(other: Fraction | BigintIsh): Fraction;
|
|
18
|
+
toSignificant(significantDigits: number, format?: object, rounding?: Rounding): string;
|
|
19
|
+
toFixed(decimalPlaces: number, format?: object, rounding?: Rounding): string;
|
|
20
|
+
/**
|
|
21
|
+
* Helper method for converting any super class back to a fraction
|
|
22
|
+
*/
|
|
23
|
+
get asFraction(): Fraction;
|
|
24
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Fraction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
|
|
6
|
+
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
|
|
7
|
+
const decimal_js_light_1 = tslib_1.__importDefault(require("decimal.js-light"));
|
|
8
|
+
const big_js_1 = tslib_1.__importDefault(require("big.js"));
|
|
9
|
+
const toformat_1 = tslib_1.__importDefault(require("toformat"));
|
|
10
|
+
const constants_1 = require("../../constants");
|
|
11
|
+
const Decimal = (0, toformat_1.default)(decimal_js_light_1.default);
|
|
12
|
+
const Big = (0, toformat_1.default)(big_js_1.default);
|
|
13
|
+
const toSignificantRounding = {
|
|
14
|
+
[constants_1.Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,
|
|
15
|
+
[constants_1.Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,
|
|
16
|
+
[constants_1.Rounding.ROUND_UP]: Decimal.ROUND_UP,
|
|
17
|
+
};
|
|
18
|
+
const toFixedRounding = {
|
|
19
|
+
[constants_1.Rounding.ROUND_DOWN]: 0 /* RoundingMode.RoundDown */,
|
|
20
|
+
[constants_1.Rounding.ROUND_HALF_UP]: 1 /* RoundingMode.RoundHalfUp */,
|
|
21
|
+
[constants_1.Rounding.ROUND_UP]: 3 /* RoundingMode.RoundUp */,
|
|
22
|
+
};
|
|
23
|
+
class Fraction {
|
|
24
|
+
constructor(numerator, denominator = jsbi_1.default.BigInt(1)) {
|
|
25
|
+
this.numerator = jsbi_1.default.BigInt(numerator);
|
|
26
|
+
this.denominator = jsbi_1.default.BigInt(denominator);
|
|
27
|
+
}
|
|
28
|
+
static tryParseFraction(fractionish) {
|
|
29
|
+
if (fractionish instanceof jsbi_1.default || typeof fractionish === 'number' || typeof fractionish === 'string')
|
|
30
|
+
return new Fraction(fractionish);
|
|
31
|
+
if ('numerator' in fractionish && 'denominator' in fractionish)
|
|
32
|
+
return fractionish;
|
|
33
|
+
throw new Error('Could not parse fraction');
|
|
34
|
+
}
|
|
35
|
+
// performs floor division
|
|
36
|
+
get quotient() {
|
|
37
|
+
return jsbi_1.default.divide(this.numerator, this.denominator);
|
|
38
|
+
}
|
|
39
|
+
// remainder after floor division
|
|
40
|
+
get remainder() {
|
|
41
|
+
return new Fraction(jsbi_1.default.remainder(this.numerator, this.denominator), this.denominator);
|
|
42
|
+
}
|
|
43
|
+
invert() {
|
|
44
|
+
return new Fraction(this.denominator, this.numerator);
|
|
45
|
+
}
|
|
46
|
+
add(other) {
|
|
47
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
48
|
+
if (jsbi_1.default.equal(this.denominator, otherParsed.denominator)) {
|
|
49
|
+
return new Fraction(jsbi_1.default.add(this.numerator, otherParsed.numerator), this.denominator);
|
|
50
|
+
}
|
|
51
|
+
return new Fraction(jsbi_1.default.add(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator)), jsbi_1.default.multiply(this.denominator, otherParsed.denominator));
|
|
52
|
+
}
|
|
53
|
+
subtract(other) {
|
|
54
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
55
|
+
if (jsbi_1.default.equal(this.denominator, otherParsed.denominator)) {
|
|
56
|
+
return new Fraction(jsbi_1.default.subtract(this.numerator, otherParsed.numerator), this.denominator);
|
|
57
|
+
}
|
|
58
|
+
return new Fraction(jsbi_1.default.subtract(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator)), jsbi_1.default.multiply(this.denominator, otherParsed.denominator));
|
|
59
|
+
}
|
|
60
|
+
lessThan(other) {
|
|
61
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
62
|
+
return jsbi_1.default.lessThan(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator));
|
|
63
|
+
}
|
|
64
|
+
equalTo(other) {
|
|
65
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
66
|
+
return jsbi_1.default.equal(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator));
|
|
67
|
+
}
|
|
68
|
+
greaterThan(other) {
|
|
69
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
70
|
+
return jsbi_1.default.greaterThan(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(otherParsed.numerator, this.denominator));
|
|
71
|
+
}
|
|
72
|
+
multiply(other) {
|
|
73
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
74
|
+
return new Fraction(jsbi_1.default.multiply(this.numerator, otherParsed.numerator), jsbi_1.default.multiply(this.denominator, otherParsed.denominator));
|
|
75
|
+
}
|
|
76
|
+
divide(other) {
|
|
77
|
+
const otherParsed = Fraction.tryParseFraction(other);
|
|
78
|
+
return new Fraction(jsbi_1.default.multiply(this.numerator, otherParsed.denominator), jsbi_1.default.multiply(this.denominator, otherParsed.numerator));
|
|
79
|
+
}
|
|
80
|
+
toSignificant(significantDigits, format = { groupSeparator: '' }, rounding = constants_1.Rounding.ROUND_HALF_UP) {
|
|
81
|
+
(0, tiny_invariant_1.default)(Number.isInteger(significantDigits), `${significantDigits} is not an integer.`);
|
|
82
|
+
(0, tiny_invariant_1.default)(significantDigits > 0, `${significantDigits} is not positive.`);
|
|
83
|
+
Decimal.set({ precision: significantDigits + 1, rounding: toSignificantRounding[rounding] });
|
|
84
|
+
const quotient = new Decimal(this.numerator.toString())
|
|
85
|
+
.div(this.denominator.toString())
|
|
86
|
+
.toSignificantDigits(significantDigits);
|
|
87
|
+
return quotient.toFormat(quotient.decimalPlaces(), format);
|
|
88
|
+
}
|
|
89
|
+
toFixed(decimalPlaces, format = { groupSeparator: '' }, rounding = constants_1.Rounding.ROUND_HALF_UP) {
|
|
90
|
+
(0, tiny_invariant_1.default)(Number.isInteger(decimalPlaces), `${decimalPlaces} is not an integer.`);
|
|
91
|
+
(0, tiny_invariant_1.default)(decimalPlaces >= 0, `${decimalPlaces} is negative.`);
|
|
92
|
+
Big.DP = decimalPlaces;
|
|
93
|
+
Big.RM = toFixedRounding[rounding];
|
|
94
|
+
return new Big(this.numerator.toString()).div(this.denominator.toString()).toFormat(decimalPlaces, format);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Helper method for converting any super class back to a fraction
|
|
98
|
+
*/
|
|
99
|
+
get asFraction() {
|
|
100
|
+
return new Fraction(this.numerator, this.denominator);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.Fraction = Fraction;
|
|
104
|
+
//# sourceMappingURL=fraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/fraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
|
|
5
|
+
const fraction_1 = require("./fraction");
|
|
6
|
+
describe('Fraction', () => {
|
|
7
|
+
describe('#quotient', () => {
|
|
8
|
+
it('floor division', () => {
|
|
9
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(8), jsbi_1.default.BigInt(3)).quotient).toEqual(jsbi_1.default.BigInt(2)); // one below
|
|
10
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(4)).quotient).toEqual(jsbi_1.default.BigInt(3)); // exact
|
|
11
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(16), jsbi_1.default.BigInt(5)).quotient).toEqual(jsbi_1.default.BigInt(3)); // one above
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe('#remainder', () => {
|
|
15
|
+
it('returns fraction after divison', () => {
|
|
16
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(8), jsbi_1.default.BigInt(3)).remainder).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(2), jsbi_1.default.BigInt(3)));
|
|
17
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(4)).remainder).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(0), jsbi_1.default.BigInt(4)));
|
|
18
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(16), jsbi_1.default.BigInt(5)).remainder).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(5)));
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('#invert', () => {
|
|
22
|
+
it('flips num and denom', () => {
|
|
23
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(10)).invert().numerator).toEqual(jsbi_1.default.BigInt(10));
|
|
24
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(10)).invert().denominator).toEqual(jsbi_1.default.BigInt(5));
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('#add', () => {
|
|
28
|
+
it('multiples denoms and adds nums', () => {
|
|
29
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).add(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(52), jsbi_1.default.BigInt(120)));
|
|
30
|
+
});
|
|
31
|
+
it('same denom', () => {
|
|
32
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(5)).add(new fraction_1.Fraction(jsbi_1.default.BigInt(2), jsbi_1.default.BigInt(5)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(3), jsbi_1.default.BigInt(5)));
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('#subtract', () => {
|
|
36
|
+
it('multiples denoms and subtracts nums', () => {
|
|
37
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).subtract(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(-28), jsbi_1.default.BigInt(120)));
|
|
38
|
+
});
|
|
39
|
+
it('same denom', () => {
|
|
40
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(3), jsbi_1.default.BigInt(5)).subtract(new fraction_1.Fraction(jsbi_1.default.BigInt(2), jsbi_1.default.BigInt(5)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(5)));
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('#lessThan', () => {
|
|
44
|
+
it('correct', () => {
|
|
45
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).lessThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(true);
|
|
46
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).lessThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
|
|
47
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).lessThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('#equalTo', () => {
|
|
51
|
+
it('correct', () => {
|
|
52
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).equalTo(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
|
|
53
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).equalTo(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(true);
|
|
54
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).equalTo(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('#greaterThan', () => {
|
|
58
|
+
it('correct', () => {
|
|
59
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).greaterThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
|
|
60
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).greaterThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(false);
|
|
61
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).greaterThan(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('#multiplty', () => {
|
|
65
|
+
it('correct', () => {
|
|
66
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).multiply(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(120)));
|
|
67
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).multiply(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(36)));
|
|
68
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).multiply(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(20), jsbi_1.default.BigInt(144)));
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('#divide', () => {
|
|
72
|
+
it('correct', () => {
|
|
73
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(10)).divide(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(40)));
|
|
74
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(1), jsbi_1.default.BigInt(3)).divide(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(12), jsbi_1.default.BigInt(12)));
|
|
75
|
+
expect(new fraction_1.Fraction(jsbi_1.default.BigInt(5), jsbi_1.default.BigInt(12)).divide(new fraction_1.Fraction(jsbi_1.default.BigInt(4), jsbi_1.default.BigInt(12)))).toEqual(new fraction_1.Fraction(jsbi_1.default.BigInt(60), jsbi_1.default.BigInt(48)));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe('#asFraction', () => {
|
|
79
|
+
it('returns an equivalent but not the same reference fraction', () => {
|
|
80
|
+
const f = new fraction_1.Fraction(1, 2);
|
|
81
|
+
expect(f.asFraction).toEqual(f);
|
|
82
|
+
expect(f === f.asFraction).toEqual(false);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=fraction.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fraction.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/fraction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CurrencyAmount } from './currencyAmount';
|
|
2
|
-
export { Fraction } from './fraction';
|
|
3
|
-
export { Percent } from './percent';
|
|
4
|
-
export { Price } from './price';
|
|
1
|
+
export { CurrencyAmount } from './currencyAmount';
|
|
2
|
+
export { Fraction } from './fraction';
|
|
3
|
+
export { Percent } from './percent';
|
|
4
|
+
export { Price } from './price';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Price = exports.Percent = exports.Fraction = exports.CurrencyAmount = void 0;
|
|
4
|
+
var currencyAmount_1 = require("./currencyAmount");
|
|
5
|
+
Object.defineProperty(exports, "CurrencyAmount", { enumerable: true, get: function () { return currencyAmount_1.CurrencyAmount; } });
|
|
6
|
+
var fraction_1 = require("./fraction");
|
|
7
|
+
Object.defineProperty(exports, "Fraction", { enumerable: true, get: function () { return fraction_1.Fraction; } });
|
|
8
|
+
var percent_1 = require("./percent");
|
|
9
|
+
Object.defineProperty(exports, "Percent", { enumerable: true, get: function () { return percent_1.Percent; } });
|
|
10
|
+
var price_1 = require("./price");
|
|
11
|
+
Object.defineProperty(exports, "Price", { enumerable: true, get: function () { return price_1.Price; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,iCAA+B;AAAtB,8FAAA,KAAK,OAAA"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { BigintIsh, Rounding } from '../../constants';
|
|
2
|
-
import { Fraction } from './fraction';
|
|
3
|
-
export declare class Percent extends Fraction {
|
|
4
|
-
/**
|
|
5
|
-
* This boolean prevents a fraction from being interpreted as a Percent
|
|
6
|
-
*/
|
|
7
|
-
readonly isPercent: true;
|
|
8
|
-
add(other: Fraction | BigintIsh): Percent;
|
|
9
|
-
subtract(other: Fraction | BigintIsh): Percent;
|
|
10
|
-
multiply(other: Fraction | BigintIsh): Percent;
|
|
11
|
-
divide(other: Fraction | BigintIsh): Percent;
|
|
12
|
-
toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string;
|
|
13
|
-
toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string;
|
|
14
|
-
}
|
|
1
|
+
import { BigintIsh, Rounding } from '../../constants';
|
|
2
|
+
import { Fraction } from './fraction';
|
|
3
|
+
export declare class Percent extends Fraction {
|
|
4
|
+
/**
|
|
5
|
+
* This boolean prevents a fraction from being interpreted as a Percent
|
|
6
|
+
*/
|
|
7
|
+
readonly isPercent: true;
|
|
8
|
+
add(other: Fraction | BigintIsh): Percent;
|
|
9
|
+
subtract(other: Fraction | BigintIsh): Percent;
|
|
10
|
+
multiply(other: Fraction | BigintIsh): Percent;
|
|
11
|
+
divide(other: Fraction | BigintIsh): Percent;
|
|
12
|
+
toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string;
|
|
13
|
+
toFixed(decimalPlaces?: number, format?: object, rounding?: Rounding): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Percent = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
|
|
6
|
+
const fraction_1 = require("./fraction");
|
|
7
|
+
const ONE_HUNDRED = new fraction_1.Fraction(jsbi_1.default.BigInt(100));
|
|
8
|
+
/**
|
|
9
|
+
* Converts a fraction to a percent
|
|
10
|
+
* @param fraction the fraction to convert
|
|
11
|
+
*/
|
|
12
|
+
function toPercent(fraction) {
|
|
13
|
+
return new Percent(fraction.numerator, fraction.denominator);
|
|
14
|
+
}
|
|
15
|
+
class Percent extends fraction_1.Fraction {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
/**
|
|
19
|
+
* This boolean prevents a fraction from being interpreted as a Percent
|
|
20
|
+
*/
|
|
21
|
+
this.isPercent = true;
|
|
22
|
+
}
|
|
23
|
+
add(other) {
|
|
24
|
+
return toPercent(super.add(other));
|
|
25
|
+
}
|
|
26
|
+
subtract(other) {
|
|
27
|
+
return toPercent(super.subtract(other));
|
|
28
|
+
}
|
|
29
|
+
multiply(other) {
|
|
30
|
+
return toPercent(super.multiply(other));
|
|
31
|
+
}
|
|
32
|
+
divide(other) {
|
|
33
|
+
return toPercent(super.divide(other));
|
|
34
|
+
}
|
|
35
|
+
toSignificant(significantDigits = 5, format, rounding) {
|
|
36
|
+
return super.multiply(ONE_HUNDRED).toSignificant(significantDigits, format, rounding);
|
|
37
|
+
}
|
|
38
|
+
toFixed(decimalPlaces = 2, format, rounding) {
|
|
39
|
+
return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.Percent = Percent;
|
|
43
|
+
//# sourceMappingURL=percent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"percent.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/percent.ts"],"names":[],"mappings":";;;;AAAA,wDAAuB;AAEvB,yCAAqC;AAErC,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,cAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;AAElD;;;GAGG;AACH,SAAS,SAAS,CAAC,QAAkB;IACnC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9D,CAAC;AAED,MAAa,OAAQ,SAAQ,mBAAQ;IAArC;;QACE;;WAEG;QACa,cAAS,GAAS,IAAI,CAAA;IAyBxC,CAAC;IAvBC,GAAG,CAAC,KAA2B;QAC7B,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,KAA2B;QAChC,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,aAAa,CAAC,oBAA4B,CAAC,EAAE,MAAe,EAAE,QAAmB;QACtF,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACvF,CAAC;IAEM,OAAO,CAAC,gBAAwB,CAAC,EAAE,MAAe,EAAE,QAAmB;QAC5E,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC7E,CAAC;CACF;AA7BD,0BA6BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const percent_1 = require("./percent");
|
|
4
|
+
describe('Percent', () => {
|
|
5
|
+
describe('constructor', () => {
|
|
6
|
+
it('defaults to 1 denominator', () => {
|
|
7
|
+
expect(new percent_1.Percent(1)).toEqual(new percent_1.Percent(1, 1));
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe('#add', () => {
|
|
11
|
+
it('returns a percent', () => {
|
|
12
|
+
expect(new percent_1.Percent(1, 100).add(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(3, 100));
|
|
13
|
+
});
|
|
14
|
+
it('different denominators', () => {
|
|
15
|
+
expect(new percent_1.Percent(1, 25).add(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(150, 2500));
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('#subtract', () => {
|
|
19
|
+
it('returns a percent', () => {
|
|
20
|
+
expect(new percent_1.Percent(1, 100).subtract(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(-1, 100));
|
|
21
|
+
});
|
|
22
|
+
it('different denominators', () => {
|
|
23
|
+
expect(new percent_1.Percent(1, 25).subtract(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(50, 2500));
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('#multiply', () => {
|
|
27
|
+
it('returns a percent', () => {
|
|
28
|
+
expect(new percent_1.Percent(1, 100).multiply(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(2, 10000));
|
|
29
|
+
});
|
|
30
|
+
it('different denominators', () => {
|
|
31
|
+
expect(new percent_1.Percent(1, 25).multiply(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(2, 2500));
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('#divide', () => {
|
|
35
|
+
it('returns a percent', () => {
|
|
36
|
+
expect(new percent_1.Percent(1, 100).divide(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(100, 200));
|
|
37
|
+
});
|
|
38
|
+
it('different denominators', () => {
|
|
39
|
+
expect(new percent_1.Percent(1, 25).divide(new percent_1.Percent(2, 100))).toEqual(new percent_1.Percent(100, 50));
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('#toSignificant', () => {
|
|
43
|
+
it('returns the value scaled by 100', () => {
|
|
44
|
+
expect(new percent_1.Percent(154, 10000).toSignificant(3)).toEqual('1.54');
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('#toFixed', () => {
|
|
48
|
+
it('returns the value scaled by 100', () => {
|
|
49
|
+
expect(new percent_1.Percent(154, 10000).toFixed(2)).toEqual('1.54');
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=percent.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"percent.test.js","sourceRoot":"","sources":["../../../../../src/entities/fractions/percent.test.ts"],"names":[],"mappings":"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"}
|