data-structure-typed 2.2.7 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +9 -0
- package/CHANGELOG.md +1 -1
- package/README.md +14 -3
- package/README_CN.md +119 -275
- package/benchmark/report.html +1 -1
- package/benchmark/report.json +20 -324
- package/dist/cjs/index.cjs +689 -182
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +693 -185
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +689 -182
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +693 -185
- package/dist/esm-legacy/index.mjs.map +1 -1
- package/dist/leetcode/avl-tree-counter.mjs +2957 -0
- package/dist/leetcode/avl-tree-multi-map.mjs +2889 -0
- package/dist/leetcode/avl-tree.mjs +2720 -0
- package/dist/leetcode/binary-tree.mjs +1594 -0
- package/dist/leetcode/bst.mjs +2398 -0
- package/dist/leetcode/deque.mjs +683 -0
- package/dist/leetcode/directed-graph.mjs +1733 -0
- package/dist/leetcode/doubly-linked-list.mjs +709 -0
- package/dist/leetcode/hash-map.mjs +493 -0
- package/dist/leetcode/heap.mjs +542 -0
- package/dist/leetcode/max-heap.mjs +375 -0
- package/dist/leetcode/max-priority-queue.mjs +383 -0
- package/dist/leetcode/min-heap.mjs +363 -0
- package/dist/leetcode/min-priority-queue.mjs +371 -0
- package/dist/leetcode/priority-queue.mjs +363 -0
- package/dist/leetcode/queue.mjs +943 -0
- package/dist/leetcode/red-black-tree.mjs +2765 -0
- package/dist/leetcode/singly-linked-list.mjs +754 -0
- package/dist/leetcode/stack.mjs +217 -0
- package/dist/leetcode/tree-counter.mjs +3039 -0
- package/dist/leetcode/tree-multi-map.mjs +2913 -0
- package/dist/leetcode/trie.mjs +413 -0
- package/dist/leetcode/undirected-graph.mjs +1650 -0
- package/dist/types/data-structures/base/linear-base.d.ts +6 -6
- package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +1 -1
- package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -2
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +10 -10
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +25 -27
- package/dist/types/data-structures/binary-tree/bst.d.ts +13 -12
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +151 -21
- package/dist/types/data-structures/binary-tree/tree-counter.d.ts +4 -4
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
- package/dist/types/interfaces/binary-tree.d.ts +1 -1
- package/dist/umd/data-structure-typed.js +689 -181
- package/dist/umd/data-structure-typed.js.map +1 -1
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +50 -172
- package/src/data-structures/base/linear-base.ts +2 -12
- package/src/data-structures/binary-tree/avl-tree-counter.ts +6 -6
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +13 -13
- package/src/data-structures/binary-tree/avl-tree.ts +15 -15
- package/src/data-structures/binary-tree/binary-tree.ts +57 -60
- package/src/data-structures/binary-tree/bst.ts +100 -26
- package/src/data-structures/binary-tree/red-black-tree.ts +586 -76
- package/src/data-structures/binary-tree/tree-counter.ts +25 -13
- package/src/data-structures/binary-tree/tree-multi-map.ts +13 -13
- package/src/data-structures/queue/deque.ts +10 -0
- package/src/interfaces/binary-tree.ts +1 -1
- package/test/performance/data-structures/binary-tree/red-black-tree.test.ts +1 -2
- package/test/unit/data-structures/base/iterable-element-base.coverage.test.ts +106 -0
- package/test/unit/data-structures/base/iterable-element-base.more-branches.coverage.test.ts +61 -0
- package/test/unit/data-structures/base/linear-base.array.coverage.test.ts +168 -0
- package/test/unit/data-structures/base/linear-base.concat-else.coverage.test.ts +82 -0
- package/test/unit/data-structures/base/linear-base.coverage.test.ts +72 -0
- package/test/unit/data-structures/base/linear-base.more-branches.coverage.test.ts +417 -0
- package/test/unit/data-structures/binary-tree/avl-tree-counter.more-branches-3.coverage.test.ts +146 -0
- package/test/unit/data-structures/binary-tree/avl-tree-counter.more-branches.coverage.test.ts +93 -0
- package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +30 -30
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.coverage.test.ts +108 -0
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.more-branches-2.coverage.test.ts +85 -0
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +46 -46
- package/test/unit/data-structures/binary-tree/avl-tree-node.familyPosition-root-left.coverage.test.ts +17 -0
- package/test/unit/data-structures/binary-tree/avl-tree.more-branches-2.coverage.test.ts +99 -0
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +43 -43
- package/test/unit/data-structures/binary-tree/binary-indexed-tree.more-branches.coverage.test.ts +18 -0
- package/test/unit/data-structures/binary-tree/binary-tree.more-branches.coverage.test.ts +56 -0
- package/test/unit/data-structures/binary-tree/binary-tree.remaining-branches.coverage.test.ts +229 -0
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +151 -151
- package/test/unit/data-structures/binary-tree/bst.bound-by-predicate.coverage.test.ts +33 -0
- package/test/unit/data-structures/binary-tree/bst.coverage.test.ts +94 -0
- package/test/unit/data-structures/binary-tree/bst.deletebykey.coverage.test.ts +70 -0
- package/test/unit/data-structures/binary-tree/bst.deletewhere.coverage.test.ts +37 -0
- package/test/unit/data-structures/binary-tree/bst.floor-lower-predicate.coverage.test.ts +29 -0
- package/test/unit/data-structures/binary-tree/bst.floor-setmany.coverage.test.ts +72 -0
- package/test/unit/data-structures/binary-tree/bst.getnode.range-ensure.coverage.test.ts +22 -0
- package/test/unit/data-structures/binary-tree/bst.misc-branches.coverage.test.ts +100 -0
- package/test/unit/data-structures/binary-tree/bst.more-branches-2.coverage.test.ts +133 -0
- package/test/unit/data-structures/binary-tree/bst.more-branches-3.coverage.test.ts +45 -0
- package/test/unit/data-structures/binary-tree/bst.more-branches-4.coverage.test.ts +36 -0
- package/test/unit/data-structures/binary-tree/bst.more-branches-5.coverage.test.ts +40 -0
- package/test/unit/data-structures/binary-tree/bst.more.coverage.test.ts +39 -0
- package/test/unit/data-structures/binary-tree/bst.node-family.coverage.test.ts +29 -0
- package/test/unit/data-structures/binary-tree/bst.range-pruning.coverage.test.ts +43 -0
- package/test/unit/data-structures/binary-tree/bst.search-fastpath.coverage.test.ts +30 -0
- package/test/unit/data-structures/binary-tree/bst.test.ts +124 -154
- package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
- package/test/unit/data-structures/binary-tree/red-black-tree.boundary-corruption-repair.coverage.test.ts +66 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.boundary-max-update.coverage.test.ts +18 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.boundary-null.coverage.test.ts +53 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.boundary-stale-cache.coverage.test.ts +25 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.boundary-update.coverage.test.ts +23 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.cache-delete.coverage.test.ts +49 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.cache-edge.coverage.test.ts +37 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.cache-stale-insert.coverage.test.ts +39 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.coverage.test.ts +334 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.delete-fixup.coverage.test.ts +68 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.delete-successor.coverage.test.ts +75 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.factories.coverage.test.ts +26 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-compare-update.coverage.test.ts +74 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-no-update.coverage.test.ts +44 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-nullish.coverage.test.ts +61 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-defined.coverage.test.ts +35 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-undefined.coverage.test.ts +43 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint-more.coverage.test.ts +99 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.hint.coverage.test.ts +60 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.insert-cache-nullish.coverage.test.ts +29 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.insert-header-parent-nullish.coverage.test.ts +17 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.internal-walk.coverage.test.ts +57 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.minmax-cache.test.ts +65 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.misc-inputs.coverage.test.ts +17 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-2.coverage.test.ts +121 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-3.coverage.test.ts +55 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-4.coverage.test.ts +44 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.predsucc.coverage.test.ts +40 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.remaining-branches.coverage.test.ts +123 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.set-inputs.coverage.test.ts +64 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-parent-cache.coverage.test.ts +79 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-remaining.coverage.test.ts +44 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-uncovered.coverage.test.ts +74 -0
- package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +141 -141
- package/test/unit/data-structures/binary-tree/red-black-tree.update-branches.coverage.test.ts +30 -0
- package/test/unit/data-structures/binary-tree/segment-tree.more-branches.coverage.test.ts +31 -0
- package/test/unit/data-structures/binary-tree/tree-counter.coverage.test.ts +115 -0
- package/test/unit/data-structures/binary-tree/tree-counter.more-branches.coverage.test.ts +244 -0
- package/test/unit/data-structures/binary-tree/tree-counter.test.ts +41 -39
- package/test/unit/data-structures/binary-tree/tree-multi-map.coverage.test.ts +104 -0
- package/test/unit/data-structures/binary-tree/tree-multi-map.more-branches-2.coverage.test.ts +59 -0
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +145 -145
- package/test/unit/data-structures/graph/abstract-graph.more-branches-2.coverage.test.ts +40 -0
- package/test/unit/data-structures/graph/abstract-graph.more-branches-3.coverage.test.ts +65 -0
- package/test/unit/data-structures/graph/abstract-graph.more-branches-4.coverage.test.ts +98 -0
- package/test/unit/data-structures/graph/abstract-graph.more-branches-5.coverage.test.ts +51 -0
- package/test/unit/data-structures/graph/abstract-graph.more-branches.coverage.test.ts +62 -0
- package/test/unit/data-structures/graph/directed-graph.more-branches-2.coverage.test.ts +38 -0
- package/test/unit/data-structures/graph/directed-graph.more-branches-3.coverage.test.ts +25 -0
- package/test/unit/data-structures/graph/directed-graph.more-branches.coverage.test.ts +82 -0
- package/test/unit/data-structures/graph/map-graph.more-branches.coverage.test.ts +22 -0
- package/test/unit/data-structures/graph/undirected-graph.more-branches-2.coverage.test.ts +35 -0
- package/test/unit/data-structures/graph/undirected-graph.more-branches.coverage.test.ts +87 -0
- package/test/unit/data-structures/hash/hash-map.more-branches.coverage.test.ts +64 -0
- package/test/unit/data-structures/hash/hash-map.toEntryFn-branch.coverage.test.ts +9 -0
- package/test/unit/data-structures/heap/heap.misc-branches.coverage.test.ts +110 -0
- package/test/unit/data-structures/heap/heap.remaining-branches.coverage.test.ts +22 -0
- package/test/unit/data-structures/heap/max-heap.coverage.test.ts +29 -0
- package/test/unit/data-structures/linked-list/doubly-linked-list.more-branches.coverage.test.ts +72 -0
- package/test/unit/data-structures/linked-list/linked-list.unshiftMany-else.coverage.test.ts +15 -0
- package/test/unit/data-structures/linked-list/singly-linked-list.coverage.test.ts +221 -0
- package/test/unit/data-structures/linked-list/singly-linked-list.more-branches.coverage.test.ts +86 -0
- package/test/unit/data-structures/linked-list/skip-linked-list.more-branches.coverage.test.ts +31 -0
- package/test/unit/data-structures/matrix/matrix.more-branches.coverage.test.ts +81 -0
- package/test/unit/data-structures/matrix/matrix.pivotElement-nullish.coverage.test.ts +28 -0
- package/test/unit/data-structures/priority-queue/max-priority-queue.more-branches.coverage.test.ts +10 -0
- package/test/unit/data-structures/priority-queue/priority-queue.coverage.test.ts +21 -0
- package/test/unit/data-structures/queue/deque.coverage.test.ts +173 -0
- package/test/unit/data-structures/queue/deque.more-branches-2.coverage.test.ts +39 -0
- package/test/unit/data-structures/queue/deque.more-branches-3.coverage.test.ts +9 -0
- package/test/unit/data-structures/queue/deque.more-branches.coverage.test.ts +95 -0
- package/test/unit/data-structures/queue/queue.coverage.test.ts +138 -0
- package/test/unit/data-structures/queue/queue.more-branches-2.coverage.test.ts +27 -0
- package/test/unit/data-structures/stack/stack.coverage.test.ts +112 -0
- package/test/unit/data-structures/tree/tree.more-branches.coverage.test.ts +9 -0
- package/test/unit/data-structures/trie/trie.more-branches-2.coverage.test.ts +51 -0
- package/test/utils/patch.ts +33 -0
- package/tsup.config.js +50 -21
- package/tsup.umd.config.js +29 -0
- package/tsup.node.config.js +0 -83
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { TreeMultiMap, TreeMultiMapNode } from '../../../../src';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Coverage-focused tests for TreeMultiMap branches.
|
|
5
|
+
* Keep existing @example tests intact.
|
|
6
|
+
*/
|
|
7
|
+
describe('TreeMultiMap coverage', () => {
|
|
8
|
+
it('TreeMultiMapNode.familyPosition covers ROOT/LEFT/RIGHT/ISOLATED cases', () => {
|
|
9
|
+
const isolated = new TreeMultiMapNode<number, number>(1);
|
|
10
|
+
expect(isolated.familyPosition).toBe('ISOLATED');
|
|
11
|
+
|
|
12
|
+
const root = new TreeMultiMapNode<number, number>(10);
|
|
13
|
+
const left = new TreeMultiMapNode<number, number>(5);
|
|
14
|
+
root.left = left;
|
|
15
|
+
expect(root.familyPosition).toBe('ROOT');
|
|
16
|
+
expect(left.familyPosition).toBe('LEFT');
|
|
17
|
+
|
|
18
|
+
left.left = new TreeMultiMapNode<number, number>(2);
|
|
19
|
+
expect(left.familyPosition).toBe('ROOT_LEFT');
|
|
20
|
+
|
|
21
|
+
const right = new TreeMultiMapNode<number, number>(15);
|
|
22
|
+
root.right = right;
|
|
23
|
+
expect(right.familyPosition).toBe('RIGHT');
|
|
24
|
+
|
|
25
|
+
right.right = new TreeMultiMapNode<number, number>(20);
|
|
26
|
+
expect(right.familyPosition).toBe('ROOT_RIGHT');
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('set branches: mapMode true uses _setByNode before _setToValues', () => {
|
|
30
|
+
const tmm = new TreeMultiMap<number, string>();
|
|
31
|
+
|
|
32
|
+
// Create key with undefined bucket via bare key insert
|
|
33
|
+
tmm.set(2 as any);
|
|
34
|
+
expect(tmm.get(2)).toBeUndefined();
|
|
35
|
+
|
|
36
|
+
// Now set a value: hits existingNode real + existingValues undefined => super.set(key, values)
|
|
37
|
+
tmm.set(2, 'a');
|
|
38
|
+
expect(tmm.get(2)).toEqual(['a']);
|
|
39
|
+
|
|
40
|
+
// Append single value (existingValues defined)
|
|
41
|
+
tmm.set(2, 'b');
|
|
42
|
+
expect(tmm.get(2)).toEqual(['a', 'b']);
|
|
43
|
+
|
|
44
|
+
// Entry form with explicit values array
|
|
45
|
+
tmm.set([2, ['c', 'd']]);
|
|
46
|
+
expect(tmm.get(2)).toEqual(['a', 'b', 'c', 'd']);
|
|
47
|
+
|
|
48
|
+
// // Entry form + value param should wrap into [value]
|
|
49
|
+
// tmm.set([2, ['ignored']], 'e');
|
|
50
|
+
// expect(tmm.get(2)).toEqual(['a', 'b', 'c', 'd', 'e']);
|
|
51
|
+
|
|
52
|
+
// null key ignored
|
|
53
|
+
expect(tmm.set([null as any, ['x']] as any)).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('set branches: mapMode false prefers _setToValues before _setByNode', () => {
|
|
57
|
+
const tmm = new TreeMultiMap<number, string>([], { isMapMode: false });
|
|
58
|
+
|
|
59
|
+
// When bucket exists, it should append without changing tree structure.
|
|
60
|
+
tmm.set(1, 'a');
|
|
61
|
+
tmm.set(1, 'b');
|
|
62
|
+
expect(tmm.get(1)).toEqual(['a', 'b']);
|
|
63
|
+
|
|
64
|
+
// When bucket missing, it should create via super.set
|
|
65
|
+
tmm.set(3 as any); // insert key-only => bucket may be created as empty array
|
|
66
|
+
expect(tmm.get(3)).toEqual([]);
|
|
67
|
+
tmm.set(3, 'x');
|
|
68
|
+
expect(tmm.get(3)).toEqual(['x']);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('deleteValue branches: not found, found, and delete-when-empty', () => {
|
|
72
|
+
const tmm = new TreeMultiMap<number, number>();
|
|
73
|
+
|
|
74
|
+
// not found bucket
|
|
75
|
+
expect(tmm.deleteValue(1, 1)).toBe(false);
|
|
76
|
+
|
|
77
|
+
tmm.set(1, 1);
|
|
78
|
+
tmm.set(1, 2);
|
|
79
|
+
|
|
80
|
+
// value not present
|
|
81
|
+
expect(tmm.deleteValue(1, 999)).toBe(false);
|
|
82
|
+
|
|
83
|
+
// delete present
|
|
84
|
+
expect(tmm.deleteValue(1, 1)).toBe(true);
|
|
85
|
+
expect(tmm.get(1)).toEqual([2]);
|
|
86
|
+
|
|
87
|
+
// delete last -> removes key
|
|
88
|
+
expect(tmm.deleteValue(1, 2)).toBe(true);
|
|
89
|
+
expect(tmm.get(1)).toBeUndefined();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('_createInstance/_createLike are exercised via clone/map', () => {
|
|
93
|
+
const tmm = new TreeMultiMap<number, number>();
|
|
94
|
+
tmm.set(1, 10);
|
|
95
|
+
tmm.set(1, 11);
|
|
96
|
+
|
|
97
|
+
const cloned = tmm.clone();
|
|
98
|
+
expect(cloned.get(1)).toEqual([10, 11]);
|
|
99
|
+
|
|
100
|
+
const mapped = tmm.map((values, key) => [key + 1, values ?? []]);
|
|
101
|
+
// map returns TreeMultiMap when mapping to array values
|
|
102
|
+
expect((mapped as any).get(2)).toEqual([10, 11]);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { TreeMultiMap, TreeMultiMapNode } from '../../../../src';
|
|
2
|
+
|
|
3
|
+
describe('TreeMultiMap additional branch coverage (batch 2)', () => {
|
|
4
|
+
it('set(node) takes isRealNode early-return path', () => {
|
|
5
|
+
const t = new TreeMultiMap<number, string>([], { isMapMode: false });
|
|
6
|
+
|
|
7
|
+
const n = new TreeMultiMapNode<number, string>(1, ['a']);
|
|
8
|
+
expect(t.set(n as any)).toBe(true);
|
|
9
|
+
expect(t.get(1)).toEqual(['a']);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('set() returns false when key exists but incoming values are undefined (covers values===undefined else branch)', () => {
|
|
13
|
+
const t = new TreeMultiMap<number, string>([], { isMapMode: false });
|
|
14
|
+
t.set(1, 'a');
|
|
15
|
+
|
|
16
|
+
// value undefined and values undefined => should not append
|
|
17
|
+
expect(t.set(1, undefined as any)).toBe(false);
|
|
18
|
+
expect(t.get(1)).toEqual(['a']);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('mapMode set(): forces evaluation of _setToValues via _setByNode false (covers _setByNode() || _setToValues() rhs)', () => {
|
|
22
|
+
const t = new TreeMultiMap<number, string>([], { isMapMode: true });
|
|
23
|
+
t.set(1, 'a');
|
|
24
|
+
|
|
25
|
+
// Patch getNode to be non-real so _setByNode uses `super.set(key, values)`.
|
|
26
|
+
const origGetNode = (t as any).getNode;
|
|
27
|
+
(t as any).getNode = () => (t as any)._NIL;
|
|
28
|
+
|
|
29
|
+
// Patch super.set to return false so _setByNode becomes falsy and OR evaluates _setToValues.
|
|
30
|
+
const rbProto = Object.getPrototypeOf(Object.getPrototypeOf(t));
|
|
31
|
+
const origSuperSet = rbProto.set;
|
|
32
|
+
rbProto.set = () => false;
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
expect(t.set(1, 'b')).toBe(true);
|
|
36
|
+
expect(t.get(1)).toEqual(['a', 'b']);
|
|
37
|
+
} finally {
|
|
38
|
+
rbProto.set = origSuperSet;
|
|
39
|
+
(t as any).getNode = origGetNode;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('_createInstance/_createLike cover snapshotOptions fallback (?? {}) and createLike default iter=[]', () => {
|
|
44
|
+
const t = new TreeMultiMap<number, string>();
|
|
45
|
+
|
|
46
|
+
const orig = (t as any)._snapshotOptions;
|
|
47
|
+
(t as any)._snapshotOptions = undefined;
|
|
48
|
+
try {
|
|
49
|
+
const inst = (t as any)._createInstance();
|
|
50
|
+
expect(inst).toBeInstanceOf(TreeMultiMap);
|
|
51
|
+
|
|
52
|
+
const like = (t as any)._createLike();
|
|
53
|
+
expect(like).toBeInstanceOf(TreeMultiMap);
|
|
54
|
+
expect(like.size).toBe(0);
|
|
55
|
+
} finally {
|
|
56
|
+
(t as any)._snapshotOptions = orig;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|