Skip to content

Commit 1fd6531

Browse files
author
Luke Wilson
committed
Fix db_scan tests to exercise do_db_scan
1 parent 5d58c58 commit 1fd6531

File tree

1 file changed

+35
-40
lines changed

1 file changed

+35
-40
lines changed

test/imports.test.ts

Lines changed: 35 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -725,83 +725,83 @@ describe('db_scan', () => {
725725
});
726726

727727
it('unbound works', () => {
728-
const idRegionPtr = vm.db_scan(0, 0, Order.Ascending);
729-
const id = fromRegionPtr(vm, idRegionPtr);
728+
const idRegion = vm.do_db_scan(vm.allocate(0), vm.allocate(0), Order.Ascending);
729+
const id = toNumber(idRegion.data);
730730
expect(id).toBe(1);
731731

732732
let item = vm.do_db_next(id);
733-
expectEntryToBe(testData.KEY1, testData.VALUE1, item);
733+
expectToBeKvp(item, testData.KEY1, testData.VALUE1);
734734

735735
item = vm.do_db_next(id);
736-
expectEntryToBe(testData.KEY2, testData.VALUE2, item);
736+
expectToBeKvp(item, testData.KEY2, testData.VALUE2);
737737

738738
item = vm.do_db_next(id);
739739
expect(item.ptr).toBe(0);
740740
});
741741

742742
it('unbound descending works', () => {
743-
const idRegionPtr = vm.db_scan(0, 0, Order.Descending);
744-
const id = fromRegionPtr(vm, idRegionPtr);
743+
const idRegion = vm.do_db_scan(vm.allocate(0), vm.allocate(0), Order.Descending);
744+
const id = toNumber(idRegion.data);
745745
expect(id).toBe(1);
746746

747747
let item = vm.do_db_next(id);
748-
expectEntryToBe(testData.KEY2, testData.VALUE2, item);
748+
expectToBeKvp(item, testData.KEY2, testData.VALUE2);
749749

750750
item = vm.do_db_next(id);
751-
expectEntryToBe(testData.KEY1, testData.VALUE1, item);
751+
expectToBeKvp(item, testData.KEY1, testData.VALUE1);
752752

753753
item = vm.do_db_next(id);
754754
expect(item.ptr).toBe(0);
755755
});
756756

757757
it('bound works', () => {
758-
const startRegionPtr = writeData(vm, toAscii('anna')).ptr;
759-
const endRegionPtr = writeData(vm, toAscii('bert')).ptr;
760-
761-
const idRegionPtr = vm.db_scan(startRegionPtr, endRegionPtr, Order.Ascending);
762-
const id = fromRegionPtr(vm, idRegionPtr);
758+
const idRegion = vm.do_db_scan(
759+
writeData(vm, toAscii('anna')),
760+
writeData(vm, toAscii('bert')),
761+
Order.Ascending);
762+
const id = toNumber(idRegion.data);
763763
expect(id).toBe(1);
764764

765765
let item = vm.do_db_next(id);
766-
expectEntryToBe(testData.KEY1, testData.VALUE1, item);
766+
expectToBeKvp(item, testData.KEY1, testData.VALUE1);
767767

768768
item = vm.do_db_next(id);
769769
expect(item.ptr).toBe(0);
770770
});
771771

772772
it('bound descending works', () => {
773-
const startRegionPtr = writeData(vm, toAscii('antler')).ptr;
774-
const endRegionPtr = writeData(vm, toAscii('trespass')).ptr;
775-
776-
const idRegionPtr = vm.db_scan(startRegionPtr, endRegionPtr, Order.Descending);
777-
const id = fromRegionPtr(vm, idRegionPtr);
773+
const idRegion = vm.do_db_scan(
774+
writeData(vm, toAscii('antler')),
775+
writeData(vm, toAscii('trespass')),
776+
Order.Descending);
777+
const id = toNumber(idRegion.data);
778778
expect(id).toBe(1);
779779

780780
let item = vm.do_db_next(id);
781-
expectEntryToBe(testData.KEY2, testData.VALUE2, item);
781+
expectToBeKvp(item, testData.KEY2, testData.VALUE2);
782782

783783
item = vm.do_db_next(id);
784784
expect(item.ptr).toBe(0);
785785
});
786786

