Files
common/packages/trie-hash/test/data.ts
T
Jaco Greeff 89030f41b3 2019 (#287)
* 2019

* Bump deps

* Cleanup deps

* Update dev (markdown plugin)

* Bump deps (hopefully finally fixes doc gen)

* Fix inherit plugin
2019-01-04 14:50:50 +01:00

199 lines
7.5 KiB
TypeScript

// Copyright 2017-2019 @polkadot/trie-hash authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import { TriePair } from '../src/types';
import { hexToU8a, stringToU8a } from '@polkadot/util/index';
export type TestData = {
desc: string,
input: Array<TriePair>,
output: Uint8Array,
root: Uint8Array
};
const data: { [index: string]: TestData } = {
simpleBranch: {
desc: 'a branch',
input: [
{ k: Uint8Array.from([0xaa]), v: Uint8Array.from([0x10]) },
{ k: Uint8Array.from([0xba]), v: Uint8Array.from([0x11]) }
],
output: Uint8Array.from([
0xfe, 0x00, 0x0c, 0x10, 0x02, 0x0a, 0x04, 0x10, 0x10, 0x02, 0x0a, 0x04, 0x11
]),
root: hexToU8a('0x922fa0ab17d1f383b45047502151d09e9141a76ddf5b5e4f1af98c4afdd85864')
},
extensionBranch: {
desc: 'extension and branch',
input: [
{ k: Uint8Array.from([0xaa]), v: Uint8Array.from([0x10]) },
{ k: Uint8Array.from([0xab]), v: Uint8Array.from([0x11]) }
],
output: hexToU8a('0x810a2cfe000c0c0104100c010411'),
root: hexToU8a('0x3f6764bc812ca86b84cf88b2045828fd605c8abbe1e9c657ff87adb715c644bf')
},
extensionBranchValue: {
desc: 'extension and branch with value',
input: [
{ k: Uint8Array.from([0xaa]), v: Uint8Array.from([0xa0]) },
{ k: Uint8Array.from([0xaa, 0xaa]), v: Uint8Array.from([0xaa]) },
{ k: Uint8Array.from([0xaa, 0xbb]), v: Uint8Array.from([0xab]) }
],
output: Uint8Array.from([
0x82, 0xaa, 0x3c, 0xff, 0x00, 0x0c, 0x04, 0xa0, 0x10, 0x02, 0x0a, 0x04, 0xaa, 0x10, 0x02, 0x0b,
0x04, 0xab
]),
root: hexToU8a('0xc896ef26cd64107bd8bf33e9e0b0adbb29c54ac1bf8e9dc30153f13638095108')
},
midExtensionBranchValue: {
desc: 'medium extension and branch with value',
input: [
{ k: Uint8Array.from([0xaa]), v: Uint8Array.from([0xa0]) },
{ k: Uint8Array.from([0xaa, 0xaa]), v: Uint8Array.from([0xaa]) },
{ k: Uint8Array.from([0xaa, 0xbb]), v: Uint8Array.from([0xab]) },
{ k: Uint8Array.from([0xbb]), v: Uint8Array.from([0xb0]) }
],
output: Uint8Array.from([
0xfe, 0x00, 0x0c, 0x48, 0x81, 0x0a, 0x3c, 0xff, 0x00, 0x0c, 0x04, 0xa0, 0x10, 0x02, 0x0a, 0x04,
0xaa, 0x10, 0x02, 0x0b, 0x04, 0xab, 0x10, 0x02, 0x0b, 0x04, 0xb0
]),
root: hexToU8a('0xd8272dfbf69d087664637b9c1773e20d82b1476c1c480e84f13cafbec4c5c92a')
},
bigExtensionBranchValue: {
desc: 'bigger extension and branch with value',
input: [
{ k: Uint8Array.from([0xaa]), v: Uint8Array.from([0xa0]) },
{ k: Uint8Array.from([0xaa, 0xaa]), v: Uint8Array.from([0xaa]) },
{ k: Uint8Array.from([0xaa, 0xbb]), v: Uint8Array.from([0xab]) },
{ k: Uint8Array.from([0xbb]), v: Uint8Array.from([0xb0]) },
{ k: Uint8Array.from([0xbb, 0xbb]), v: Uint8Array.from([0xbb]) },
{ k: Uint8Array.from([0xbb, 0xcc]), v: Uint8Array.from([0xbc]) }
],
output: Uint8Array.from([
0xfe, 0x00, 0x0c, 0x48, 0x81, 0x0a, 0x3c, 0xff, 0x00, 0x0c, 0x04, 0xa0, 0x10, 0x02, 0x0a, 0x04,
0xaa, 0x10, 0x02, 0x0b, 0x04, 0xab, 0x48, 0x81, 0x0b, 0x3c, 0xff, 0x00, 0x18, 0x04, 0xb0, 0x10,
0x02, 0x0b, 0x04, 0xbb, 0x10, 0x02, 0x0c, 0x04, 0xbc
]),
root: hexToU8a('0x519056dadff78abc057f6de56706d7b0ed01654b059df3dd9cfc135ef246dd22')
},
longLeaf: {
desc: 'a single long leaf',
input: [
{
k: Uint8Array.from([0xaa]),
v: stringToU8a('ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC')
},
{
k: Uint8Array.from([0xba]),
v: Uint8Array.from([0x11])
}
],
output: Uint8Array.from([
0xfe, 0x00, 0x0c, 0x80, 0x0e, 0x26, 0xe9, 0x80, 0x0a, 0xc2, 0x7f, 0x56, 0x5c, 0x7e, 0x7c, 0xa7,
0x95, 0x16, 0x24, 0x78, 0x35, 0xea, 0x07, 0x6c, 0x5b, 0x62, 0x5f, 0x2d, 0x61, 0x00, 0x1a, 0x7b,
0xab, 0xad, 0xbf, 0x11, 0x10, 0x02, 0x0a, 0x04, 0x11
]),
root: hexToU8a('0x28530359d763dccdd0a6720aacdea9d03c4d93fa8b7c83e650ab159f1fa4675f')
},
twoLongLeaves: {
desc: 'two long leaves',
input: [
{
k: Uint8Array.from([0xaa]),
v: stringToU8a('ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC')
},
{
k: Uint8Array.from([0xba]),
v: stringToU8a('ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC')
}
],
output: Uint8Array.from([
0xfe, 0x00, 0x0c, 0x80, 0x0e, 0x26, 0xe9, 0x80, 0x0a, 0xc2, 0x7f, 0x56, 0x5c, 0x7e, 0x7c, 0xa7,
0x95, 0x16, 0x24, 0x78, 0x35, 0xea, 0x07, 0x6c, 0x5b, 0x62, 0x5f, 0x2d, 0x61, 0x00, 0x1a, 0x7b,
0xab, 0xad, 0xbf, 0x11, 0x80, 0x0e, 0x26, 0xe9, 0x80, 0x0a, 0xc2, 0x7f, 0x56, 0x5c, 0x7e, 0x7c,
0xa7, 0x95, 0x16, 0x24, 0x78, 0x35, 0xea, 0x07, 0x6c, 0x5b, 0x62, 0x5f, 0x2d, 0x61, 0x00, 0x1a,
0x7b, 0xab, 0xad, 0xbf, 0x11
]),
root: hexToU8a('0x413f72e84d4f48fba427592529cd048244bf816141f17d6b5947965765e67824')
},
empty: {
desc: 'empty into [0]',
input: [],
output: Uint8Array.from([0]),
root: hexToU8a('0x03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314')
},
singleValue: {
desc: 'a single tuple',
input: [
{ k: Uint8Array.from([0xaa]), v: Uint8Array.from([0xbb]) }
],
output: Uint8Array.from([
0x03, // leaf (0x01) with (+) key of 2 nibbles (0x02)
0xaa, // key data
1 << 2, // length of value in bytes as Compact
0xbb // value data
]),
root: hexToU8a('0xe778a32590ed4f3f39608b77af87fb59163a89bb9702f477375e1a574736d6f0')
},
singleValue2: {
desc: 'a single tuple (prepare for next)',
input: [
{ k: Uint8Array.from([0x48, 0x19]), v: Uint8Array.from([0xfe]) }
],
output: Uint8Array.from([
0x05, 0x48, 0x19, 0x04, 0xfe
]),
root: hexToU8a('0xfb05396ab039474785c95dcb40339f52a45ea5d5bc8c1f76d7e4308b90124357')
},
twoValues: {
desc: '2 disjointed tuple keys',
input: [
{ k: Uint8Array.from([0x48, 0x19]), v: Uint8Array.from([0xfe]) },
{ k: Uint8Array.from([0x13, 0x14]), v: Uint8Array.from([0xff]) }
],
output: Uint8Array.from([
0xfe, // branch, no value
0x12, // slots 1 & 4 are taken from 0-7
0x00, // no slots from 8-15
0x05 << 2, // first slot: LEAF, 5 bytes long.
0x04, // leaf with 3 nibbles
0x03, // first nibble
0x14, // second & third nibble
0x01 << 2, // 1 byte data
0xff, // value data
0x05 << 2, // second slot: LEAF, 5 bytes long.
0x04, // leaf with 3 nibbles
0x08, // first nibble
0x19, // second & third nibble
0x01 << 2, // 1 byte data
0xfe // data
]),
root: hexToU8a('0x72813a09bf563fdb6af1d8326329950499fc33c30f3534893381517dc54640b2')
},
substrate0: {
desc: 'substrate (paritial 0)',
input: [
{
k: hexToU8a('0x3a617574683a00000000'),
v: hexToU8a('0x82c39b31a2b79a90f8e66e7a77fdb85a4ed5517f2ae39f6a80565e8ecae85cf5')
},
{
k: hexToU8a('0x7935e46f94f24b82716c0142e2271de9'),
v: hexToU8a('0x0087000000000000')
},
{
k: hexToU8a('0x27b3872d47181b4a2dc15f0da43e7026'),
v: hexToU8a('0xe803000000000000')
}
],
output: hexToU8a(
'0xfe8c00682007b3872d47181b4a2dc15f0da43e702620e80300000000000080170d322ac49d8708f151346c68d9e58452d83a9d3b710e1ead35eb3269ab235368200935e46f94f24b82716c0142e2271de9200087000000000000'
),
root: hexToU8a('0xd1d7c0207562afecdb7e8cf945a402b19d378cb337a10535b1c4241454be9e21')
}
};
export default data;