1 | "use strict";
|
2 |
|
3 | var assert = require('chai').assert;
|
4 | var Multimap = require('..');
|
5 |
|
6 | var map = new Multimap([
|
7 | ['a', 'one'],
|
8 | ['b', 1],
|
9 | ['a', 'two'],
|
10 | ['b', 2]
|
11 | ]);
|
12 |
|
13 | assert.equal(map.size, 4);
|
14 |
|
15 | assert.equal(map.get('a').length, 2);
|
16 | assert.equal(map.get('a')[0], 'one');
|
17 | assert.equal(map.get('a')[1], 'two');
|
18 |
|
19 | assert.equal(map.get('b').length, 2);
|
20 | assert.equal(map.get('b')[0], 1);
|
21 | assert.equal(map.get('b')[1], 2);
|
22 |
|
23 |
|
24 | assert(map.has('a'), "map contains key 'a'");
|
25 | assert(!map.has('foo'), "map does not contain key 'foo'");
|
26 |
|
27 | assert(map.has('a', 'one'), "map contains entry 'a'=>'one'");
|
28 | assert(!map.has('b', 3), "map does not contain entry 'b'=>3");
|
29 |
|
30 | map.set('a', 'three');
|
31 |
|
32 | assert.equal(map.size, 5);
|
33 | assert.equal(map.get('a').length, 3);
|
34 |
|
35 | map.set('b', 3, 4);
|
36 | assert.equal(map.size, 7);
|
37 |
|
38 | assert(map.delete('a', 'three'), "delete 'a'=>'three'");
|
39 | assert.equal(map.size, 6);
|
40 | assert(!map.delete('x'), "empty 'x' for delete");
|
41 | assert(!map.delete('a', 'four'), "no such entry 'a'=>'four'");
|
42 | assert(map.delete('b'), "delete all 'b'");
|
43 |
|
44 | assert.equal(map.size, 2);
|
45 |
|
46 | map.set('b', 1, 2);
|
47 | assert.equal(map.size, 4);
|
48 |
|
49 | var cnt = 0;
|
50 | map.forEach(function(value, key) {
|
51 |
|
52 | cnt++;
|
53 | assert(key == 'a' || key == 'b', "key must be either 'a' or 'b'");
|
54 | });
|
55 |
|
56 | assert.equal(cnt, 4);
|
57 |
|
58 | cnt = 0;
|
59 | map.forEachEntry(function(entry, key) {
|
60 |
|
61 | cnt++;
|
62 | assert(key == 'a' || key == 'b', "key must be either 'a' or 'b'");
|
63 | assert.equal(entry.length, 2);
|
64 | });
|
65 |
|
66 | assert.equal(cnt, 2);
|
67 |
|
68 |
|
69 | var keys = map.keys();
|
70 | assert.equal(keys.next().value, 'a');
|
71 | assert.equal(keys.next().value, 'b');
|
72 | assert(keys.next().done);
|
73 |
|
74 | var values = map.values();
|
75 | assert.equal(values.next().value, 'one');
|
76 | assert.equal(values.next().value, 'two');
|
77 | assert.equal(values.next().value, 1);
|
78 | assert.equal(values.next().value, 2);
|
79 | assert(values.next().done);
|
80 |
|
81 |
|
82 | map.clear();
|
83 |
|
84 | assert.equal(map.size, 0);
|