1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 1× 3× 1× | import {assert} from 'chai'; import OrderedElements from '../src/ordered-elements'; describe("OrderedElements", () => { it("can identify elements it has", () => { const elems = new OrderedElements(); elems.set("a", 1); assert.equal(elems.has("a"), true); }); it("can identify elements it does not have", () => { const elems = new OrderedElements(); elems.set("a", 1); assert.equal(elems.has("b"), false); }); it("can get elements it has", () => { const elems = new OrderedElements(); elems.set("a", 1); assert.equal(elems.get("a"), 1); }); it("adds new elements in order", () => { const elems = new OrderedElements(); elems.set("a", 1); elems.set("b", 2); assert.deepEqual({ elements: { a: 1, b: 2, }, keyOrder: ["a", "b"], }, elems); }); it("overrides old elements but doesn't add to the key ordering", () => { const elems = new OrderedElements(); elems.set("a", 1); elems.set("a", 2); assert.deepEqual({ elements: { a: 2, }, keyOrder: ["a"], }, elems); }); it("iterates over the elements in the correct order", () => { const elems = new OrderedElements(); elems.set("a", 1); elems.set("b", 2); elems.set("c", 3); const order = []; elems.forEach((value, key) => { order.push([key, value]); }); assert.deepEqual([ ["a", 1], ["b", 2], ["c", 3], ], order); }); }); |