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++]);
}
}
}
});
});
|