Files
common/packages/util/src/compact/fromU8a.spec.ts
T
Jaco f2d611e26d BN util export (& imports adjust) (#1009)
* BN util export (& imports adjust)

* Fix hexToBn

* Adjusts test

* Move bn export
2021-06-11 11:42:29 +02:00

58 lines
1.6 KiB
TypeScript

// Copyright 2017-2021 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { BN } from '../bn/bn';
import { hexToU8a } from '../hex/toU8a';
import { compactFromU8a } from '.';
describe('compactFromU8a', (): void => {
it('decoded u8 value', (): void => {
expect(
compactFromU8a(new Uint8Array([0b11111100]))
).toEqual([1, new BN(63)]);
});
it('decodes from same u16 encoded value', (): void => {
expect(
compactFromU8a(new Uint8Array([0b11111101, 0b00000111]))
).toEqual([2, new BN(511)]);
});
it('decodes from same u32 encoded value (short)', (): void => {
expect(
compactFromU8a(new Uint8Array([254, 255, 3, 0]))
).toEqual(
// since we use in-place, the words are different... HACK it
[4, new BN(0xffff).ishln(16).ishrn(16)]
);
});
it('decodes from same u32 encoded value (full)', (): void => {
expect(
compactFromU8a(new Uint8Array([3, 249, 255, 255, 255]))
).toEqual([5, new BN(0xfffffff9)]);
});
it('decodes from same u32 as u64 encoded value (full, default)', (): void => {
expect(
compactFromU8a(new Uint8Array([3 + ((4 - 4) << 2), 249, 255, 255, 255]))
).toEqual([5, new BN(0xfffffff9)]);
});
it('decodes an actual value', (): void => {
expect(
compactFromU8a(
hexToU8a('0x0b00407a10f35a')
)
).toEqual([7, new BN('5af3107a4000', 16)]);
});
it('decodes an actual value', (): void => {
expect(
compactFromU8a(
hexToU8a('0x0284d717')
)[1].toString()
).toEqual('100000000');
});
});