File: symbol-iterator.test.ts

package info (click to toggle)
node-js-sdsl 4.1.4-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 928 kB
  • sloc: javascript: 61; sh: 8; makefile: 2
file content (61 lines) | stat: -rw-r--r-- 1,620 bytes parent folder | download
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
import {
  Vector,
  LinkList,
  Deque,
  OrderedSet,
  OrderedMap,
  HashSet,
  HashMap
} from '../../src/index';

let arr: number[] = [];
const testNum = 10000;
for (let i = 0; i < testNum; ++i) {
  arr.push(Math.floor(Math.random() * testNum));
}
arr = Array.from(new Set(arr));
arr.sort((x, y) => x - y);

const containerArr = [
  new Vector(arr),
  new LinkList(arr),
  new Deque(arr),
  new OrderedSet(arr),
  new OrderedMap(arr.map((element, index) => [index, element]))
];

describe('symbol iterator test', () => {
  test('HashSet symbol iterator test', () => {
    const myHashSet = new HashSet(arr);
    const st = new Set(arr);
    for (const element of myHashSet) {
      expect(st.has(element)).toEqual(true);
      st.delete(element);
    }
    expect(st.size).toEqual(0);
  });

  test('HashSet symbol iterator test', () => {
    const myHashMap = new HashMap(arr.map((element, index) => [index, element]));
    const mp = new Map(arr.map((element, index) => [index, element]));
    for (const element of myHashMap) {
      expect(element[1]).toEqual(mp.get(element[0]));
      mp.delete(element[0]);
    }
    expect(mp.size).toEqual(0);
  });

  test('non-hash-container symbol iterator test', () => {
    for (const container of containerArr) {
      let index = 0;
      for (const element of container) {
        if (container instanceof OrderedMap) {
          expect((element as [number, number])[1])
            .toEqual(arr[index++]);
        } else {
          expect(element).toEqual(arr[index++]);
        }
      }
    }
  });
});