serum-js/src/slab.test.js

58 lines
3.3 KiB
JavaScript

import { Slab } from './slab';
import BN from 'bn.js';
const SLAB_BUFFER = Buffer.from(
'0900000000000000020000000000000008000000000000000400000000000000010000001e00000000000040952fe4da5c1f3c860200000004000000030000000d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d7b0000000000000000000000000000000200000002000000000000a0ca17726dae0f1e43010000001111111111111111111111111111111111111111111111111111111111111111410100000000000000000000000000000200000001000000d20a3f4eeee073c3f60fe98e010000000d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d7b000000000000000000000000000000020000000300000000000040952fe4da5c1f3c8602000000131313131313131313131313131313131313131313131313131313131313131340e20100000000000000000000000000010000001f0000000500000000000000000000000000000005000000060000000d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d7b0000000000000000000000000000000200000004000000040000000000000000000000000000001717171717171717171717171717171717171717171717171717171717171717020000000000000000000000000000000100000020000000000000a0ca17726dae0f1e430100000001000000020000000d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d7b000000000000000000000000000000040000000000000004000000000000000000000000000000171717171717171717171717171717171717171717171717171717171717171702000000000000000000000000000000030000000700000005000000000000000000000000000000171717171717171717171717171717171717171717171717171717171717171702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
'hex',
);
describe('slab', () => {
let slab;
it('parses', () => {
slab = Slab.decode(SLAB_BUFFER);
expect(slab).toBeTruthy();
expect(slab.header.bumpIndex).toBe(9);
expect(slab.nodes).toHaveLength(9);
});
it('finds nodes', () => {
expect(slab.get(new BN('123456789012345678901234567890')).ownerSlot).toBe(
1,
);
expect(slab.get(new BN('100000000000000000000000000000')).ownerSlot).toBe(
2,
);
expect(slab.get(new BN('200000000000000000000000000000')).ownerSlot).toBe(
3,
);
expect(slab.get(4).ownerSlot).toBe(4);
});
it('does not find nonexistant nodes', () => {
expect(slab.get(0)).toBeNull();
expect(slab.get(3)).toBeNull();
expect(slab.get(5)).toBeNull();
expect(slab.get(6)).toBeNull();
expect(slab.get(new BN('200000000000000000000000000001'))).toBeNull();
expect(slab.get(new BN('100000000000000000000000000001'))).toBeNull();
expect(slab.get(new BN('123456789012345678901234567889'))).toBeNull();
expect(slab.get(new BN('123456789012345678901234567891'))).toBeNull();
expect(slab.get(new BN('99999999999999999999999999999'))).toBeNull();
});
it('iterates', () => {
expect(Array.from(slab)).toHaveLength(4);
});
it('iterates in order', () => {
let previous = null;
for (const item of slab) {
if (previous) {
expect(item.key.gt(previous.key)).toBeTruthy();
}
previous = item;
}
});
});