@swapkit/helpers 1.0.0-rc.2 → 1.0.0-rc.22
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 +66 -50
- package/dist/index.es.js +816 -425
- 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 +237 -78
- package/src/modules/assetValue.ts +87 -80
- package/src/modules/bigIntArithmetics.ts +238 -107
- 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,164 @@ 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');
|
|
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€');
|
|
74
233
|
});
|
|
75
234
|
});
|
|
76
235
|
|
|
@@ -81,23 +240,23 @@ describe('SwapKitNumber', () => {
|
|
|
81
240
|
const skNumber3 = new SwapKitNumber('0.5');
|
|
82
241
|
const result = skNumber1.add(skNumber2, skNumber3);
|
|
83
242
|
|
|
84
|
-
expect(result.
|
|
85
|
-
expect(result.
|
|
243
|
+
expect(result.getValue('string')).toBe('15.5');
|
|
244
|
+
expect(result.getBaseValue('bigint')).toBe(1550000000n);
|
|
86
245
|
});
|
|
87
246
|
|
|
88
247
|
test('adds different type numbers correctly', () => {
|
|
89
248
|
const skNumber1 = new SwapKitNumber(10);
|
|
90
249
|
const result = skNumber1.add(6, '0.5');
|
|
91
250
|
|
|
92
|
-
expect(result.
|
|
93
|
-
expect(result.
|
|
251
|
+
expect(result.getValue('string')).toBe('16.5');
|
|
252
|
+
expect(result.getBaseValue('bigint')).toBe(1650000000n);
|
|
94
253
|
});
|
|
95
254
|
|
|
96
255
|
test('adds large decimal numbers correctly', () => {
|
|
97
256
|
const skNumber1 = new SwapKitNumber(0.0000000001);
|
|
98
257
|
const result = skNumber1.add(6.000000000001, '0.0000000000000005');
|
|
99
|
-
expect(result.
|
|
100
|
-
expect(result.
|
|
258
|
+
expect(result.getValue('string')).toBe('6.0000000001010005');
|
|
259
|
+
expect(result.getBaseValue('bigint')).toBe(600000000n);
|
|
101
260
|
});
|
|
102
261
|
});
|
|
103
262
|
|
|
@@ -108,16 +267,16 @@ describe('SwapKitNumber', () => {
|
|
|
108
267
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
109
268
|
const result = skNumber1.sub(skNumber2, skNumber3);
|
|
110
269
|
|
|
111
|
-
expect(result.
|
|
112
|
-
expect(result.
|
|
270
|
+
expect(result.getValue('string')).toBe('4.5');
|
|
271
|
+
expect(result.getBaseValue('bigint')).toBe(450000000n);
|
|
113
272
|
});
|
|
114
273
|
|
|
115
274
|
test('subtracts different type numbers correctly', () => {
|
|
116
275
|
const skNumber1 = new SwapKitNumber(10);
|
|
117
276
|
const result = skNumber1.sub(6, '0.5');
|
|
118
277
|
|
|
119
|
-
expect(result.
|
|
120
|
-
expect(result.
|
|
278
|
+
expect(result.getValue('string')).toBe('3.5');
|
|
279
|
+
expect(result.getBaseValue('bigint')).toBe(350000000n);
|
|
121
280
|
});
|
|
122
281
|
|
|
123
282
|
test('can process negative results', () => {
|
|
@@ -125,10 +284,10 @@ describe('SwapKitNumber', () => {
|
|
|
125
284
|
const result0 = skNumber1.sub(10);
|
|
126
285
|
const resultMinus = result0.sub('10');
|
|
127
286
|
|
|
128
|
-
expect(result0.
|
|
129
|
-
expect(resultMinus.
|
|
130
|
-
expect(result0.
|
|
131
|
-
expect(resultMinus.
|
|
287
|
+
expect(result0.getValue('string')).toBe('0');
|
|
288
|
+
expect(resultMinus.getValue('string')).toBe('-10');
|
|
289
|
+
expect(result0.getBaseValue('bigint')).toBe(0n);
|
|
290
|
+
expect(resultMinus.getBaseValue('bigint')).toBe(-1000000000n);
|
|
132
291
|
});
|
|
133
292
|
});
|
|
134
293
|
|
|
@@ -139,36 +298,36 @@ describe('SwapKitNumber', () => {
|
|
|
139
298
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
140
299
|
const result = skNumber1.mul(skNumber2, skNumber3);
|
|
141
300
|
|
|
142
|
-
expect(result.
|
|
143
|
-
expect(result.
|
|
301
|
+
expect(result.getValue('string')).toBe('25');
|
|
302
|
+
expect(result.getBaseValue('bigint')).toBe(2500000000n);
|
|
144
303
|
});
|
|
145
304
|
|
|
146
305
|
test('multiplies different type numbers correctly', () => {
|
|
147
306
|
const skNumber1 = new SwapKitNumber(10);
|
|
148
307
|
const result = skNumber1.mul(6, '0.5');
|
|
149
308
|
|
|
150
|
-
expect(result.
|
|
151
|
-
expect(result.
|
|
309
|
+
expect(result.getValue('string')).toBe('30');
|
|
310
|
+
expect(result.getBaseValue('bigint')).toBe(3000000000n);
|
|
152
311
|
});
|
|
153
312
|
|
|
154
313
|
test('multiplies numbers correctly if decimals of SKN is lower than number multiplied with', () => {
|
|
155
314
|
const skNumber1 = new SwapKitNumber({ value: 1000000, decimal: 4 });
|
|
156
315
|
const result = skNumber1.mul('0.00001');
|
|
157
316
|
|
|
158
|
-
expect(result.
|
|
159
|
-
expect(result.
|
|
317
|
+
expect(result.getValue('string')).toBe('10');
|
|
318
|
+
expect(result.getBaseValue('bigint')).toBe(100000n);
|
|
160
319
|
});
|
|
161
320
|
|
|
162
321
|
test('should correctly round the result of multiplication', () => {
|
|
163
|
-
const skNumber1 = new SwapKitNumber({ decimal:
|
|
322
|
+
const skNumber1 = new SwapKitNumber({ decimal: 3, value: 1.23 });
|
|
164
323
|
const skNumber2 = new SwapKitNumber({ decimal: 4, value: 4.56 });
|
|
165
324
|
|
|
166
325
|
const result = skNumber1.mul(skNumber2);
|
|
167
326
|
|
|
168
327
|
// The exact result of 1.23 * 4.56 is 5.6088
|
|
169
328
|
// If we round it to 2 decimal places, we should get 5.61
|
|
170
|
-
expect(result.
|
|
171
|
-
expect(result.
|
|
329
|
+
expect(result.getValue('string')).toBe('5.609');
|
|
330
|
+
expect(result.getBaseValue('bigint')).toBe(5608n);
|
|
172
331
|
|
|
173
332
|
const skNumber3 = new SwapKitNumber({ decimal: 2, value: 1.23 });
|
|
174
333
|
const skNumber4 = new SwapKitNumber(-1.234567891);
|
|
@@ -177,8 +336,8 @@ describe('SwapKitNumber', () => {
|
|
|
177
336
|
|
|
178
337
|
// The exact result of 1.23 * -1.234567891 is -1,518518505
|
|
179
338
|
// If we round it to 2 decimal places, we should get 5.61
|
|
180
|
-
expect(result2.
|
|
181
|
-
expect(result2.
|
|
339
|
+
expect(result2.getValue('string')).toBe('-1.52');
|
|
340
|
+
expect(result2.getBaseValue('bigint')).toBe(-151n);
|
|
182
341
|
});
|
|
183
342
|
});
|
|
184
343
|
|
|
@@ -189,38 +348,38 @@ describe('SwapKitNumber', () => {
|
|
|
189
348
|
const skNumber3 = new SwapKitNumber(0.5);
|
|
190
349
|
const result = skNumber1.div(skNumber2, skNumber3);
|
|
191
350
|
|
|
192
|
-
expect(result.
|
|
193
|
-
expect(result.
|
|
351
|
+
expect(result.getValue('string')).toBe('4');
|
|
352
|
+
expect(result.getBaseValue('bigint')).toBe(400000000n);
|
|
194
353
|
|
|
195
354
|
const skNumber4 = new SwapKitNumber(10.12);
|
|
196
355
|
const result2 = skNumber4.div(0.0001);
|
|
197
356
|
|
|
198
|
-
expect(result2.
|
|
199
|
-
expect(result2.
|
|
357
|
+
expect(result2.getValue('string')).toBe('101200');
|
|
358
|
+
expect(result2.getBaseValue('bigint')).toBe(10120000000000n);
|
|
200
359
|
});
|
|
201
360
|
|
|
202
361
|
test('divides different type numbers correctly', () => {
|
|
203
362
|
const skNumber1 = new SwapKitNumber(20);
|
|
204
363
|
const result = skNumber1.div(5, '0.5');
|
|
205
364
|
|
|
206
|
-
expect(result.
|
|
207
|
-
expect(result.
|
|
365
|
+
expect(result.getValue('string')).toBe('8');
|
|
366
|
+
expect(result.getBaseValue('bigint')).toBe(800000000n);
|
|
208
367
|
});
|
|
209
368
|
|
|
210
369
|
test('divides different type numbers correctly when decimal is set', () => {
|
|
211
370
|
const skNumber1 = new SwapKitNumber({ value: '1.2', decimal: 2 });
|
|
212
371
|
const result = skNumber1.div(0.001);
|
|
213
372
|
|
|
214
|
-
expect(result.
|
|
215
|
-
expect(result.
|
|
373
|
+
expect(result.getValue('string')).toBe('1200');
|
|
374
|
+
expect(result.getBaseValue('bigint')).toBe(120000n);
|
|
216
375
|
});
|
|
217
376
|
|
|
218
377
|
test('divides smaller number by larger number', () => {
|
|
219
378
|
const skNumber1 = new SwapKitNumber(1);
|
|
220
379
|
const result = skNumber1.div(2);
|
|
221
380
|
|
|
222
|
-
expect(result.
|
|
223
|
-
expect(result.
|
|
381
|
+
expect(result.getValue('string')).toBe('0.5');
|
|
382
|
+
expect(result.getBaseValue('bigint')).toBe(50000000n);
|
|
224
383
|
});
|
|
225
384
|
|
|
226
385
|
test('divides a number with 18 decimals by a negative number with less decimals', () => {
|
|
@@ -230,8 +389,8 @@ describe('SwapKitNumber', () => {
|
|
|
230
389
|
const result = skNumber1.div(skNumber2);
|
|
231
390
|
|
|
232
391
|
// The exact result of 1.000000000000000010 / -2 is -0.500000000000000005
|
|
233
|
-
expect(result.
|
|
234
|
-
expect(result.
|
|
392
|
+
expect(result.getValue('string')).toBe('-0.500000000000000005');
|
|
393
|
+
expect(result.getBaseValue('bigint')).toBe(-500000000000000005n);
|
|
235
394
|
});
|
|
236
395
|
|
|
237
396
|
test('divides a number with 2 decimals by a negative number with more decimals', () => {
|
|
@@ -241,8 +400,8 @@ describe('SwapKitNumber', () => {
|
|
|
241
400
|
const result = skNumber1.div(skNumber2);
|
|
242
401
|
|
|
243
402
|
// The exact result of 2 / -0.000005 is -400000
|
|
244
|
-
expect(result.
|
|
245
|
-
expect(result.
|
|
403
|
+
expect(result.getValue('string')).toBe('-400000');
|
|
404
|
+
expect(result.getBaseValue('bigint')).toBe(-40000000n);
|
|
246
405
|
});
|
|
247
406
|
});
|
|
248
407
|
|
|
@@ -252,8 +411,8 @@ describe('SwapKitNumber', () => {
|
|
|
252
411
|
const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
|
|
253
412
|
|
|
254
413
|
const result = skNumber1.mul(skNumber2);
|
|
255
|
-
expect(result.
|
|
256
|
-
expect(result.
|
|
414
|
+
expect(result.getValue('string')).toBe('987654321000000987654321000');
|
|
415
|
+
expect(result.getBaseValue('bigint')).toBe(987654321000000987654321000000000000000000000n);
|
|
257
416
|
});
|
|
258
417
|
|
|
259
418
|
test('divide huge numbers', () => {
|
|
@@ -261,8 +420,8 @@ describe('SwapKitNumber', () => {
|
|
|
261
420
|
const skNumber2 = new SwapKitNumber({ value: 987_654_321_000, decimal: 18 });
|
|
262
421
|
|
|
263
422
|
const result = skNumber1.div(skNumber2);
|
|
264
|
-
expect(result.
|
|
265
|
-
expect(result.
|
|
423
|
+
expect(result.getValue('string')).toBe('1012.4999999873447625');
|
|
424
|
+
expect(result.getBaseValue('bigint')).toBe(1012499999987344762500n);
|
|
266
425
|
});
|
|
267
426
|
});
|
|
268
427
|
|