UNPKG

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