UNPKG

nondeleniti

Version:

Provides GC optimized collections in TypeScript and Lua for use with Encompass-TS

187 lines (145 loc) 4.92 kB
import { GCOptimizedMap } from "../../../tstl-gc-optimized-collections/init"; describe("GCOptimizedMap", () => { describe("Empty", () => { it("should be empty", () => { expect(GCOptimizedMap.Empty.size).toBe(0); }); }); describe("constructor", () => { describe("no argument", () => { const myMap = new GCOptimizedMap(); it("should have size 0", () => { expect(myMap.size).toBe(0); }); }); describe("iterable argument", () => { const myMap = new GCOptimizedMap(["a", "c"],["b", "d"]); it("should have size 2", () => { expect(myMap.size).toBe(2); }); it("should have element a", () => { expect(myMap.has("a")).toBeTruthy(); }); it("should have element b", () => { expect(myMap.has("b")).toBeTruthy(); }); }); }); describe("clear", () => { const myMap = new GCOptimizedMap<string, string>(["a","c"], ["b","d"]); myMap.clear(); it("should have size 0", () => { expect(myMap.size).toBe(0); }); it("should not have first element", () => { expect(myMap.has("a")).toBeFalsy(); }); it("should not have second element", () => { expect(myMap.has("b")).toBeFalsy(); }); }); describe("delete", () => { const myMap = new GCOptimizedMap(["a", "c"],["b", "d"]); myMap.delete("a"); it("should not have element a", () => { expect(myMap.has("a")).toBeFalsy(); }); it("should have element b", () => { expect(myMap.has("b")).toBeTruthy(); }); }); describe("forEach", () => { const myMap = new GCOptimizedMap(["a", 2], ["b", 3], ["c", 4]); let count = 0; for (const [k, v] of myMap.entries()) { count += v; } it("iterates over all entries", () => { expect(count).toBe(9); }); }); describe("get", () => { const myMap = new GCOptimizedMap(["a", "c"], ["b", "d"]); describe("the map has the key", () => { it("gets the value from the key", () => { expect(myMap.get("a")).toBe("c"); }); }); describe("the map does not have the key", () => { it("returns undefined", () => { expect(myMap.get("c")).toBeUndefined(); }); }); }); describe("has", () => { const myMap = new GCOptimizedMap(["a", "c"]); describe("the map has the key", () => { it("returns true", () => { expect(myMap.has("a")).toBeTruthy(); }); }); describe("the map does not have the key", () => { it("returns false", () => { expect(myMap.has("c")).toBeFalsy(); }); }); }); describe("set", () => { const myMap = new GCOptimizedMap(); myMap.set("a", 5); it("should have key", () => { expect(myMap.has("a")).toBeTruthy(); }); it("should have value", () => { expect(myMap.get("a")).toBe(5); }); }); describe("size", () => { describe("the map is empty", () => { const m = new GCOptimizedMap(); it("returns 0", () => { expect(m.size).toBe(0); }); }); describe("the map has a value set", () => { const m = new GCOptimizedMap(); m.set(1, 3); it("returns 1", () => { expect(m.size).toBe(1); }); }); describe("the map is constructed with 2 entries", () => { const m = new GCOptimizedMap([1,2],[3,4]); it("returns 2", () => { expect(m.size).toBe(2); }); }); describe("the map is cleared", () => { const m = new GCOptimizedMap([1,2],[3,4]); m.clear(); it("returns 0", () => { expect(m.size).toBe(0); }); }); describe("the map has 2 entries and 1 is deleted", () => { const m = new GCOptimizedMap([1,2], [3,4]); m.delete(1); it("returns 1", () => { expect(m.size).toBe(1); }); }); }); describe("entries", () => { const m = new GCOptimizedMap([3, 2], [1, 4], [2, 6]); it("iterates through the entries", () => { let key_sum = 0; let value_sum = 0; for (const [k, v] of m.entries()) { key_sum += k; value_sum += v; } expect(key_sum).toBe(6); expect(value_sum).toBe(12); }); }); });