|
1 |
| -import { DECIMAL_FUEL, bn } from 'fuels'; |
| 1 | +import { DECIMAL_FUEL, DECIMAL_WEI, bn } from 'fuels'; |
2 | 2 | import { convertToUsd } from './convertToUsd';
|
3 | 3 |
|
4 | 4 | const MOCK_ETH_RATE = 2742.15;
|
5 | 5 | const MOCK_FUEL_RATE = 0.01167;
|
| 6 | +const MOCK_SCIENTIFIC_RATE = 1e-7; |
6 | 7 | const MOCK_REALLY_LOW_RATE = 0.0000007427;
|
7 | 8 |
|
8 | 9 | describe('Convert to USD', () => {
|
@@ -56,6 +57,36 @@ describe('Convert to USD', () => {
|
56 | 57 | expect(value).toBe(24699091436.38);
|
57 | 58 | });
|
58 | 59 |
|
| 60 | + it('should be able to handle large amounts with high precision and regular rate', () => { |
| 61 | + const { formatted, value } = convertToUsd( |
| 62 | + bn('123456789999999999900000000000000001'), |
| 63 | + DECIMAL_WEI, |
| 64 | + MOCK_ETH_RATE |
| 65 | + ); |
| 66 | + expect(formatted).toBe('$338,537,036,698,499,999,725.78'); |
| 67 | + expect(value).toBe(338537036698500000000); |
| 68 | + }); |
| 69 | + |
| 70 | + it('should be able to handle large amounts with high precision decimal and low rate', () => { |
| 71 | + const { formatted, value } = convertToUsd( |
| 72 | + bn('123456789999999999900000000000000001'), |
| 73 | + DECIMAL_WEI, |
| 74 | + MOCK_REALLY_LOW_RATE |
| 75 | + ); |
| 76 | + expect(formatted).toBe('$91,691,357,932.99'); |
| 77 | + expect(value).toBe(91691357932.99); |
| 78 | + }); |
| 79 | + |
| 80 | + it('should be able to handle scientific notation', () => { |
| 81 | + const { formatted, value } = convertToUsd( |
| 82 | + bn('10000000'), |
| 83 | + DECIMAL_WEI, |
| 84 | + MOCK_SCIENTIFIC_RATE |
| 85 | + ); |
| 86 | + expect(formatted).toBe('$0.000000000000000001'); |
| 87 | + expect(value).toBe(1e-18); |
| 88 | + }); |
| 89 | + |
59 | 90 | it('should be able to handle lower rates', () => {
|
60 | 91 | const { formatted, value } = convertToUsd(
|
61 | 92 | bn(100_000_000_000),
|
|
0 commit comments