1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const index_1 = require("./index");
|
4 | const testCases = [
|
5 | [
|
6 | 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',
|
7 | false,
|
8 | 'X7AcgcsBL6XDcUb289X4mJ8djcdyKaB5hJDWMArnXr61cqZ',
|
9 | 'T719a5UwUCnEs54UsxG9CJYYDhwmFCqkr7wxCcNcfZ6p5GZ'
|
10 | ],
|
11 | [
|
12 | 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',
|
13 | 1,
|
14 | 'X7AcgcsBL6XDcUb289X4mJ8djcdyKaGZMhc9YTE92ehJ2Fu',
|
15 | 'T719a5UwUCnEs54UsxG9CJYYDhwmFCvbJNZbi37gBGkRkbE'
|
16 | ],
|
17 | [
|
18 | 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',
|
19 | 14,
|
20 | 'X7AcgcsBL6XDcUb289X4mJ8djcdyKaGo2K5VpXpmCqbV2gS',
|
21 | 'T719a5UwUCnEs54UsxG9CJYYDhwmFCvqXVCALUGJGSbNV3x'
|
22 | ],
|
23 | [
|
24 | 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',
|
25 | 11747,
|
26 | 'X7AcgcsBL6XDcUb289X4mJ8djcdyKaLFuhLRuNXPrDeJd9A',
|
27 | 'T719a5UwUCnEs54UsxG9CJYYDhwmFCziiNHtUukubF2Mg6t'
|
28 | ],
|
29 | [
|
30 | 'rLczgQHxPhWtjkaQqn3Q6UM8AbRbbRvs5K',
|
31 | false,
|
32 | 'XVZVpQj8YSVpNyiwXYSqvQoQqgBttTxAZwMcuJd4xteQHyt',
|
33 | 'TVVrSWtmQQssgVcmoMBcFQZKKf56QscyWLKnUyiuZW8ALU4'
|
34 | ],
|
35 | [
|
36 | 'rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo',
|
37 | false,
|
38 | 'X7YenJqxv3L66CwhBSfd3N8RzGXxYqPopMGMsCcpho79rex',
|
39 | 'T77wVQzA8ntj9wvCTNiQpNYLT5hmhRsFyXDoMLqYC4BzQtV'
|
40 | ],
|
41 | [
|
42 | 'rpZc4mVfWUif9CRoHRKKcmhu1nx2xktxBo',
|
43 | 58,
|
44 | 'X7YenJqxv3L66CwhBSfd3N8RzGXxYqV56ZkTCa9UCzgaao1',
|
45 | 'T77wVQzA8ntj9wvCTNiQpNYLT5hmhR9kej6uxm4jGcQD7rZ'
|
46 | ],
|
47 | [
|
48 | 'rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW',
|
49 | 23480,
|
50 | 'X7d3eHCXzwBeWrZec1yT24iZerQjYL8m8zCJ16ACxu1BrBY',
|
51 | 'T7YChPFWifjCAXLEtg5N74c7fSAYsvSokwcmBPBUZWhxH5P'
|
52 | ],
|
53 | [
|
54 | 'rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW',
|
55 | 11747,
|
56 | 'X7d3eHCXzwBeWrZec1yT24iZerQjYLo2CJf8oVC5CMWey5m',
|
57 | 'T7YChPFWifjCAXLEtg5N74c7fSAYsvTcc7nEfwuEEvn5Q4w'
|
58 | ],
|
59 | [
|
60 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
61 | false,
|
62 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtV5fdx1mHp98tDMoQXb',
|
63 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQn49b3qD26PK7FcGSKE'
|
64 | ],
|
65 | [
|
66 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
67 | 0,
|
68 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtV8AqEL4xcZj5whKbmc',
|
69 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnSy8RHqGHoGJ59spi2'
|
70 | ],
|
71 | [
|
72 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
73 | 1,
|
74 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtV8xvjGQTYPiAx6gwDC',
|
75 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnSz1uDimDdPYXzSpyw'
|
76 | ],
|
77 | [
|
78 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
79 | 2,
|
80 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtV8zpDURx7DzBCkrQE7',
|
81 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnTryP9tG9TW8GeMBmd'
|
82 | ],
|
83 | [
|
84 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
85 | 32,
|
86 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtVoYiC9UvKfjKar4LJe',
|
87 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnT2oqaCDzMEuCDAj1j'
|
88 | ],
|
89 | [
|
90 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
91 | 276,
|
92 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtVoKj3MnFGMXEFMnvJV',
|
93 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnTMgJJYfAbsiPsc6Zg'
|
94 | ],
|
95 | [
|
96 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
97 | 65591,
|
98 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtVozpjdhPQVdt3ghaWw',
|
99 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQn7ryu2W6njw7mT1jmS'
|
100 | ],
|
101 | [
|
102 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
103 | 16781933,
|
104 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtVqrDUk2vDpkTjPsY73',
|
105 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnVsw45sDtGHhLi27Qa'
|
106 | ],
|
107 | [
|
108 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
109 | 4294967294,
|
110 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtV1kAsixQTdMjbWi39u',
|
111 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnX8tDFQ53itLNqs6vU'
|
112 | ],
|
113 | [
|
114 | 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf',
|
115 | 4294967295,
|
116 | 'XVLhHMPHU98es4dbozjVtdWzVrDjtV18pX8yuPT7y4xaEHi',
|
117 | 'TVE26TYGhfLC7tQDno7G8dGtxSkYQnXoy6kSDh6rZzApc69'
|
118 | ],
|
119 | [
|
120 | 'rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY',
|
121 | false,
|
122 | 'XV5sbjUmgPpvXv4ixFWZ5ptAYZ6PD2gYsjNFQLKYW33DzBm',
|
123 | 'TVd2rqMkYL2AyS97NdELcpeiprNBjwLZzuUG5rZnaewsahi'
|
124 | ],
|
125 | [
|
126 | 'rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY',
|
127 | 0,
|
128 | 'XV5sbjUmgPpvXv4ixFWZ5ptAYZ6PD2m4Er6SnvjVLpMWPjR',
|
129 | 'TVd2rqMkYL2AyS97NdELcpeiprNBjwRQUBetPbyrvXSTuxU'
|
130 | ],
|
131 | [
|
132 | 'rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY',
|
133 | 13371337,
|
134 | 'XV5sbjUmgPpvXv4ixFWZ5ptAYZ6PD2qwGkhgc48zzcx6Gkr',
|
135 | 'TVd2rqMkYL2AyS97NdELcpeiprNBjwVUDvp3vhpXbNhLwJi'
|
136 | ]
|
137 | ];
|
138 | [false, true].forEach(isTestAddress => {
|
139 | const MAX_32_BIT_UNSIGNED_INT = 4294967295;
|
140 | const network = isTestAddress ? ' (test)' : ' (main)';
|
141 | for (const i in testCases) {
|
142 | const testCase = testCases[i];
|
143 | const classicAddress = testCase[0];
|
144 | const tag = testCase[1] !== false ? testCase[1] : false;
|
145 | const xAddress = isTestAddress ? testCase[3] : testCase[2];
|
146 | test(`Converts ${classicAddress}${tag ? ':' + tag : ''} to ${xAddress}${network}`, () => {
|
147 | expect(index_1.classicAddressToXAddress(classicAddress, tag, isTestAddress)).toBe(xAddress);
|
148 | const myClassicAddress = index_1.xAddressToClassicAddress(xAddress);
|
149 | expect(myClassicAddress).toEqual({
|
150 | classicAddress,
|
151 | tag,
|
152 | test: isTestAddress
|
153 | });
|
154 | expect(index_1.isValidXAddress(xAddress)).toBe(true);
|
155 | });
|
156 | }
|
157 | {
|
158 | const classicAddress = 'rGWrZyQqhTp9Xu7G5Pkayo7bXjH4k4QYpf';
|
159 | const tag = MAX_32_BIT_UNSIGNED_INT + 1;
|
160 | test(`Converting ${classicAddress}:${tag}${network} throws`, () => {
|
161 | expect(() => {
|
162 | index_1.classicAddressToXAddress(classicAddress, tag, isTestAddress);
|
163 | }).toThrowError(new Error('Invalid tag'));
|
164 | });
|
165 | }
|
166 | {
|
167 | const classicAddress = 'r';
|
168 | test(`Invalid classic address: Converting ${classicAddress}${network} throws`, () => {
|
169 | expect(() => {
|
170 | index_1.classicAddressToXAddress(classicAddress, false, isTestAddress);
|
171 | }).toThrowError(new Error('invalid_input_size: decoded data must have length >= 5'));
|
172 | });
|
173 | }
|
174 | {
|
175 | const highAndLowAccounts = [
|
176 | Buffer.from('00'.repeat(20), 'hex'),
|
177 | Buffer.from('00'.repeat(19) + '01', 'hex'),
|
178 | Buffer.from('01'.repeat(20), 'hex'),
|
179 | Buffer.from('FF'.repeat(20), 'hex')
|
180 | ];
|
181 | highAndLowAccounts.forEach(accountId => {
|
182 | [false, 0, 1, MAX_32_BIT_UNSIGNED_INT].forEach(t => {
|
183 | const tag = t;
|
184 | const xAddress = index_1.encodeXAddress(accountId, tag, isTestAddress);
|
185 | test(`Encoding ${accountId.toString('hex')}${tag ? ':' + tag : ''} to ${xAddress} has expected length`, () => {
|
186 | expect(xAddress.length).toBe(47);
|
187 | });
|
188 | });
|
189 | });
|
190 | }
|
191 | });
|
192 | {
|
193 | const xAddress = 'XVLhHMPHU98es4dbozjVtdWzVrDjtV5fdx1mHp98tDMoQXa';
|
194 | test(`Invalid X-address (bad checksum): Converting ${xAddress} throws`, () => {
|
195 | expect(() => {
|
196 | index_1.xAddressToClassicAddress(xAddress);
|
197 | }).toThrowError(new Error('checksum_invalid'));
|
198 | });
|
199 | }
|
200 | {
|
201 | const xAddress = 'dGzKGt8CVpWoa8aWL1k18tAdy9Won3PxynvbbpkAqp3V47g';
|
202 | test(`Invalid X-address (bad prefix): Converting ${xAddress} throws`, () => {
|
203 | expect(() => {
|
204 | index_1.xAddressToClassicAddress(xAddress);
|
205 | }).toThrowError(new Error('Invalid X-address: bad prefix'));
|
206 | });
|
207 | }
|
208 | test(`Invalid X-address (64-bit tag) throws`, () => {
|
209 | expect(() => {
|
210 |
|
211 |
|
212 |
|
213 |
|
214 |
|
215 | index_1.xAddressToClassicAddress('XVLhHMPHU98es4dbozjVtdWzVrDjtV18pX8zeUygYrCgrPh');
|
216 | }).toThrowError('Unsupported X-address');
|
217 | });
|
218 | test(`Invalid Account ID throws`, () => {
|
219 | expect(() => {
|
220 | index_1.encodeXAddress(Buffer.from('00'.repeat(19), 'hex'), false, false);
|
221 | }).toThrowError('Account ID must be 20 bytes');
|
222 | });
|
223 | test(`isValidXAddress returns false for invalid X-address`, () => {
|
224 | expect(index_1.isValidXAddress('XVLhHMPHU98es4dbozjVtdWzVrDjtV18pX8zeUygYrCgrPh')).toBe(false);
|
225 | });
|
226 |
|
\ | No newline at end of file |