@swapkit/helpers 1.0.0-rc.2 → 1.0.0-rc.21
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/index.cjs +1 -1
- package/dist/index.d.ts +69 -47
- package/dist/index.es.js +822 -422
- package/package.json +9 -6
- package/src/helpers/asset.ts +24 -14
- package/src/helpers/liquidity.ts +12 -10
- package/src/helpers/others.ts +0 -39
- package/src/helpers/request.ts +15 -0
- package/src/index.ts +5 -4
- package/src/modules/__tests__/assetValue.test.ts +44 -9
- package/src/modules/__tests__/swapKitNumber.test.ts +204 -78
- package/src/modules/assetValue.ts +87 -80
- package/src/modules/bigIntArithmetics.ts +226 -101
- package/src/modules/swapKitNumber.ts +6 -3
- package/src/helpers/number.ts +0 -40
|
@@ -6,62 +6,65 @@ describe('SwapKitNumber', () => {
|
|
|
6
6
|
describe('constructors', () => {
|
|
7
7
|
test('creates numbers correctly', () => {
|
|
8
8
|
const skNumber1 = new SwapKitNumber(1);
|
|
9
|
-
expect(skNumber1.
|
|
10
|
-
expect(skNumber1.
|
|
9
|
+
expect(skNumber1.getValue('string')).toBe('1');
|
|
10
|
+
expect(skNumber1.getValue('number')).toBe(1);
|
|
11
|
+
expect(skNumber1.getBaseValue('bigint')).toBe(100000000n);
|
|
11
12
|
|
|
12
13
|
const skNumber2 = new SwapKitNumber('1');
|
|
13
|
-
expect(skNumber2.
|
|
14
|
-
expect(skNumber2.
|
|
14
|
+
expect(skNumber2.getValue('string')).toBe('1');
|
|
15
|
+
expect(skNumber2.getBaseValue('bigint')).toBe(100000000n);
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* because by default we have 8 decimals - it will be rounded to 0 on base value
|
|
19
|
+
*/
|
|
16
20
|
const skNumber3 = new SwapKitNumber('0.0000000001');
|
|
17
|
-
expect(skNumber3.
|
|
18
|
-
expect(skNumber3.
|
|
19
|
-
|
|
20
|
-
const skNumber4 = new SwapKitNumber(0.
|
|
21
|
-
expect(skNumber4.
|
|
22
|
-
expect(skNumber4.
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
expect(
|
|
26
|
-
expect(
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
expect(
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
32
|
-
expect(
|
|
33
|
-
expect(
|
|
34
|
-
expect(skNumber7.toString()).toBe('-0.101');
|
|
21
|
+
expect(skNumber3.getValue('string')).toBe('0.0000000001');
|
|
22
|
+
expect(skNumber3.getBaseValue('bigint')).toBe(0n);
|
|
23
|
+
|
|
24
|
+
const skNumber4 = new SwapKitNumber({ value: '0.0000000001', decimal: 10 });
|
|
25
|
+
expect(skNumber4.getValue('string')).toBe('0.0000000001');
|
|
26
|
+
expect(skNumber4.getBaseValue('bigint')).toBe(1n);
|
|
27
|
+
|
|
28
|
+
const skNumber5 = new SwapKitNumber({ value: 0.1005, decimal: 3 });
|
|
29
|
+
expect(skNumber5.getValue('string')).toBe('0.101');
|
|
30
|
+
expect(skNumber5.getBaseValue('bigint')).toBe(100n);
|
|
31
|
+
|
|
32
|
+
const skNumber6 = new SwapKitNumber({ value: -0.1005, decimal: 3 });
|
|
33
|
+
expect(skNumber6.getValue('string')).toBe('-0.101');
|
|
34
|
+
expect(skNumber6.getBaseValue('bigint')).toBe(-100n);
|
|
35
|
+
expect(skNumber6.decimal).toBe(3);
|
|
36
|
+
expect(skNumber6.getValue('number')).toBe(-0.101);
|
|
37
|
+
expect(skNumber6.decimalMultiplier).toBe(100000000n);
|
|
35
38
|
});
|
|
36
39
|
|
|
37
40
|
test('creates SwapKitInstance from BigInt: (12.345678901234, decimals: 12)', () => {
|
|
38
41
|
const skNumber = SwapKitNumber.fromBigInt(12345678901234n, 12);
|
|
39
42
|
|
|
40
|
-
expect(skNumber.
|
|
41
|
-
expect(skNumber.
|
|
43
|
+
expect(skNumber.getValue('string')).toBe('12.345678901234');
|
|
44
|
+
expect(skNumber.getBaseValue('bigint')).toBe(12345678901234n);
|
|
42
45
|
});
|
|
43
46
|
});
|
|
44
47
|
|
|
45
48
|
describe('shiftDecimals', () => {
|
|
46
49
|
test('shifts up and bumps number', () => {
|
|
47
50
|
const skNumber = new SwapKitNumber(1);
|
|
48
|
-
expect(skNumber.
|
|
49
|
-
expect(skNumber.
|
|
51
|
+
expect(skNumber.getValue('string')).toBe('1');
|
|
52
|
+
expect(skNumber.getBaseValue('bigint')).toBe(100000000n);
|
|
50
53
|
|
|
51
54
|
const shiftedSkNumber = SwapKitNumber.shiftDecimals({
|
|
52
55
|
value: skNumber,
|
|
53
|
-
from:
|
|
54
|
-
to:
|
|
56
|
+
from: 8,
|
|
57
|
+
to: 6,
|
|
55
58
|
});
|
|
56
59
|
|
|
57
|
-
expect(shiftedSkNumber.
|
|
58
|
-
expect(shiftedSkNumber.
|
|
60
|
+
expect(shiftedSkNumber.getValue('string')).toBe('1');
|
|
61
|
+
expect(shiftedSkNumber.getBaseValue('bigint')).toBe(1000000n);
|
|
59
62
|
});
|
|
60
63
|
|
|
61
|
-
test
|
|
64
|
+
test('shifts down and rounds down number', () => {
|
|
62
65
|
const skNumber = new SwapKitNumber(2.12345678);
|
|
63
|
-
expect(skNumber.
|
|
64
|
-
expect(skNumber.
|
|
66
|
+
expect(skNumber.getValue('string')).toBe('2.12345678');
|
|
67
|
+
expect(skNumber.getBaseValue('bigint')).toBe(212345678n);
|
|
65
68
|
|
|
66
69
|
const shiftedSkNumber = SwapKitNumber.shiftDecimals({
|
|
67
70
|
value: skNumber,
|
|
@@ -69,8 +72,131 @@ describe('SwapKitNumber', () => {
|
|
|
69
72
|
to: 6,
|
|
70
73
|
});
|
|
71
74
|
|
|
72
|
-
expect(shiftedSkNumber.
|
|
73
|
-
expect(shiftedSkNumber.
|
|
75
|
+
expect(shiftedSkNumber.getValue('string')).toBe('2.123456');
|
|
76
|
+
expect(shiftedSkNumber.getBaseValue('bigint')).toBe(2123456n);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('shift eth from 18 to 8', () => {
|
|
80
|
+
const skNumber = new SwapKitNumber({ value: '0.2', decimal: 18 });
|
|
81
|
+
|
|
82
|
+
const shiftedSkNumber = SwapKitNumber.shiftDecimals({
|
|
83
|
+
value: skNumber,
|
|
84
|
+
from: 18,
|
|
85
|
+
to: 8,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
expect(shiftedSkNumber.getValue('string')).toBe('0.2');
|
|
89
|
+
expect(shiftedSkNumber.getBaseValue('bigint')).toBe(20000000n);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
describe('getValue', () => {
|
|
94
|
+
describe('string', () => {
|
|
95
|
+
test('returns string value', () => {
|
|
96
|
+
const skNumber = new SwapKitNumber(1);
|
|
97
|
+
expect(skNumber.getValue('string')).toBe('1');
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
test('returns string value with decimals', () => {
|
|
101
|
+
const skNumber = new SwapKitNumber(0.01);
|
|
102
|
+
expect(skNumber.getValue('string')).toBe('0.01');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
describe('number', () => {
|
|
107
|
+
test('returns number value', () => {
|
|
108
|
+
const skNumber = new SwapKitNumber(1);
|
|
109
|
+
expect(skNumber.getValue('number')).toBe(1);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test('returns number value with decimals', () => {
|
|
113
|
+
const skNumber = new SwapKitNumber(0.01);
|
|
114
|
+
expect(skNumber.getValue('number')).toBe(0.01);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
describe('bigint', () => {
|
|
119
|
+
test('returns bigint value', () => {
|
|
120
|
+
const skNumber = new SwapKitNumber(1);
|
|
121
|
+
expect(skNumber.getBaseValue('bigint')).toBe(100000000n);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
describe('toSignificant', () => {
|
|
127
|
+
describe('normal cases', () => {
|
|
128
|
+
test('returns first significant number of digits', () => {
|
|
129
|
+
const usdLikeNumber = new SwapKitNumber(1234.5678);
|
|
130
|
+
expect(usdLikeNumber.toSignificant(2)).toBe('1200');
|
|
131
|
+
expect(usdLikeNumber.toSignificant(3)).toBe('1230');
|
|
132
|
+
expect(usdLikeNumber.toSignificant(4)).toBe('1234');
|
|
133
|
+
expect(usdLikeNumber.toSignificant(5)).toBe('1234.5');
|
|
134
|
+
expect(usdLikeNumber.toSignificant(6)).toBe('1234.56');
|
|
135
|
+
expect(usdLikeNumber.toSignificant(7)).toBe('1234.567');
|
|
136
|
+
expect(usdLikeNumber.toSignificant(8)).toBe('1234.5678');
|
|
137
|
+
|
|
138
|
+
const btcLikeNumber = new SwapKitNumber(0.00005678);
|
|
139
|
+
expect(btcLikeNumber.toSignificant(2)).toBe('0.000056');
|
|
140
|
+
expect(btcLikeNumber.toSignificant(3)).toBe('0.0000567');
|
|
141
|
+
expect(btcLikeNumber.toSignificant(4)).toBe('0.00005678');
|
|
142
|
+
expect(btcLikeNumber.toSignificant(5)).toBe('0.00005678');
|
|
143
|
+
expect(btcLikeNumber.toSignificant(8)).toBe('0.00005678');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
describe('custom decimals', () => {
|
|
148
|
+
test('returns first significant number of digits', () => {
|
|
149
|
+
const usdLikeNumber = new SwapKitNumber({ value: 1234.5678, decimal: 2 });
|
|
150
|
+
expect(usdLikeNumber.toSignificant(2)).toBe('1200');
|
|
151
|
+
expect(usdLikeNumber.toSignificant(3)).toBe('1230');
|
|
152
|
+
expect(usdLikeNumber.toSignificant(4)).toBe('1234');
|
|
153
|
+
expect(usdLikeNumber.toSignificant(5)).toBe('1234.5');
|
|
154
|
+
expect(usdLikeNumber.toSignificant(6)).toBe('1234.57');
|
|
155
|
+
expect(usdLikeNumber.toSignificant(7)).toBe('1234.57');
|
|
156
|
+
expect(usdLikeNumber.toSignificant(8)).toBe('1234.57');
|
|
157
|
+
|
|
158
|
+
const ethLikeNumber = new SwapKitNumber({ value: 0.00005678, decimal: 18 });
|
|
159
|
+
expect(ethLikeNumber.toSignificant(2)).toBe('0.000056');
|
|
160
|
+
expect(ethLikeNumber.toSignificant(3)).toBe('0.0000567');
|
|
161
|
+
expect(ethLikeNumber.toSignificant(4)).toBe('0.00005678');
|
|
162
|
+
expect(ethLikeNumber.toSignificant(5)).toBe('0.00005678');
|
|
163
|
+
expect(ethLikeNumber.toSignificant(8)).toBe('0.00005678');
|
|
164
|
+
expect(ethLikeNumber.toSignificant(18)).toBe('0.00005678');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
describe('toAbbreviation', () => {
|
|
170
|
+
test('returns abbreviation with up to 3 integer digits', () => {
|
|
171
|
+
const skNumber = new SwapKitNumber(1234.5678);
|
|
172
|
+
expect(skNumber.toAbbreviation()).toBe('1.23K');
|
|
173
|
+
|
|
174
|
+
const skNumber2 = new SwapKitNumber(1234567.5678);
|
|
175
|
+
expect(skNumber2.toAbbreviation()).toBe('1.23M');
|
|
176
|
+
|
|
177
|
+
const skNumber3 = new SwapKitNumber(1234567890.5678);
|
|
178
|
+
expect(skNumber3.toAbbreviation()).toBe('1.23B');
|
|
179
|
+
|
|
180
|
+
const skNumber4 = new SwapKitNumber(1234567890123.5678);
|
|
181
|
+
expect(skNumber4.toAbbreviation()).toBe('1.23T');
|
|
182
|
+
|
|
183
|
+
const skNumber5 = new SwapKitNumber(1234567890123456.5678);
|
|
184
|
+
expect(skNumber5.toAbbreviation()).toBe('1.23Q');
|
|
185
|
+
|
|
186
|
+
const skNumber6 = new SwapKitNumber(1234567890123456789.5678);
|
|
187
|
+
expect(skNumber6.toAbbreviation()).toBe('1.23Qi');
|
|
188
|
+
|
|
189
|
+
const skNumber7 = new SwapKitNumber(1234567890123456789012.5678);
|
|
190
|
+
expect(skNumber7.toAbbreviation()).toBe('1.23S');
|
|
191
|
+
|
|
192
|
+
const skNumber8 = new SwapKitNumber(1234.5678);
|
|
193
|
+
expect(skNumber8.toAbbreviation(0)).toBe('1K');
|
|
194
|
+
|
|
195
|
+
const skNumber9 = new SwapKitNumber(1234.5678);
|
|
196
|
+
expect(skNumber9.toAbbreviation(1)).toBe('1.2K');
|
|
197
|
+
|
|
198
|
+
const skNumber10 = new SwapKitNumber(123456.78);
|
|
199
|
+
expect(skNumber10.toAbbreviation()).toBe('123.46K');
|
|
74
200
|
});
|
|
75
201
|
});
|
|
76
202
|
|
|
@@ -81,23 +207,23 @@ describe('SwapKitNumber', () => {
|
|
|
81
207
|
const skNumber3 = new SwapKitNumber('0.5');
|
|
82
208
|
const result = skNumber1.add(skNumber2, skNumber3);
|
|
83
209
|
|
|
84
|
-
expect(result.
|
|
85
|
-
expect(result.
|
|
210
|
+
expect(result.getValue('string')).toBe('15.5');
|
|
211
|
+
expect(result.getBaseValue('bigint')).toBe(1550000000n);
|
|
86
212
|
});
|
|
87
213
|
|
|
88
214
|
test('adds different type numbers correctly', () => {
|
|
89
215
|
const skNumber1 = new SwapKitNumber(10);
|
|
90
216
|
const result = skNumber1.add(6, '0.5');
|
|
91
217
|
|
|
92
|
-
expect(result.
|
|
93
|
-
expect(result.
|
|
218
|
+
expect(result.getValue('string')).toBe('16.5');
|
|
219
|
+
expect(result.getBaseValue('bigint')).toBe(1650000000n);
|
|
94
220
|
});
|
|
95
221
|
|
|
96
222
|
test('adds large decimal numbers correctly', () => {
|
|
97
223
|
const skNumber1 = new SwapKitNumber(0.0000000001);
|
|
98
224
|
const result = skNumber1.add(6.000000000001, '0.0000000000000005');
|
|
99
|
-
expect(result.
|
|
100
|
-
expect(result.
|
|
225
|
+
expect(result.getValue('string')).toBe('6.0000000001010005');
|
|
226
|
+
expect(result.getBaseValue('bigint')).toBe(600000000n);
|
|
101
227
|
});
|
|
102
228
|
});
|
|
103
229
|
|
|
@@ -108,16 +234,16 @@ describe('SwapKitNumber', () => {
|
|
|
108
234
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
109
235
|
const result = skNumber1.sub(skNumber2, skNumber3);
|
|
110
236
|
|
|
111
|
-
expect(result.
|
|
112
|
-
expect(result.
|
|
237
|
+
expect(result.getValue('string')).toBe('4.5');
|
|
238
|
+
expect(result.getBaseValue('bigint')).toBe(450000000n);
|
|
113
239
|
});
|
|
114
240
|
|
|
115
241
|
test('subtracts different type numbers correctly', () => {
|
|
116
242
|
const skNumber1 = new SwapKitNumber(10);
|
|
117
243
|
const result = skNumber1.sub(6, '0.5');
|
|
118
244
|
|
|
119
|
-
expect(result.
|
|
120
|
-
expect(result.
|
|
245
|
+
expect(result.getValue('string')).toBe('3.5');
|
|
246
|
+
expect(result.getBaseValue('bigint')).toBe(350000000n);
|
|
121
247
|
});
|
|
122
248
|
|
|
123
249
|
test('can process negative results', () => {
|
|
@@ -125,10 +251,10 @@ describe('SwapKitNumber', () => {
|
|
|
125
251
|
const result0 = skNumber1.sub(10);
|
|
126
252
|
const resultMinus = result0.sub('10');
|
|
127
253
|
|
|
128
|
-
expect(result0.
|
|
129
|
-
expect(resultMinus.
|
|
130
|
-
expect(result0.
|
|
131
|
-
expect(resultMinus.
|
|
254
|
+
expect(result0.getValue('string')).toBe('0');
|
|
255
|
+
expect(resultMinus.getValue('string')).toBe('-10');
|
|
256
|
+
expect(result0.getBaseValue('bigint')).toBe(0n);
|
|
257
|
+
expect(resultMinus.getBaseValue('bigint')).toBe(-1000000000n);
|
|
132
258
|
});
|
|
133
259
|
});
|
|
134
260
|
|
|
@@ -139,36 +265,36 @@ describe('SwapKitNumber', () => {
|
|
|
139
265
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
140
266
|
const result = skNumber1.mul(skNumber2, skNumber3);
|
|
141
267
|
|
|
142
|
-
expect(result.
|
|
143
|
-
expect(result.
|
|
268
|
+
expect(result.getValue('string')).toBe('25');
|
|
269
|
+
expect(result.getBaseValue('bigint')).toBe(2500000000n);
|
|
144
270
|
});
|
|
145
271
|
|
|
146
272
|
test('multiplies different type numbers correctly', () => {
|
|
147
273
|
const skNumber1 = new SwapKitNumber(10);
|
|
148
274
|
const result = skNumber1.mul(6, '0.5');
|
|
149
275
|
|
|
150
|
-
expect(result.
|
|
151
|
-
expect(result.
|
|
276
|
+
expect(result.getValue('string')).toBe('30');
|
|
277
|
+
expect(result.getBaseValue('bigint')).toBe(3000000000n);
|
|
152
278
|
});
|
|
153
279
|
|
|
154
280
|
test('multiplies numbers correctly if decimals of SKN is lower than number multiplied with', () => {
|
|
155
281
|
const skNumber1 = new SwapKitNumber({ value: 1000000, decimal: 4 });
|
|
156
282
|
const result = skNumber1.mul('0.00001');
|
|
157
283
|
|
|
158
|
-
expect(result.
|
|
159
|
-
expect(result.
|
|
284
|
+
expect(result.getValue('string')).toBe('10');
|
|
285
|
+
expect(result.getBaseValue('bigint')).toBe(100000n);
|
|
160
286
|
});
|
|
161
287
|
|
|
162
288
|
test('should correctly round the result of multiplication', () => {
|
|
163
|
-
const skNumber1 = new SwapKitNumber({ decimal:
|
|
289
|
+
const skNumber1 = new SwapKitNumber({ decimal: 3, value: 1.23 });
|
|
164
290
|
const skNumber2 = new SwapKitNumber({ decimal: 4, value: 4.56 });
|
|
165
291
|
|
|
166
292
|
const result = skNumber1.mul(skNumber2);
|
|
167
293
|
|
|
168
294
|
// The exact result of 1.23 * 4.56 is 5.6088
|
|
169
295
|
// If we round it to 2 decimal places, we should get 5.61
|
|
170
|
-
expect(result.
|
|
171
|
-
expect(result.
|
|
296
|
+
expect(result.getValue('string')).toBe('5.609');
|
|
297
|
+
expect(result.getBaseValue('bigint')).toBe(5608n);
|
|
172
298
|
|
|
173
299
|
const skNumber3 = new SwapKitNumber({ decimal: 2, value: 1.23 });
|
|
174
300
|
const skNumber4 = new SwapKitNumber(-1.234567891);
|
|
@@ -177,8 +303,8 @@ describe('SwapKitNumber', () => {
|
|
|
177
303
|
|
|
178
304
|
// The exact result of 1.23 * -1.234567891 is -1,518518505
|
|
179
305
|
// If we round it to 2 decimal places, we should get 5.61
|
|
180
|
-
expect(result2.
|
|
181
|
-
expect(result2.
|
|
306
|
+
expect(result2.getValue('string')).toBe('-1.52');
|
|
307
|
+
expect(result2.getBaseValue('bigint')).toBe(-151n);
|
|
182
308
|
});
|
|
183
309
|
});
|
|
184
310
|
|
|
@@ -189,38 +315,38 @@ describe('SwapKitNumber', () => {
|
|
|
189
315
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
190
316
|
const result = skNumber1.div(skNumber2, skNumber3);
|
|
191
317
|
|
|
192
|
-
expect(result.
|
|
193
|
-
expect(result.
|
|
318
|
+
expect(result.getValue('string')).toBe('4');
|
|
319
|
+
expect(result.getBaseValue('bigint')).toBe(400000000n);
|
|
194
320
|
|
|
195
321
|
const skNumber4 = new SwapKitNumber(10.12);
|
|
196
322
|
const result2 = skNumber4.div(0.0001);
|
|
197
323
|
|
|
198
|
-
expect(result2.
|
|
199
|
-
expect(result2.
|
|
324
|
+
expect(result2.getValue('string')).toBe('101200');
|
|
325
|
+
expect(result2.getBaseValue('bigint')).toBe(10120000000000n);
|
|
200
326
|
});
|
|
201
327
|
|
|
202
328
|
test('divides different type numbers correctly', () => {
|
|
203
329
|
const skNumber1 = new SwapKitNumber(20);
|
|
204
330
|
const result = skNumber1.div(5, '0.5');
|
|
205
331
|
|
|
206
|
-
expect(result.
|
|
207
|
-
expect(result.
|
|
332
|
+
expect(result.getValue('string')).toBe('8');
|
|
333
|
+
expect(result.getBaseValue('bigint')).toBe(800000000n);
|
|
208
334
|
});
|
|
209
335
|
|
|
210
336
|
test('divides different type numbers correctly when decimal is set', () => {
|
|
211
337
|
const skNumber1 = new SwapKitNumber({ value: '1.2', decimal: 2 });
|
|
212
338
|
const result = skNumber1.div(0.001);
|
|
213
339
|
|
|
214
|
-
expect(result.
|
|
215
|
-
expect(result.
|
|
340
|
+
expect(result.getValue('string')).toBe('1200');
|
|
341
|
+
expect(result.getBaseValue('bigint')).toBe(120000n);
|
|
216
342
|
});
|
|
217
343
|
|
|
218
344
|
test('divides smaller number by larger number', () => {
|
|
219
345
|
const skNumber1 = new SwapKitNumber(1);
|
|
220
346
|
const result = skNumber1.div(2);
|
|
221
347
|
|
|
222
|
-
expect(result.
|
|
223
|
-
expect(result.
|
|
348
|
+
expect(result.getValue('string')).toBe('0.5');
|
|
349
|
+
expect(result.getBaseValue('bigint')).toBe(50000000n);
|
|
224
350
|
});
|
|
225
351
|
|
|
226
352
|
test('divides a number with 18 decimals by a negative number with less decimals', () => {
|
|
@@ -230,8 +356,8 @@ describe('SwapKitNumber', () => {
|
|
|
230
356
|
const result = skNumber1.div(skNumber2);
|
|
231
357
|
|
|
232
358
|
// The exact result of 1.000000000000000010 / -2 is -0.500000000000000005
|
|
233
|
-
expect(result.
|
|
234
|
-
expect(result.
|
|
359
|
+
expect(result.getValue('string')).toBe('-0.500000000000000005');
|
|
360
|
+
expect(result.getBaseValue('bigint')).toBe(-500000000000000005n);
|
|
235
361
|
});
|
|
236
362
|
|
|
237
363
|
test('divides a number with 2 decimals by a negative number with more decimals', () => {
|
|
@@ -241,8 +367,8 @@ describe('SwapKitNumber', () => {
|
|
|
241
367
|
const result = skNumber1.div(skNumber2);
|
|
242
368
|
|
|
243
369
|
// The exact result of 2 / -0.000005 is -400000
|
|
244
|
-
expect(result.
|
|
245
|
-
expect(result.
|
|
370
|
+
expect(result.getValue('string')).toBe('-400000');
|
|
371
|
+
expect(result.getBaseValue('bigint')).toBe(-40000000n);
|
|
246
372
|
});
|
|
247
373
|
});
|
|
248
374
|
|
|
@@ -252,8 +378,8 @@ describe('SwapKitNumber', () => {
|
|
|
252
378
|
const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
|
|
253
379
|
|
|
254
380
|
const result = skNumber1.mul(skNumber2);
|
|
255
|
-
expect(result.
|
|
256
|
-
expect(result.
|
|
381
|
+
expect(result.getValue('string')).toBe('987654321000000987654321000');
|
|
382
|
+
expect(result.getBaseValue('bigint')).toBe(987654321000000987654321000000000000000000000n);
|
|
257
383
|
});
|
|
258
384
|
|
|
259
385
|
test('divide huge numbers', () => {
|
|
@@ -261,8 +387,8 @@ describe('SwapKitNumber', () => {
|
|
|
261
387
|
const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
|
|
262
388
|
|
|
263
389
|
const result = skNumber1.div(skNumber2);
|
|
264
|
-
expect(result.
|
|
265
|
-
expect(result.
|
|
390
|
+
expect(result.getValue('string')).toBe('1012.4999999873447625');
|
|
391
|
+
expect(result.getBaseValue('bigint')).toBe(1012499999987344762500n);
|
|
266
392
|
});
|
|
267
393
|
});
|
|
268
394
|
|