787787
it('multiple iterators', () => {
788-
const idRegionPtr1 = vm.db_scan(0, 0, Order.Ascending);
789-
const id1 = fromRegionPtr(vm, idRegionPtr1);
788+
const idRegion1 = vm.do_db_scan(vm.allocate(0), vm.allocate(0), Order.Ascending);
789+
const id1 = toNumber(idRegion1.data);
790790
expect(id1).toBe(1);
791791

792-
const idRegionPtr2 = vm.db_scan(0, 0, Order.Descending);
793-
const id2 = fromRegionPtr(vm, idRegionPtr2);
792+
const idRegion2 = vm.do_db_scan(vm.allocate(0), vm.allocate(0), Order.Descending);
793+
const id2 = toNumber(idRegion2.data);
794794
expect(id2).toBe(2);
795795

796-
expectEntryToBe(testData.KEY1, testData.VALUE1, vm.do_db_next(id1)); // first item, first iterator
797-
expectEntryToBe(testData.KEY2, testData.VALUE2, vm.do_db_next(id1)); // second item, first iterator
798-
expectEntryToBe(testData.KEY2, testData.VALUE2, vm.do_db_next(id2)); // first item, second iterator
799-
expect(vm.do_db_next(id1).ptr).toBe(0); // end, first iterator
800-
expectEntryToBe(testData.KEY1, testData.VALUE1, vm.do_db_next(id2)); // second item, second iterator
796+
expectToBeKvp(vm.do_db_next(id1), testData.KEY1, testData.VALUE1); // first item, first iterator
797+
expectToBeKvp(vm.do_db_next(id1), testData.KEY2, testData.VALUE2); // second item, first iterator
798+
expectToBeKvp(vm.do_db_next(id2), testData.KEY2, testData.VALUE2); // first item, second iterator
799+
expect(vm.do_db_next(id1).ptr).toBe(0); // end, first iterator
800+
expectToBeKvp(vm.do_db_next(id2), testData.KEY1, testData.VALUE1); // second item, second iterator
801801
});
802802

803803
it('fails for invalid order value', () => {
804-
expect(() => vm.db_scan(0, 0, 42)).toThrow();
804+
expect(() => vm.do_db_scan(vm.allocate(0), vm.allocate(0), 42)).toThrowError('Invalid order value 42');
805805
});
806806
});
807807

@@ -815,8 +815,8 @@ describe('do_db_next', () => {
815815
const idRegion = vm.do_db_scan(vm.allocate(0), vm.allocate(0), Order.Ascending);
816816
const id = toNumber(idRegion.data);
817817

818-
expectEntryToBe(testData.KEY1, testData.VALUE1, vm.do_db_next(id));
819-
expectEntryToBe(testData.KEY2, testData.VALUE2, vm.do_db_next(id));
818+
expectToBeKvp(vm.do_db_next(id), testData.KEY1, testData.VALUE1);
819+
expectToBeKvp(vm.do_db_next(id), testData.KEY2, testData.VALUE2);
820820
expect(vm.do_db_next(id).ptr).toBe(0);
821821
});
822822

@@ -833,10 +833,10 @@ describe('do_db_next', () => {
833833
// test helpers //
834834
//////////////////
835835

836-
function expectEntryToBe(
836+
function expectToBeKvp(
837+
actualItem: Region,
837838
expectedKey: Uint8Array,
838-
expectedValue: Uint8Array,
839-
actualItem: Region
839+
expectedValue: Uint8Array
840840
) {
841841
const json = JSON.parse(fromAscii(actualItem.data));
842842
const key = new Uint8Array(Object.values(json.key));
@@ -845,8 +845,3 @@ function expectEntryToBe(
845845
expect(key).toStrictEqual(expectedKey);
846846
expect(value).toStrictEqual(expectedValue);
847847
}
848-
849-
function fromRegionPtr(vm: VMInstance, regionPtr: number): number {
850-
const region = vm.region(regionPtr);
851-
return toNumber(region.data);
852-
}

0 commit comments

Comments
 (0)