UNPKG

puzzlescript

Version:

Play PuzzleScript games in your terminal!

114 lines 3.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const sortedList_1 = require("./sortedList"); function numberComparator(a, b) { return a - b; } function objComparator(a, b) { return a.value - b.value; } describe('SortedList', () => { it('does not add duplicates', () => { const list = new sortedList_1.SortedList(numberComparator); expect(list.size()).toBe(0); list.add(1); expect(list.size()).toBe(1); list.add(1); expect(list.size()).toBe(1); }); it('validates simple', () => { const list = new sortedList_1.SortedList(objComparator); expect(list.size()).toBe(0); expect(list.isEmpty()).toBe(true); list.add({ value: 1 }); expect(list.size()).toBe(1); expect(list.isEmpty()).toBe(false); list.add({ value: 1 }); expect(list.size()).toBe(1); expect([{ value: 1 }]).toEqual([...list]); list.delete({ value: 1 }); expect(list.size()).toBe(0); }); it('validates intermediate', () => { const list = new sortedList_1.SortedList(numberComparator); list.add(6); list.add(5); list.add(4); list.add(3); list.add(2); list.add(1); list.delete(6); expect(list.size()).toBe(5); list.delete(1); expect(list.size()).toBe(4); list.delete(3); expect(list.size()).toBe(3); }); it('iterates properly when the list is modified during iteration', () => { const list = new sortedList_1.SortedList(numberComparator); list.add(6); list.add(5); list.add(4); list.add(3); list.add(2); list.add(1); const ret = []; for (const x of list) { ret.push(x); if (x === 1) { list.add(1.5); // add after the current index (should show up) } if (x === 2) { list.add(1.9); // add in the current position (should not show up) } if (x === 3) { list.add(0); // add earlier (should not show up) } if (x === 4) { list.delete(4); // delete the current item (should still iterate over 5) } if (x === 5) { list.delete(1); // delete an already processed item (should still iterate over 5) } } expect(ret).toEqual([1, 1.5, 2, 3, 4, 5, 6]); // ensure 1 & 4 were removed, and 0 & 1.5 were added expect([...list]).toEqual([0, 1.5, 1.9, 2, 3, 5, 6]); }); }); describe('SortedArray', () => { it('does not add duplicates', () => { const list = new sortedList_1.SortedArray(numberComparator); expect(list.size()).toBe(0); list.add(1); expect(list.size()).toBe(1); list.add(1); expect(list.size()).toBe(1); }); it('validates intermediate', () => { const list = new sortedList_1.SortedArray(numberComparator); list.add(6); list.add(5); list.add(4); list.add(3); list.add(2); list.add(1); list.delete(6); expect(list.size()).toBe(5); list.delete(1); expect(list.size()).toBe(4); list.delete(3); expect(list.size()).toBe(3); }); it('iterates in sorted order', () => { const list = new sortedList_1.SortedArray(numberComparator); list.add(6); list.add(1); list.add(5); list.add(4); list.add(2); list.add(3); expect([...list]).toEqual([1, 2, 3, 4, 5, 6]); }); }); //# sourceMappingURL=sortedList.spec.js.map