corrade-nucleus-nucleons – Blame information for rev 20
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
20 | office | 1 | var t = require('tap') |
2 | |||
3 | process.env.TEST_PSEUDOMAP = 'true' |
||
4 | |||
5 | var PM = require('../') |
||
6 | runTests(PM) |
||
7 | |||
8 | // if possible, verify that Map also behaves the same way |
||
9 | if (typeof Map === 'function') |
||
10 | runTests(Map) |
||
11 | |||
12 | |||
13 | function runTests (Map) { |
||
14 | t.throws(Map) |
||
15 | |||
16 | var m = new Map() |
||
17 | |||
18 | t.equal(m.size, 0) |
||
19 | |||
20 | m.set(1, '1 string') |
||
21 | t.equal(m.get(1), '1 string') |
||
22 | t.equal(m.size, 1) |
||
23 | m.size = 1000 |
||
24 | t.equal(m.size, 1) |
||
25 | m.size = 0 |
||
26 | t.equal(m.size, 1) |
||
27 | |||
28 | m = new Map([[1, 'number 1'], ['1', 'string 1']]) |
||
29 | t.equal(m.get(1), 'number 1') |
||
30 | t.equal(m.get('1'), 'string 1') |
||
31 | t.equal(m.size, 2) |
||
32 | |||
33 | m = new Map(m) |
||
34 | t.equal(m.get(1), 'number 1') |
||
35 | t.equal(m.get('1'), 'string 1') |
||
36 | t.equal(m.size, 2) |
||
37 | |||
38 | var akey = {} |
||
39 | var bkey = {} |
||
40 | m.set(akey, { some: 'data' }) |
||
41 | m.set(bkey, { some: 'other data' }) |
||
42 | t.same(m.get(akey), { some: 'data' }) |
||
43 | t.same(m.get(bkey), { some: 'other data' }) |
||
44 | t.equal(m.size, 4) |
||
45 | |||
46 | var x = /x/ |
||
47 | var y = /x/ |
||
48 | m.set(x, 'x regex') |
||
49 | m.set(y, 'y regex') |
||
50 | t.equal(m.get(x), 'x regex') |
||
51 | m.set(x, 'x again') |
||
52 | t.equal(m.get(x), 'x again') |
||
53 | t.equal(m.size, 6) |
||
54 | |||
55 | m.set(NaN, 'not a number') |
||
56 | t.equal(m.get(NaN), 'not a number') |
||
57 | m.set(NaN, 'it is a ' + typeof NaN) |
||
58 | t.equal(m.get(NaN), 'it is a number') |
||
59 | m.set('NaN', 'stringie nan') |
||
60 | t.equal(m.get(NaN), 'it is a number') |
||
61 | t.equal(m.get('NaN'), 'stringie nan') |
||
62 | t.equal(m.size, 8) |
||
63 | |||
64 | m.delete(NaN) |
||
65 | t.equal(m.get(NaN), undefined) |
||
66 | t.equal(m.size, 7) |
||
67 | |||
68 | var expect = [ |
||
69 | { value: 'number 1', key: 1 }, |
||
70 | { value: 'string 1', key: '1' }, |
||
71 | { value: { some: 'data' }, key: {} }, |
||
72 | { value: { some: 'other data' }, key: {} }, |
||
73 | { value: 'x again', key: /x/ }, |
||
74 | { value: 'y regex', key: /x/ }, |
||
75 | { value: 'stringie nan', key: 'NaN' } |
||
76 | ] |
||
77 | var actual = [] |
||
78 | |||
79 | m.forEach(function (value, key) { |
||
80 | actual.push({ value: value, key: key }) |
||
81 | }) |
||
82 | t.same(actual, expect) |
||
83 | |||
84 | m.clear() |
||
85 | t.equal(m.size, 0) |
||
86 | } |