@swapkit/helpers 1.0.0-rc.7 → 1.0.0-rc.70
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 +2 -1
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +94 -73
- package/dist/index.es.js +988 -498
- package/dist/index.es.js.map +1 -0
- package/package.json +16 -13
- package/src/helpers/__tests__/memo.test.ts +3 -3
- package/src/helpers/asset.ts +56 -56
- package/src/helpers/liquidity.ts +46 -38
- package/src/helpers/memo.ts +19 -16
- package/src/helpers/others.ts +6 -54
- package/src/helpers/validators.ts +4 -3
- package/src/index.ts +2 -0
- package/src/modules/__tests__/assetValue.test.ts +145 -38
- package/src/modules/__tests__/bigIntArithmetics.test.ts +30 -0
- package/src/modules/__tests__/swapKitNumber.test.ts +174 -48
- package/src/modules/assetValue.ts +169 -145
- package/src/modules/bigIntArithmetics.ts +185 -116
- package/src/modules/swapKitError.ts +13 -4
- package/src/modules/swapKitNumber.ts +8 -1
- package/src/types.ts +30 -0
|
@@ -8,37 +8,40 @@ describe('SwapKitNumber', () => {
|
|
|
8
8
|
const skNumber1 = new SwapKitNumber(1);
|
|
9
9
|
expect(skNumber1.getValue('string')).toBe('1');
|
|
10
10
|
expect(skNumber1.getValue('number')).toBe(1);
|
|
11
|
-
expect(skNumber1.
|
|
11
|
+
expect(skNumber1.getBaseValue('bigint')).toBe(100000000n);
|
|
12
12
|
|
|
13
13
|
const skNumber2 = new SwapKitNumber('1');
|
|
14
14
|
expect(skNumber2.getValue('string')).toBe('1');
|
|
15
|
-
expect(skNumber2.
|
|
15
|
+
expect(skNumber2.getBaseValue('bigint')).toBe(100000000n);
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* because by default we have 8 decimals - it will be rounded to 0 on base value
|
|
19
|
+
*/
|
|
17
20
|
const skNumber3 = new SwapKitNumber('0.0000000001');
|
|
18
21
|
expect(skNumber3.getValue('string')).toBe('0.0000000001');
|
|
19
|
-
expect(skNumber3.
|
|
22
|
+
expect(skNumber3.getBaseValue('bigint')).toBe(0n);
|
|
20
23
|
|
|
21
|
-
const skNumber4 = new SwapKitNumber(0.
|
|
22
|
-
expect(skNumber4.getValue('string')).toBe('0.
|
|
23
|
-
expect(skNumber4.
|
|
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);
|
|
24
27
|
|
|
25
|
-
const
|
|
26
|
-
expect(
|
|
27
|
-
expect(
|
|
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);
|
|
28
31
|
|
|
29
|
-
const
|
|
30
|
-
expect(
|
|
31
|
-
expect(
|
|
32
|
-
expect(
|
|
33
|
-
expect(
|
|
34
|
-
expect(
|
|
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
43
|
expect(skNumber.getValue('string')).toBe('12.345678901234');
|
|
41
|
-
expect(skNumber.
|
|
44
|
+
expect(skNumber.getBaseValue('bigint')).toBe(12345678901234n);
|
|
42
45
|
});
|
|
43
46
|
});
|
|
44
47
|
|
|
@@ -46,22 +49,22 @@ describe('SwapKitNumber', () => {
|
|
|
46
49
|
test('shifts up and bumps number', () => {
|
|
47
50
|
const skNumber = new SwapKitNumber(1);
|
|
48
51
|
expect(skNumber.getValue('string')).toBe('1');
|
|
49
|
-
expect(skNumber.
|
|
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.getValue('string')).toBe('
|
|
58
|
-
expect(shiftedSkNumber.
|
|
60
|
+
expect(shiftedSkNumber.getValue('string')).toBe('1');
|
|
61
|
+
expect(shiftedSkNumber.getBaseValue('bigint')).toBe(1000000n);
|
|
59
62
|
});
|
|
60
63
|
|
|
61
64
|
test('shifts down and rounds down number', () => {
|
|
62
65
|
const skNumber = new SwapKitNumber(2.12345678);
|
|
63
66
|
expect(skNumber.getValue('string')).toBe('2.12345678');
|
|
64
|
-
expect(skNumber.
|
|
67
|
+
expect(skNumber.getBaseValue('bigint')).toBe(212345678n);
|
|
65
68
|
|
|
66
69
|
const shiftedSkNumber = SwapKitNumber.shiftDecimals({
|
|
67
70
|
value: skNumber,
|
|
@@ -70,7 +73,20 @@ describe('SwapKitNumber', () => {
|
|
|
70
73
|
});
|
|
71
74
|
|
|
72
75
|
expect(shiftedSkNumber.getValue('string')).toBe('2.123456');
|
|
73
|
-
expect(shiftedSkNumber.
|
|
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);
|
|
74
90
|
});
|
|
75
91
|
});
|
|
76
92
|
|
|
@@ -102,7 +118,7 @@ describe('SwapKitNumber', () => {
|
|
|
102
118
|
describe('bigint', () => {
|
|
103
119
|
test('returns bigint value', () => {
|
|
104
120
|
const skNumber = new SwapKitNumber(1);
|
|
105
|
-
expect(skNumber.
|
|
121
|
+
expect(skNumber.getBaseValue('bigint')).toBe(100000000n);
|
|
106
122
|
});
|
|
107
123
|
});
|
|
108
124
|
});
|
|
@@ -150,6 +166,76 @@ describe('SwapKitNumber', () => {
|
|
|
150
166
|
});
|
|
151
167
|
});
|
|
152
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');
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
describe('toCurrency', () => {
|
|
204
|
+
test('returns abbreviation with up to 3 integer digits', () => {
|
|
205
|
+
const skNumber = new SwapKitNumber(1234.5678);
|
|
206
|
+
expect(skNumber.toCurrency()).toBe('$1,234.56');
|
|
207
|
+
expect(
|
|
208
|
+
skNumber.toCurrency('€', {
|
|
209
|
+
decimalSeparator: ',',
|
|
210
|
+
thousandSeparator: ' ',
|
|
211
|
+
currencyPosition: 'end',
|
|
212
|
+
}),
|
|
213
|
+
).toBe('1 234,56€');
|
|
214
|
+
|
|
215
|
+
const skNumber2 = new SwapKitNumber(0.5678);
|
|
216
|
+
expect(skNumber2.toCurrency()).toBe('$0.5678');
|
|
217
|
+
expect(
|
|
218
|
+
skNumber2.toCurrency('€', {
|
|
219
|
+
decimalSeparator: ',',
|
|
220
|
+
currencyPosition: 'end',
|
|
221
|
+
}),
|
|
222
|
+
).toBe('0,5678€');
|
|
223
|
+
|
|
224
|
+
const skNumber3 = new SwapKitNumber(0.00005678);
|
|
225
|
+
expect(skNumber3.toCurrency()).toBe('$0.000057');
|
|
226
|
+
expect(
|
|
227
|
+
skNumber3.toCurrency('€', {
|
|
228
|
+
decimalSeparator: ',',
|
|
229
|
+
thousandSeparator: ' ',
|
|
230
|
+
currencyPosition: 'end',
|
|
231
|
+
}),
|
|
232
|
+
).toBe('0,000057€');
|
|
233
|
+
|
|
234
|
+
const skNumber4 = new SwapKitNumber(12345);
|
|
235
|
+
expect(skNumber4.toCurrency()).toBe('$12,345');
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
|
|
153
239
|
describe('add', () => {
|
|
154
240
|
test('adds same type numbers correctly', () => {
|
|
155
241
|
const skNumber1 = new SwapKitNumber(10);
|
|
@@ -158,7 +244,7 @@ describe('SwapKitNumber', () => {
|
|
|
158
244
|
const result = skNumber1.add(skNumber2, skNumber3);
|
|
159
245
|
|
|
160
246
|
expect(result.getValue('string')).toBe('15.5');
|
|
161
|
-
expect(result.
|
|
247
|
+
expect(result.getBaseValue('bigint')).toBe(1550000000n);
|
|
162
248
|
});
|
|
163
249
|
|
|
164
250
|
test('adds different type numbers correctly', () => {
|
|
@@ -166,14 +252,14 @@ describe('SwapKitNumber', () => {
|
|
|
166
252
|
const result = skNumber1.add(6, '0.5');
|
|
167
253
|
|
|
168
254
|
expect(result.getValue('string')).toBe('16.5');
|
|
169
|
-
expect(result.
|
|
255
|
+
expect(result.getBaseValue('bigint')).toBe(1650000000n);
|
|
170
256
|
});
|
|
171
257
|
|
|
172
258
|
test('adds large decimal numbers correctly', () => {
|
|
173
259
|
const skNumber1 = new SwapKitNumber(0.0000000001);
|
|
174
260
|
const result = skNumber1.add(6.000000000001, '0.0000000000000005');
|
|
175
261
|
expect(result.getValue('string')).toBe('6.0000000001010005');
|
|
176
|
-
expect(result.
|
|
262
|
+
expect(result.getBaseValue('bigint')).toBe(600000000n);
|
|
177
263
|
});
|
|
178
264
|
});
|
|
179
265
|
|
|
@@ -185,7 +271,7 @@ describe('SwapKitNumber', () => {
|
|
|
185
271
|
const result = skNumber1.sub(skNumber2, skNumber3);
|
|
186
272
|
|
|
187
273
|
expect(result.getValue('string')).toBe('4.5');
|
|
188
|
-
expect(result.
|
|
274
|
+
expect(result.getBaseValue('bigint')).toBe(450000000n);
|
|
189
275
|
});
|
|
190
276
|
|
|
191
277
|
test('subtracts different type numbers correctly', () => {
|
|
@@ -193,7 +279,7 @@ describe('SwapKitNumber', () => {
|
|
|
193
279
|
const result = skNumber1.sub(6, '0.5');
|
|
194
280
|
|
|
195
281
|
expect(result.getValue('string')).toBe('3.5');
|
|
196
|
-
expect(result.
|
|
282
|
+
expect(result.getBaseValue('bigint')).toBe(350000000n);
|
|
197
283
|
});
|
|
198
284
|
|
|
199
285
|
test('can process negative results', () => {
|
|
@@ -203,8 +289,8 @@ describe('SwapKitNumber', () => {
|
|
|
203
289
|
|
|
204
290
|
expect(result0.getValue('string')).toBe('0');
|
|
205
291
|
expect(resultMinus.getValue('string')).toBe('-10');
|
|
206
|
-
expect(result0.
|
|
207
|
-
expect(resultMinus.
|
|
292
|
+
expect(result0.getBaseValue('bigint')).toBe(0n);
|
|
293
|
+
expect(resultMinus.getBaseValue('bigint')).toBe(-1000000000n);
|
|
208
294
|
});
|
|
209
295
|
});
|
|
210
296
|
|
|
@@ -216,7 +302,7 @@ describe('SwapKitNumber', () => {
|
|
|
216
302
|
const result = skNumber1.mul(skNumber2, skNumber3);
|
|
217
303
|
|
|
218
304
|
expect(result.getValue('string')).toBe('25');
|
|
219
|
-
expect(result.
|
|
305
|
+
expect(result.getBaseValue('bigint')).toBe(2500000000n);
|
|
220
306
|
});
|
|
221
307
|
|
|
222
308
|
test('multiplies different type numbers correctly', () => {
|
|
@@ -224,7 +310,7 @@ describe('SwapKitNumber', () => {
|
|
|
224
310
|
const result = skNumber1.mul(6, '0.5');
|
|
225
311
|
|
|
226
312
|
expect(result.getValue('string')).toBe('30');
|
|
227
|
-
expect(result.
|
|
313
|
+
expect(result.getBaseValue('bigint')).toBe(3000000000n);
|
|
228
314
|
});
|
|
229
315
|
|
|
230
316
|
test('multiplies numbers correctly if decimals of SKN is lower than number multiplied with', () => {
|
|
@@ -232,19 +318,18 @@ describe('SwapKitNumber', () => {
|
|
|
232
318
|
const result = skNumber1.mul('0.00001');
|
|
233
319
|
|
|
234
320
|
expect(result.getValue('string')).toBe('10');
|
|
235
|
-
expect(result.
|
|
321
|
+
expect(result.getBaseValue('bigint')).toBe(100000n);
|
|
236
322
|
});
|
|
237
323
|
|
|
238
324
|
test('should correctly round the result of multiplication', () => {
|
|
239
|
-
const skNumber1 = new SwapKitNumber({ decimal:
|
|
325
|
+
const skNumber1 = new SwapKitNumber({ decimal: 3, value: 1.23 });
|
|
240
326
|
const skNumber2 = new SwapKitNumber({ decimal: 4, value: 4.56 });
|
|
241
327
|
|
|
242
328
|
const result = skNumber1.mul(skNumber2);
|
|
243
329
|
|
|
244
330
|
// The exact result of 1.23 * 4.56 is 5.6088
|
|
245
|
-
|
|
246
|
-
expect(result.
|
|
247
|
-
expect(result.getValue('bigint')).toBe(560880000n);
|
|
331
|
+
expect(result.getValue('string')).toBe('5.609');
|
|
332
|
+
expect(result.getBaseValue('bigint')).toBe(5608n);
|
|
248
333
|
|
|
249
334
|
const skNumber3 = new SwapKitNumber({ decimal: 2, value: 1.23 });
|
|
250
335
|
const skNumber4 = new SwapKitNumber(-1.234567891);
|
|
@@ -254,7 +339,7 @@ describe('SwapKitNumber', () => {
|
|
|
254
339
|
// The exact result of 1.23 * -1.234567891 is -1,518518505
|
|
255
340
|
// If we round it to 2 decimal places, we should get 5.61
|
|
256
341
|
expect(result2.getValue('string')).toBe('-1.52');
|
|
257
|
-
expect(result2.
|
|
342
|
+
expect(result2.getBaseValue('bigint')).toBe(-151n);
|
|
258
343
|
});
|
|
259
344
|
});
|
|
260
345
|
|
|
@@ -266,13 +351,13 @@ describe('SwapKitNumber', () => {
|
|
|
266
351
|
const result = skNumber1.div(skNumber2, skNumber3);
|
|
267
352
|
|
|
268
353
|
expect(result.getValue('string')).toBe('4');
|
|
269
|
-
expect(result.
|
|
354
|
+
expect(result.getBaseValue('bigint')).toBe(400000000n);
|
|
270
355
|
|
|
271
356
|
const skNumber4 = new SwapKitNumber(10.12);
|
|
272
357
|
const result2 = skNumber4.div(0.0001);
|
|
273
358
|
|
|
274
359
|
expect(result2.getValue('string')).toBe('101200');
|
|
275
|
-
expect(result2.
|
|
360
|
+
expect(result2.getBaseValue('bigint')).toBe(10120000000000n);
|
|
276
361
|
});
|
|
277
362
|
|
|
278
363
|
test('divides different type numbers correctly', () => {
|
|
@@ -280,7 +365,7 @@ describe('SwapKitNumber', () => {
|
|
|
280
365
|
const result = skNumber1.div(5, '0.5');
|
|
281
366
|
|
|
282
367
|
expect(result.getValue('string')).toBe('8');
|
|
283
|
-
expect(result.
|
|
368
|
+
expect(result.getBaseValue('bigint')).toBe(800000000n);
|
|
284
369
|
});
|
|
285
370
|
|
|
286
371
|
test('divides different type numbers correctly when decimal is set', () => {
|
|
@@ -288,7 +373,7 @@ describe('SwapKitNumber', () => {
|
|
|
288
373
|
const result = skNumber1.div(0.001);
|
|
289
374
|
|
|
290
375
|
expect(result.getValue('string')).toBe('1200');
|
|
291
|
-
expect(result.
|
|
376
|
+
expect(result.getBaseValue('bigint')).toBe(120000n);
|
|
292
377
|
});
|
|
293
378
|
|
|
294
379
|
test('divides smaller number by larger number', () => {
|
|
@@ -296,7 +381,7 @@ describe('SwapKitNumber', () => {
|
|
|
296
381
|
const result = skNumber1.div(2);
|
|
297
382
|
|
|
298
383
|
expect(result.getValue('string')).toBe('0.5');
|
|
299
|
-
expect(result.
|
|
384
|
+
expect(result.getBaseValue('bigint')).toBe(50000000n);
|
|
300
385
|
});
|
|
301
386
|
|
|
302
387
|
test('divides a number with 18 decimals by a negative number with less decimals', () => {
|
|
@@ -307,7 +392,7 @@ describe('SwapKitNumber', () => {
|
|
|
307
392
|
|
|
308
393
|
// The exact result of 1.000000000000000010 / -2 is -0.500000000000000005
|
|
309
394
|
expect(result.getValue('string')).toBe('-0.500000000000000005');
|
|
310
|
-
expect(result.
|
|
395
|
+
expect(result.getBaseValue('bigint')).toBe(-500000000000000005n);
|
|
311
396
|
});
|
|
312
397
|
|
|
313
398
|
test('divides a number with 2 decimals by a negative number with more decimals', () => {
|
|
@@ -318,7 +403,7 @@ describe('SwapKitNumber', () => {
|
|
|
318
403
|
|
|
319
404
|
// The exact result of 2 / -0.000005 is -400000
|
|
320
405
|
expect(result.getValue('string')).toBe('-400000');
|
|
321
|
-
expect(result.
|
|
406
|
+
expect(result.getBaseValue('bigint')).toBe(-40000000n);
|
|
322
407
|
});
|
|
323
408
|
});
|
|
324
409
|
|
|
@@ -329,7 +414,7 @@ describe('SwapKitNumber', () => {
|
|
|
329
414
|
|
|
330
415
|
const result = skNumber1.mul(skNumber2);
|
|
331
416
|
expect(result.getValue('string')).toBe('987654321000000987654321000');
|
|
332
|
-
expect(result.
|
|
417
|
+
expect(result.getBaseValue('bigint')).toBe(987654321000000987654321000000000000000000000n);
|
|
333
418
|
});
|
|
334
419
|
|
|
335
420
|
test('divide huge numbers', () => {
|
|
@@ -338,7 +423,27 @@ describe('SwapKitNumber', () => {
|
|
|
338
423
|
|
|
339
424
|
const result = skNumber1.div(skNumber2);
|
|
340
425
|
expect(result.getValue('string')).toBe('1012.4999999873447625');
|
|
341
|
-
expect(result.
|
|
426
|
+
expect(result.getBaseValue('bigint')).toBe(1012499999987344762500n);
|
|
427
|
+
});
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
describe('extending multiplier without loosing precision', () => {
|
|
431
|
+
test('edge case 1', () => {
|
|
432
|
+
const asset1 = new SwapKitNumber({ value: 41.90963702, decimal: 8 });
|
|
433
|
+
const multiplier = 5.337952274462478;
|
|
434
|
+
const divider = 105.2562773915526;
|
|
435
|
+
const result = asset1.mul(multiplier).div(divider);
|
|
436
|
+
|
|
437
|
+
expect(result.getValue('string')).toBe('2.12539953');
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
test('edge case 2', () => {
|
|
441
|
+
const asset1 = new SwapKitNumber('41.90963702');
|
|
442
|
+
const multiplier = new SwapKitNumber('5.337952274462478');
|
|
443
|
+
const divider = new SwapKitNumber('105.2562773915526');
|
|
444
|
+
const result = asset1.mul(multiplier).div(divider);
|
|
445
|
+
|
|
446
|
+
expect(result.getValue('string')).toBe('2.125399527674726');
|
|
342
447
|
});
|
|
343
448
|
});
|
|
344
449
|
|
|
@@ -350,6 +455,14 @@ describe('SwapKitNumber', () => {
|
|
|
350
455
|
expect(skNumber1.gt(skNumber2)).toBe(true);
|
|
351
456
|
expect(skNumber2.gt(skNumber1)).toBe(false);
|
|
352
457
|
});
|
|
458
|
+
|
|
459
|
+
test("different decimals doesn't affect comparison", () => {
|
|
460
|
+
const skNumber1 = new SwapKitNumber({ value: 10, decimal: 18 });
|
|
461
|
+
const skNumber2 = new SwapKitNumber({ value: '50', decimal: 8 });
|
|
462
|
+
|
|
463
|
+
expect(skNumber1.lt(skNumber2)).toBe(true);
|
|
464
|
+
expect(skNumber2.gt(skNumber1)).toBe(true);
|
|
465
|
+
});
|
|
353
466
|
});
|
|
354
467
|
|
|
355
468
|
describe('gte', () => {
|
|
@@ -395,6 +508,19 @@ describe('SwapKitNumber', () => {
|
|
|
395
508
|
});
|
|
396
509
|
});
|
|
397
510
|
|
|
511
|
+
describe('comparison edge cases with decimals', () => {
|
|
512
|
+
test('compare on cut decimals', () => {
|
|
513
|
+
const skNumber1 = new SwapKitNumber({ value: 0.001, decimal: 3 });
|
|
514
|
+
const value = '0.0019';
|
|
515
|
+
|
|
516
|
+
expect(skNumber1.lt(value)).toBe(true);
|
|
517
|
+
expect(skNumber1.gt(value)).toBe(false);
|
|
518
|
+
expect(skNumber1.eq(value)).toBe(false);
|
|
519
|
+
expect(skNumber1.lte(value)).toBe(true);
|
|
520
|
+
expect(skNumber1.gte(value)).toBe(false);
|
|
521
|
+
});
|
|
522
|
+
});
|
|
523
|
+
|
|
398
524
|
describe('Throws', () => {
|
|
399
525
|
test('throws if division by zero', () => {
|
|
400
526
|
const skNumber1 = new SwapKitNumber(10);
|