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