@aztec/foundation 0.7.10 → 0.8.5
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/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +9 -5
- package/dest/abi/function_selector.js +1 -1
- package/dest/abi/index.d.ts +1 -0
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +2 -1
- package/dest/abi/utils.d.ts +20 -0
- package/dest/abi/utils.d.ts.map +1 -0
- package/dest/abi/utils.js +25 -0
- package/dest/fields/coordinate.d.ts +5 -5
- package/dest/fields/coordinate.js +5 -5
- package/dest/fields/fields.d.ts +4 -0
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +9 -1
- package/dest/fifo/memory_fifo.js +2 -2
- package/dest/json-rpc/client/json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/json_rpc_client.js +8 -7
- package/dest/json-rpc/convert.js +2 -2
- package/dest/json-rpc/server/json_proxy.d.ts.map +1 -1
- package/dest/json-rpc/server/json_proxy.js +5 -4
- package/dest/json-rpc/server/json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/json_rpc_server.js +52 -7
- package/dest/log/index.d.ts +4 -4
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +1 -1
- package/dest/log/logger.d.ts +7 -3
- package/dest/log/logger.d.ts.map +1 -1
- package/dest/log/logger.js +36 -16
- package/dest/timer/elapsed.d.ts +14 -0
- package/dest/timer/elapsed.d.ts.map +1 -0
- package/dest/timer/elapsed.js +22 -0
- package/dest/timer/index.d.ts +1 -0
- package/dest/timer/index.d.ts.map +1 -1
- package/dest/timer/index.js +2 -1
- package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +1 -1
- package/dest/transport/dispatch/create_dispatch_fn.js +3 -2
- package/dest/transport/transport_client.d.ts.map +1 -1
- package/dest/transport/transport_client.js +4 -3
- package/dest/wasm/wasm_module.js +4 -4
- package/package.json +65 -3
- package/src/abi/encoder.ts +8 -4
- package/src/abi/function_selector.ts +1 -1
- package/src/abi/index.ts +1 -0
- package/src/abi/utils.ts +28 -0
- package/src/fields/coordinate.ts +5 -5
- package/src/fields/fields.ts +10 -0
- package/src/fifo/memory_fifo.ts +1 -1
- package/src/json-rpc/client/json_rpc_client.ts +7 -6
- package/src/json-rpc/convert.ts +2 -2
- package/src/json-rpc/server/json_proxy.ts +5 -3
- package/src/json-rpc/server/json_rpc_server.ts +50 -6
- package/src/log/index.ts +5 -4
- package/src/log/logger.ts +45 -19
- package/src/timer/elapsed.ts +23 -0
- package/src/timer/index.ts +1 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +3 -1
- package/src/transport/transport_client.ts +3 -2
- package/src/wasm/wasm_module.ts +3 -3
- package/.eslintrc.cjs +0 -134
- package/.prettierrc.json +0 -10
- package/.tsbuildinfo +0 -1
- package/dest/abi/decoder.test.d.ts +0 -2
- package/dest/abi/decoder.test.d.ts.map +0 -1
- package/dest/abi/decoder.test.js +0 -70
- package/dest/abi/encoder.test.d.ts +0 -2
- package/dest/abi/encoder.test.d.ts.map +0 -1
- package/dest/abi/encoder.test.js +0 -74
- package/dest/async-map/async_map.test.d.ts +0 -2
- package/dest/async-map/async_map.test.d.ts.map +0 -1
- package/dest/async-map/async_map.test.js +0 -9
- package/dest/bigint-buffer/bigint-buffer.test.d.ts +0 -2
- package/dest/bigint-buffer/bigint-buffer.test.d.ts.map +0 -1
- package/dest/bigint-buffer/bigint-buffer.test.js +0 -18
- package/dest/committable/committable.test.d.ts +0 -2
- package/dest/committable/committable.test.d.ts.map +0 -1
- package/dest/committable/committable.test.js +0 -26
- package/dest/crypto/random/index.test.d.ts +0 -2
- package/dest/crypto/random/index.test.d.ts.map +0 -1
- package/dest/crypto/random/index.test.js +0 -13
- package/dest/crypto/sha256/index.test.d.ts +0 -2
- package/dest/crypto/sha256/index.test.d.ts.map +0 -1
- package/dest/crypto/sha256/index.test.js +0 -11
- package/dest/eth-address/eth_address.test.d.ts +0 -2
- package/dest/eth-address/eth_address.test.d.ts.map +0 -1
- package/dest/eth-address/eth_address.test.js +0 -95
- package/dest/fields/coordinate.test.d.ts +0 -2
- package/dest/fields/coordinate.test.d.ts.map +0 -1
- package/dest/fields/coordinate.test.js +0 -22
- package/dest/fields/grumpkin_scalar.test.d.ts +0 -2
- package/dest/fields/grumpkin_scalar.test.d.ts.map +0 -1
- package/dest/fields/grumpkin_scalar.test.js +0 -45
- package/dest/json-rpc/client/json_rpc_client.test.d.ts +0 -2
- package/dest/json-rpc/client/json_rpc_client.test.d.ts.map +0 -1
- package/dest/json-rpc/client/json_rpc_client.test.js +0 -20
- package/dest/json-rpc/convert.test.d.ts +0 -2
- package/dest/json-rpc/convert.test.d.ts.map +0 -1
- package/dest/json-rpc/convert.test.js +0 -68
- package/dest/json-rpc/server/json_rpc_server.test.d.ts +0 -2
- package/dest/json-rpc/server/json_rpc_server.test.d.ts.map +0 -1
- package/dest/json-rpc/server/json_rpc_server.test.js +0 -22
- package/dest/log/log_history.test.d.ts +0 -2
- package/dest/log/log_history.test.d.ts.map +0 -1
- package/dest/log/log_history.test.js +0 -78
- package/dest/mutex/mutex.test.d.ts +0 -9
- package/dest/mutex/mutex.test.d.ts.map +0 -1
- package/dest/mutex/mutex.test.js +0 -58
- package/dest/serialize/buffer_reader.test.d.ts +0 -2
- package/dest/serialize/buffer_reader.test.d.ts.map +0 -1
- package/dest/serialize/buffer_reader.test.js +0 -156
- package/dest/serialize/serialize.test.d.ts +0 -2
- package/dest/serialize/serialize.test.d.ts.map +0 -1
- package/dest/serialize/serialize.test.js +0 -68
- package/dest/wasm/wasm_module.test.d.ts +0 -2
- package/dest/wasm/wasm_module.test.d.ts.map +0 -1
- package/dest/wasm/wasm_module.test.js +0 -24
- package/src/abi/decoder.test.ts +0 -77
- package/src/abi/encoder.test.ts +0 -80
- package/src/async-map/async_map.test.ts +0 -9
- package/src/bigint-buffer/bigint-buffer.test.ts +0 -21
- package/src/committable/committable.test.ts +0 -32
- package/src/crypto/random/index.test.ts +0 -13
- package/src/crypto/sha256/index.test.ts +0 -14
- package/src/eth-address/eth_address.test.ts +0 -114
- package/src/fields/coordinate.test.ts +0 -26
- package/src/fields/grumpkin_scalar.test.ts +0 -55
- package/src/json-rpc/client/json_rpc_client.test.ts +0 -21
- package/src/json-rpc/convert.test.ts +0 -77
- package/src/json-rpc/server/json_rpc_server.test.ts +0 -24
- package/src/log/log_history.test.ts +0 -88
- package/src/mutex/mutex.test.ts +0 -76
- package/src/serialize/buffer_reader.test.ts +0 -176
- package/src/serialize/serialize.test.ts +0 -89
- package/src/wasm/wasm_module.test.ts +0 -28
- package/tsconfig.dest.json +0 -5
- package/tsconfig.json +0 -10
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { jest } from '@jest/globals';
|
|
2
|
-
import { randomBytes } from '../crypto/index.js';
|
|
3
|
-
import { Fq, Fr } from '../fields/fields.js';
|
|
4
|
-
import { BufferReader } from './buffer_reader.js';
|
|
5
|
-
import { serializeBufferArrayToVector } from './free_funcs.js';
|
|
6
|
-
const ARRAY = Array.from(Array(32)).map((_, idx) => (idx % 2 === 0 ? 0 : 1));
|
|
7
|
-
const BUFFER = Buffer.from(ARRAY);
|
|
8
|
-
const NUMBER = 65537;
|
|
9
|
-
const sizes = [16, 48, 32];
|
|
10
|
-
describe('buffer reader', () => {
|
|
11
|
-
let bufferReader;
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
bufferReader = new BufferReader(BUFFER);
|
|
14
|
-
});
|
|
15
|
-
describe('readNumber', () => {
|
|
16
|
-
it('should return number', () => {
|
|
17
|
-
expect(bufferReader.readNumber()).toBe(NUMBER);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
describe('readBoolean', () => {
|
|
21
|
-
it('should read true when 1 and false when 0', () => {
|
|
22
|
-
ARRAY.forEach(element => {
|
|
23
|
-
if (element !== 0) {
|
|
24
|
-
expect(bufferReader.readBoolean()).toBe(true);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
expect(bufferReader.readBoolean()).toBe(false);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
describe('readBytes', () => {
|
|
33
|
-
it('should read buffer by slices', () => {
|
|
34
|
-
expect(bufferReader.readBytes(2)).toEqual(Buffer.from(ARRAY.slice(0, 2)));
|
|
35
|
-
expect(bufferReader.readBytes(3)).toEqual(Buffer.from(ARRAY.slice(2, 5)));
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
describe('readFr', () => {
|
|
39
|
-
it('should get Fr from buffer', () => {
|
|
40
|
-
expect(bufferReader.readFr()).toEqual(Fr.fromBuffer(BUFFER));
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
describe('readFq', () => {
|
|
44
|
-
it('should get Fq from buffer', () => {
|
|
45
|
-
expect(bufferReader.readFq()).toEqual(Fq.fromBuffer(BUFFER));
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
describe('readNumberVector', () => {
|
|
49
|
-
let vectorBufferReader;
|
|
50
|
-
beforeEach(() => {
|
|
51
|
-
const uintArr = [7, 13, 16];
|
|
52
|
-
const uintBufArr = uintArr.map(num => {
|
|
53
|
-
const uintBuf = Buffer.alloc(4);
|
|
54
|
-
uintBuf.writeUInt32BE(num, 0);
|
|
55
|
-
return uintBuf;
|
|
56
|
-
});
|
|
57
|
-
const uintArrVec = serializeBufferArrayToVector(uintBufArr);
|
|
58
|
-
vectorBufferReader = new BufferReader(uintArrVec);
|
|
59
|
-
});
|
|
60
|
-
it('should read number vector', () => {
|
|
61
|
-
expect(vectorBufferReader.readNumberVector()).toEqual([7, 13, 16]);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('readVector', () => {
|
|
65
|
-
it('should read vector and generate result array', () => {
|
|
66
|
-
const fn = jest.fn();
|
|
67
|
-
let i = -1;
|
|
68
|
-
const result = bufferReader.readVector({
|
|
69
|
-
fromBuffer: () => {
|
|
70
|
-
fn();
|
|
71
|
-
i++;
|
|
72
|
-
return i;
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
expect(result.length).toBe(NUMBER);
|
|
76
|
-
expect(result).toEqual(Array.from(Array(NUMBER).keys()));
|
|
77
|
-
expect(fn).toHaveBeenCalledTimes(NUMBER);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
describe('readArray', () => {
|
|
81
|
-
it('should read array from buffer', () => {
|
|
82
|
-
const fn = jest.fn();
|
|
83
|
-
let i = -1;
|
|
84
|
-
expect(bufferReader.readArray(10, {
|
|
85
|
-
fromBuffer: () => {
|
|
86
|
-
fn();
|
|
87
|
-
i++;
|
|
88
|
-
return i;
|
|
89
|
-
},
|
|
90
|
-
})).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
describe('readBufferArray', () => {
|
|
94
|
-
it('should read variable length array from buffer', () => {
|
|
95
|
-
// Testing `readBufferArray` with a buffer that ONLY contains the data that will be read.
|
|
96
|
-
// No `size` variable is passed in this case.
|
|
97
|
-
const bufferArray = [];
|
|
98
|
-
let buf = Buffer.alloc(0);
|
|
99
|
-
for (const size of sizes) {
|
|
100
|
-
const sizeBuf = Buffer.alloc(4);
|
|
101
|
-
sizeBuf.writeUInt32BE(size);
|
|
102
|
-
const bytes = randomBytes(size);
|
|
103
|
-
const ranBuf = Buffer.concat([sizeBuf, bytes]);
|
|
104
|
-
bufferArray.push(bytes);
|
|
105
|
-
buf = Buffer.concat([buf, ranBuf]);
|
|
106
|
-
}
|
|
107
|
-
const reader = BufferReader.asReader(buf);
|
|
108
|
-
const res = reader.readBufferArray();
|
|
109
|
-
expect(res).toEqual(bufferArray);
|
|
110
|
-
});
|
|
111
|
-
it('should read variable length array from buffer with other contents', () => {
|
|
112
|
-
// testing `readBufferArray` with a buffer that includes some other data before and after the data that will be read.
|
|
113
|
-
// The `size` variable needs to be passed in this case.
|
|
114
|
-
const bufferArray = [];
|
|
115
|
-
const prefixBytes = randomBytes(32);
|
|
116
|
-
const postfixBytes = randomBytes(16);
|
|
117
|
-
let bufLen = 0;
|
|
118
|
-
let buf = Buffer.alloc(32, prefixBytes);
|
|
119
|
-
for (const size of sizes) {
|
|
120
|
-
const sizeBuf = Buffer.alloc(4);
|
|
121
|
-
sizeBuf.writeUInt32BE(size);
|
|
122
|
-
const bytes = randomBytes(size);
|
|
123
|
-
const ranBuf = Buffer.concat([sizeBuf, bytes]);
|
|
124
|
-
buf = Buffer.concat([buf, ranBuf]);
|
|
125
|
-
bufferArray.push(bytes);
|
|
126
|
-
bufLen += ranBuf.length;
|
|
127
|
-
}
|
|
128
|
-
buf = Buffer.concat([buf, postfixBytes]);
|
|
129
|
-
const reader = BufferReader.asReader(buf);
|
|
130
|
-
const preRes = reader.readBytes(prefixBytes.length);
|
|
131
|
-
expect(preRes).toEqual(prefixBytes);
|
|
132
|
-
expect(reader.readBufferArray(bufLen)).toEqual(bufferArray);
|
|
133
|
-
expect(reader.readBytes(postfixBytes.length)).toEqual(postfixBytes);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
describe('readObject', () => {
|
|
137
|
-
it('should read object from buffer', () => {
|
|
138
|
-
const fn = jest.fn();
|
|
139
|
-
const object = bufferReader.readObject({
|
|
140
|
-
fromBuffer: (reader) => {
|
|
141
|
-
fn();
|
|
142
|
-
return { value: 'test-string', buffer: reader };
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
expect(object.value).toEqual('test-string');
|
|
146
|
-
expect(object.buffer).toEqual(bufferReader);
|
|
147
|
-
expect(fn).toHaveBeenCalledTimes(1);
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
describe('peekBytes', () => {
|
|
151
|
-
it('should return bytes from buffer', () => {
|
|
152
|
-
expect(bufferReader.peekBytes(10)).toEqual(Buffer.from(ARRAY.slice(0, 10)));
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9idWZmZXJfcmVhZGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDckIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRTNCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLElBQUksWUFBMEIsQ0FBQztJQUUvQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFD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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.test.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from '../crypto/index.js';
|
|
2
|
-
import { Fr } from '../fields/fields.js';
|
|
3
|
-
import { deserializeArrayFromVector, deserializeBufferFromVector, deserializeField, deserializeUInt32, serializeBufferArrayToVector, serializeBufferToVector, } from './index.js';
|
|
4
|
-
describe('serialize', () => {
|
|
5
|
-
it('serialize buffer to vector and deserialize it back', () => {
|
|
6
|
-
const data = randomBytes(32);
|
|
7
|
-
const vector = serializeBufferToVector(data);
|
|
8
|
-
expect(vector.length).toBe(36);
|
|
9
|
-
const recovered = deserializeBufferFromVector(vector);
|
|
10
|
-
expect(recovered.elem).toEqual(data);
|
|
11
|
-
expect(recovered.adv).toEqual(4 + 32);
|
|
12
|
-
const paddedVector = Buffer.concat([randomBytes(10), vector, randomBytes(20)]);
|
|
13
|
-
const recovered2 = deserializeBufferFromVector(paddedVector, 10);
|
|
14
|
-
expect(recovered2.elem).toEqual(data);
|
|
15
|
-
expect(recovered2.adv).toEqual(4 + 32);
|
|
16
|
-
});
|
|
17
|
-
it('deserialize uint32', () => {
|
|
18
|
-
const uintBuf = Buffer.alloc(4);
|
|
19
|
-
uintBuf.writeUInt32BE(19, 0);
|
|
20
|
-
const recovered = deserializeUInt32(uintBuf);
|
|
21
|
-
expect(recovered.elem).toBe(19);
|
|
22
|
-
expect(recovered.adv).toBe(4);
|
|
23
|
-
const paddedBuf = Buffer.concat([randomBytes(10), uintBuf, randomBytes(20)]);
|
|
24
|
-
const recovered2 = deserializeUInt32(paddedBuf, 10);
|
|
25
|
-
expect(recovered2.elem).toBe(19);
|
|
26
|
-
expect(recovered2.adv).toBe(4);
|
|
27
|
-
});
|
|
28
|
-
it('deserialize field', () => {
|
|
29
|
-
const field = Fr.random();
|
|
30
|
-
const recovered = deserializeField(field.toBuffer());
|
|
31
|
-
expect(recovered.elem).toEqual(field);
|
|
32
|
-
expect(recovered.adv).toBe(32);
|
|
33
|
-
const paddedBuf = Buffer.concat([randomBytes(10), field.toBuffer(), randomBytes(20)]);
|
|
34
|
-
const recovered2 = deserializeField(paddedBuf, 10);
|
|
35
|
-
expect(recovered2.elem).toEqual(field);
|
|
36
|
-
expect(recovered2.adv).toBe(32);
|
|
37
|
-
});
|
|
38
|
-
it('serialize buffer array to vector and deserialize it back', () => {
|
|
39
|
-
// Array of uint32
|
|
40
|
-
const uintArr = [7, 13, 16];
|
|
41
|
-
const uintBufArr = uintArr.map(num => {
|
|
42
|
-
const uintBuf = Buffer.alloc(4);
|
|
43
|
-
uintBuf.writeUInt32BE(num, 0);
|
|
44
|
-
return uintBuf;
|
|
45
|
-
});
|
|
46
|
-
const uintArrVec = serializeBufferArrayToVector(uintBufArr);
|
|
47
|
-
expect(uintArrVec.length).toBe(4 + 4 * 3);
|
|
48
|
-
const recoveredUintArr = deserializeArrayFromVector(deserializeUInt32, uintArrVec);
|
|
49
|
-
expect(recoveredUintArr.elem).toEqual(uintArr);
|
|
50
|
-
expect(recoveredUintArr.adv).toEqual(4 + 4 * 3);
|
|
51
|
-
const paddedUintArrVec = Buffer.concat([randomBytes(10), uintArrVec, randomBytes(20)]);
|
|
52
|
-
const recoveredUintArr2 = deserializeArrayFromVector(deserializeUInt32, paddedUintArrVec, 10);
|
|
53
|
-
expect(recoveredUintArr2.elem).toEqual(uintArr);
|
|
54
|
-
expect(recoveredUintArr2.adv).toEqual(4 + 4 * 3);
|
|
55
|
-
// Array of field
|
|
56
|
-
const fieldArr = [Fr.random(), Fr.random(), Fr.random()];
|
|
57
|
-
const fieldArrVec = serializeBufferArrayToVector(fieldArr.map(fr => fr.toBuffer()));
|
|
58
|
-
expect(fieldArrVec.length).toBe(4 + 32 * 3);
|
|
59
|
-
const recoveredFieldArr = deserializeArrayFromVector(deserializeField, fieldArrVec);
|
|
60
|
-
expect(recoveredFieldArr.elem).toEqual(fieldArr);
|
|
61
|
-
expect(recoveredFieldArr.adv).toEqual(4 + 32 * 3);
|
|
62
|
-
const paddedFieldVec = Buffer.concat([randomBytes(10), fieldArrVec, randomBytes(20)]);
|
|
63
|
-
const recoveredFieldArr2 = deserializeArrayFromVector(deserializeField, paddedFieldVec, 10);
|
|
64
|
-
expect(recoveredFieldArr2.elem).toEqual(fieldArr);
|
|
65
|
-
expect(recoveredFieldArr2.adv).toEqual(4 + 32 * 3);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplL3NlcmlhbGl6ZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxFQUNMLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0IsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEdBQ3hCLE1BQU0sWUFBWSxDQUFDO0FBRXBCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBQ3pCLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7UUFDNUQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9CLE1BQU0sU0FBUyxHQUFHLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUV0QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sVUFBVSxHQUFHLDJCQUEyQixDQUFDLFlB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wasm_module.test.d.ts","sourceRoot":"","sources":["../../src/wasm/wasm_module.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'fs/promises';
|
|
2
|
-
import { dirname } from 'path';
|
|
3
|
-
import { fileURLToPath } from '../url/index.js';
|
|
4
|
-
import { WasmModule } from './wasm_module.js';
|
|
5
|
-
/**
|
|
6
|
-
* Fetch a simple WASM.
|
|
7
|
-
*/
|
|
8
|
-
async function fetchCode() {
|
|
9
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
return await readFile(`${__dirname}/fixtures/gcd.wasm`);
|
|
11
|
-
}
|
|
12
|
-
describe('simple wasm', () => {
|
|
13
|
-
let wasm;
|
|
14
|
-
beforeAll(async () => {
|
|
15
|
-
wasm = new WasmModule(await fetchCode(), () => ({
|
|
16
|
-
/*no imports*/
|
|
17
|
-
}));
|
|
18
|
-
await wasm.init(1, 1, /* No init method */ null);
|
|
19
|
-
});
|
|
20
|
-
it('should call gcd with correct result', () => {
|
|
21
|
-
expect(wasm.call('gcd', 12312, 12123)).toBe(27);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbV9tb2R1bGUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93YXNtL3dhc21fbW9kdWxlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUM7O0dBRUc7QUFDSCxLQUFLLFVBQVUsU0FBUztJQUN0QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLE1BQU0sUUFBUSxDQUFDLEdBQUcsU0FBUyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixJQUFJLElBQWlCLENBQUM7SUFFdEIsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25CLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUMsY0FBYztTQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|
package/src/abi/decoder.test.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { ABIParameterVisibility, FunctionAbi } from './abi.js';
|
|
2
|
-
import { decodeFunctionSignature, decodeFunctionSignatureWithParameterNames } from './decoder.js';
|
|
3
|
-
|
|
4
|
-
describe('abi/decoder', () => {
|
|
5
|
-
// Copied from yarn-project/noir-contracts/src/contracts/test_contract/target/Test.json
|
|
6
|
-
const abi = {
|
|
7
|
-
name: 'testCodeGen',
|
|
8
|
-
parameters: [
|
|
9
|
-
{ name: 'aField', type: { kind: 'field' }, visibility: 'private' },
|
|
10
|
-
{ name: 'aBool', type: { kind: 'boolean' }, visibility: 'private' },
|
|
11
|
-
{ name: 'aNumber', type: { kind: 'integer', sign: 'unsigned', width: 32 }, visibility: 'private' },
|
|
12
|
-
{ name: 'anArray', type: { kind: 'array', length: 2, type: { kind: 'field' } }, visibility: 'private' },
|
|
13
|
-
{
|
|
14
|
-
name: 'aStruct',
|
|
15
|
-
type: {
|
|
16
|
-
kind: 'struct',
|
|
17
|
-
path: 'Test::DummyNote',
|
|
18
|
-
fields: [
|
|
19
|
-
{ name: 'amount', type: { kind: 'field' } },
|
|
20
|
-
{ name: 'secretHash', type: { kind: 'field' } },
|
|
21
|
-
],
|
|
22
|
-
},
|
|
23
|
-
visibility: 'private' as ABIParameterVisibility,
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
name: 'aDeepStruct',
|
|
27
|
-
type: {
|
|
28
|
-
kind: 'struct',
|
|
29
|
-
path: 'Test::DeepStruct',
|
|
30
|
-
fields: [
|
|
31
|
-
{ name: 'aField', type: { kind: 'field' } },
|
|
32
|
-
{ name: 'aBool', type: { kind: 'boolean' } },
|
|
33
|
-
{
|
|
34
|
-
name: 'aNote',
|
|
35
|
-
type: {
|
|
36
|
-
kind: 'struct',
|
|
37
|
-
path: 'Test::DummyNote',
|
|
38
|
-
fields: [
|
|
39
|
-
{ name: 'amount', type: { kind: 'field' } },
|
|
40
|
-
{ name: 'secretHash', type: { kind: 'field' } },
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: 'manyNotes',
|
|
46
|
-
type: {
|
|
47
|
-
kind: 'array',
|
|
48
|
-
length: 3,
|
|
49
|
-
type: {
|
|
50
|
-
kind: 'struct',
|
|
51
|
-
path: 'Test::DummyNote',
|
|
52
|
-
fields: [
|
|
53
|
-
{ name: 'amount', type: { kind: 'field' } },
|
|
54
|
-
{ name: 'secretHash', type: { kind: 'field' } },
|
|
55
|
-
],
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
},
|
|
61
|
-
visibility: 'private' as ABIParameterVisibility,
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
} as Pick<FunctionAbi, 'name' | 'parameters'>;
|
|
65
|
-
|
|
66
|
-
it('decodes function signature', () => {
|
|
67
|
-
expect(decodeFunctionSignature(abi.name, abi.parameters)).toMatchInlineSnapshot(
|
|
68
|
-
`"testCodeGen(Field,bool,u32,[Field;2],(Field,Field),(Field,bool,(Field,Field),[(Field,Field);3]))"`,
|
|
69
|
-
);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('decodes function signature with parameter names', () => {
|
|
73
|
-
expect(decodeFunctionSignatureWithParameterNames(abi.name, abi.parameters)).toMatchInlineSnapshot(
|
|
74
|
-
`"testCodeGen(aField: Field, aBool: bool, aNumber: u32, anArray: [Field;2], aStruct: (amount: Field, secretHash: Field), aDeepStruct: (aField: Field, aBool: bool, aNote: (amount: Field, secretHash: Field), manyNotes: [(amount: Field, secretHash: Field);3]))"`,
|
|
75
|
-
);
|
|
76
|
-
});
|
|
77
|
-
});
|
package/src/abi/encoder.test.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { ABIParameterVisibility, FunctionAbi, FunctionType } from './abi.js';
|
|
2
|
-
import { encodeArguments } from './encoder.js';
|
|
3
|
-
|
|
4
|
-
describe('abi/encoder', () => {
|
|
5
|
-
it('throws when passing string argument as field', () => {
|
|
6
|
-
const testFunctionAbi: FunctionAbi = {
|
|
7
|
-
name: 'constructor',
|
|
8
|
-
functionType: FunctionType.SECRET,
|
|
9
|
-
isInternal: false,
|
|
10
|
-
parameters: [
|
|
11
|
-
{
|
|
12
|
-
name: 'owner',
|
|
13
|
-
type: {
|
|
14
|
-
kind: 'field',
|
|
15
|
-
},
|
|
16
|
-
visibility: ABIParameterVisibility.SECRET,
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
returnTypes: [],
|
|
20
|
-
bytecode: '',
|
|
21
|
-
verificationKey: '',
|
|
22
|
-
};
|
|
23
|
-
const args = ['garbage'];
|
|
24
|
-
|
|
25
|
-
expect(() => encodeArguments(testFunctionAbi, args)).toThrowError('Invalid argument "garbage" of type field');
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('throws when passing string argument as integer', () => {
|
|
29
|
-
const testFunctionAbi: FunctionAbi = {
|
|
30
|
-
name: 'constructor',
|
|
31
|
-
functionType: FunctionType.SECRET,
|
|
32
|
-
isInternal: false,
|
|
33
|
-
parameters: [
|
|
34
|
-
{
|
|
35
|
-
name: 'isOwner',
|
|
36
|
-
type: {
|
|
37
|
-
sign: 'value',
|
|
38
|
-
width: 5,
|
|
39
|
-
kind: 'integer',
|
|
40
|
-
},
|
|
41
|
-
visibility: ABIParameterVisibility.SECRET,
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
returnTypes: [],
|
|
45
|
-
bytecode: '',
|
|
46
|
-
verificationKey: '',
|
|
47
|
-
};
|
|
48
|
-
const args = ['garbage'];
|
|
49
|
-
expect(() => encodeArguments(testFunctionAbi, args)).toThrowError('Cannot convert garbage to a BigInt');
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('throws when passing object argument as field', () => {
|
|
53
|
-
const testFunctionAbi: FunctionAbi = {
|
|
54
|
-
name: 'constructor',
|
|
55
|
-
functionType: FunctionType.SECRET,
|
|
56
|
-
isInternal: false,
|
|
57
|
-
parameters: [
|
|
58
|
-
{
|
|
59
|
-
name: 'owner',
|
|
60
|
-
type: {
|
|
61
|
-
kind: 'field',
|
|
62
|
-
},
|
|
63
|
-
visibility: ABIParameterVisibility.SECRET,
|
|
64
|
-
},
|
|
65
|
-
],
|
|
66
|
-
returnTypes: [],
|
|
67
|
-
bytecode: '',
|
|
68
|
-
verificationKey: '',
|
|
69
|
-
};
|
|
70
|
-
const args = [
|
|
71
|
-
{
|
|
72
|
-
value: 'garbage',
|
|
73
|
-
},
|
|
74
|
-
];
|
|
75
|
-
|
|
76
|
-
expect(() => encodeArguments(testFunctionAbi, args)).toThrowError(
|
|
77
|
-
'Argument for owner cannot be serialised to a field',
|
|
78
|
-
);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { asyncMap } from './index.js';
|
|
2
|
-
|
|
3
|
-
describe('asyncMap', () => {
|
|
4
|
-
test('execute list item sequentially', async () => {
|
|
5
|
-
const sleepAndLog = (ms: number, idx: number) => new Promise(resolve => setTimeout(() => resolve(idx), ms));
|
|
6
|
-
const result = await asyncMap([100, 0, 30, 1], (ms, i) => sleepAndLog(ms, i));
|
|
7
|
-
expect(result).toEqual([0, 1, 2, 3]);
|
|
8
|
-
});
|
|
9
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { toHex } from './index.js';
|
|
2
|
-
|
|
3
|
-
describe('bigint-buffer', () => {
|
|
4
|
-
describe('toHex', () => {
|
|
5
|
-
it('does not pad even length', () => {
|
|
6
|
-
expect(toHex(16n)).toEqual('0x10');
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
it('pads odd length hex to even length', () => {
|
|
10
|
-
expect(toHex(10n)).toEqual('0x0a');
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('pads zero to even length', () => {
|
|
14
|
-
expect(toHex(0n)).toEqual('0x00');
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('pads zero to 32 bytes', () => {
|
|
18
|
-
expect(toHex(0n, true)).toEqual('0x0000000000000000000000000000000000000000000000000000000000000000');
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Committable } from './committable.js';
|
|
2
|
-
|
|
3
|
-
describe('committable', () => {
|
|
4
|
-
it('include uncommitted should work as expected', () => {
|
|
5
|
-
const committableNumber: Committable<number> = new Committable(0);
|
|
6
|
-
|
|
7
|
-
// Check the initial value is 0
|
|
8
|
-
expect(committableNumber.get(true)).toBe(0);
|
|
9
|
-
|
|
10
|
-
// Update the value to 1
|
|
11
|
-
committableNumber.set(1);
|
|
12
|
-
committableNumber.commit();
|
|
13
|
-
|
|
14
|
-
// Check the value is 1
|
|
15
|
-
expect(committableNumber.get()).toBe(1);
|
|
16
|
-
|
|
17
|
-
// Test include uncommitted
|
|
18
|
-
committableNumber.set(2);
|
|
19
|
-
expect(committableNumber.get(true)).toBe(2);
|
|
20
|
-
expect(committableNumber.get(false)).toBe(1);
|
|
21
|
-
|
|
22
|
-
committableNumber.commit();
|
|
23
|
-
expect(committableNumber.get()).toBe(2);
|
|
24
|
-
|
|
25
|
-
// Test rollback
|
|
26
|
-
committableNumber.set(3);
|
|
27
|
-
expect(committableNumber.get(true)).toBe(3);
|
|
28
|
-
expect(committableNumber.get(false)).toBe(2);
|
|
29
|
-
committableNumber.rollback();
|
|
30
|
-
expect(committableNumber.get()).toBe(2);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from './index.js';
|
|
2
|
-
|
|
3
|
-
describe('random', () => {
|
|
4
|
-
it('randomBytes returns a filled byte array', () => {
|
|
5
|
-
const data = randomBytes(32);
|
|
6
|
-
expect(data.length).toEqual(32);
|
|
7
|
-
let identical = true;
|
|
8
|
-
for (let i = 1; i < data.length; ++i) {
|
|
9
|
-
identical = identical && data[i] == data[i - 1];
|
|
10
|
-
}
|
|
11
|
-
expect(identical).toEqual(false);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createHash, randomBytes } from 'crypto';
|
|
2
|
-
|
|
3
|
-
import { sha256 } from './index.js';
|
|
4
|
-
|
|
5
|
-
describe('sha256', () => {
|
|
6
|
-
it('should correctly hash data using hash.js', () => {
|
|
7
|
-
const data = randomBytes(67);
|
|
8
|
-
|
|
9
|
-
const expected = createHash('sha256').update(data).digest();
|
|
10
|
-
|
|
11
|
-
const result = sha256(data);
|
|
12
|
-
expect(result).toEqual(expected);
|
|
13
|
-
});
|
|
14
|
-
});
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { EthAddress } from './index.js';
|
|
2
|
-
|
|
3
|
-
describe('address', () => {
|
|
4
|
-
it('should return correct string', () => {
|
|
5
|
-
const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
|
|
6
|
-
expect(address.toChecksumString()).toBe('0xc6d9d2cD449A754c494264e1809c50e34D64562b');
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
it('should return correct buffer', () => {
|
|
10
|
-
const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
|
|
11
|
-
expect(address.toBuffer20()).toEqual(Buffer.from('c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex'));
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('should return correct 32 byte buffer', () => {
|
|
15
|
-
const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
|
|
16
|
-
expect(address.toBuffer32()).toEqual(
|
|
17
|
-
Buffer.from('000000000000000000000000c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex'),
|
|
18
|
-
);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should create address from 32 byte buffer', () => {
|
|
22
|
-
const buffer = Buffer.from('000000000000000000000000c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex');
|
|
23
|
-
expect(new EthAddress(buffer)).toEqual(EthAddress.fromString('0xc6d9d2cD449A754c494264e1809c50e34D64562b'));
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('should not create address from 32 byte buffer that does not start with 12 0 bytes', () => {
|
|
27
|
-
const buffer = Buffer.from('010000000000000000000000c6d9d2cD449A754c494264e1809c50e34D64562b', 'hex');
|
|
28
|
-
expect(() => new EthAddress(buffer)).toThrowError();
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('should have correct zero address', () => {
|
|
32
|
-
expect(EthAddress.ZERO.toString()).toBe('0x0000000000000000000000000000000000000000');
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('should check if is zero', () => {
|
|
36
|
-
const zero = EthAddress.fromString('0x0000000000000000000000000000000000000000');
|
|
37
|
-
expect(zero.isZero()).toBeTruthy();
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should encode and decode as field', () => {
|
|
41
|
-
const address = EthAddress.fromString('0xc6d9d2cd449a754c494264e1809c50e34d64562b');
|
|
42
|
-
expect(EthAddress.fromField(address.toField())).toEqual(address);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
describe('isAddress', () => {
|
|
46
|
-
it(`should return true for valid prefixed address`, () => {
|
|
47
|
-
expect(EthAddress.isAddress('0xc6d9d2cd449a754c494264e1809c50e34d64562b')).toBe(true);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it(`should return true for valid unprefixed address`, () => {
|
|
51
|
-
expect(EthAddress.isAddress('c6d9d2cd449a754c494264e1809c50e34d64562b')).toBe(true);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it(`should return true for valid all uppercase address`, () => {
|
|
55
|
-
expect(EthAddress.isAddress('0xC6D9D2CD449A754C494264E1809C50E34D64562B')).toBe(true);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it(`should return true for correctly checksummed address`, () => {
|
|
59
|
-
expect(EthAddress.isAddress('0xE247A45c287191d435A8a5D72A7C8dc030451E9F')).toBe(true);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it(`should return false for badly checksummed address`, () => {
|
|
63
|
-
expect(EthAddress.isAddress('0xE247A45C287191d435A8a5D72A7C8dc030451E9F')).toBe(false);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it(`should return false for non hex characters`, () => {
|
|
67
|
-
expect(EthAddress.isAddress('0xg6d9d2cd449a754c494264e1809c50e34d64562b')).toBe(false);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
describe('checkAddressChecksum', () => {
|
|
72
|
-
const tests = [
|
|
73
|
-
{ value: '0x52908400098527886E0F7030069857D2E4169EE7', is: true },
|
|
74
|
-
{ value: '0x8617E340B3D01FA5F11F306F4090FD50E238070D', is: true },
|
|
75
|
-
{ value: '0xde709f2102306220921060314715629080e2fb77', is: true },
|
|
76
|
-
{ value: '0x27b1fdb04752bbc536007a920d24acb045561c26', is: true },
|
|
77
|
-
{ value: '0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed', is: true },
|
|
78
|
-
{ value: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359', is: true },
|
|
79
|
-
{ value: '0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB', is: true },
|
|
80
|
-
{ value: '0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb', is: true },
|
|
81
|
-
{ value: '0XD1220A0CF47C7B9BE7A2E6BA89F429762E7B9ADB', is: false },
|
|
82
|
-
{ value: '0xd1220a0cf47c7b9be7a2e6ba89f429762e7b9adb', is: false },
|
|
83
|
-
];
|
|
84
|
-
|
|
85
|
-
tests.forEach(test => {
|
|
86
|
-
it(`should return ${test.is} for address ${test.value}`, () => {
|
|
87
|
-
expect(EthAddress.checkAddressChecksum(test.value)).toBe(test.is);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
describe('toChecksumAddress', () => {
|
|
93
|
-
const tests = [
|
|
94
|
-
{
|
|
95
|
-
value: '0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed',
|
|
96
|
-
is: '0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
value: '0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359',
|
|
100
|
-
is: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
value: '0xdbf03b407c01e7cd3cbea99509d93f8dddc8c6fb',
|
|
104
|
-
is: '0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB',
|
|
105
|
-
},
|
|
106
|
-
];
|
|
107
|
-
|
|
108
|
-
tests.forEach(test => {
|
|
109
|
-
it(`should return ${test.is} for address ${test.value}`, () => {
|
|
110
|
-
expect(EthAddress.toChecksumAddress(test.value)).toBe(test.is);
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
});
|