1 | "use strict";
|
2 |
|
3 | var util = require("../lib/util");
|
4 | var assert = require("assert");
|
5 |
|
6 | describe("#isEqual", function() {
|
7 | var mapA1 = new Map();
|
8 | mapA1.set("a", 1);
|
9 | var mapA2 = new Map();
|
10 | mapA2.set("a", 1);
|
11 | var mapA3 = new Map();
|
12 | mapA3.set("a", 1);
|
13 | mapA3.set("b", 1);
|
14 | var mapB = new Map();
|
15 | mapB.set("a", 2);
|
16 | var mapC = new Map();
|
17 | mapC.set("a", [1,2,3]);
|
18 | var mapD1 = new Map();
|
19 | mapD1.set("a", mapA1);
|
20 | var mapD2 = new Map();
|
21 | mapD2.set("a", mapA2);
|
22 | var mapD3 = new Map();
|
23 | mapD3.set("a", mapB);
|
24 |
|
25 | var tests = [
|
26 | {
|
27 | values: [true, true],
|
28 | isEqual: true
|
29 | },
|
30 | {
|
31 | values: [false, false],
|
32 | isEqual: true
|
33 | },
|
34 | {
|
35 | values: [true, false],
|
36 | isEqual: false
|
37 | },
|
38 | {
|
39 | values: [true, "true"],
|
40 | isEqual: false
|
41 | },
|
42 | {
|
43 | values: ["", ""],
|
44 | isEqual: true
|
45 | },
|
46 | {
|
47 | values: ["abc", "abc"],
|
48 | isEqual: true
|
49 | },
|
50 | {
|
51 | values: ["abc", "def"],
|
52 | isEqual: false
|
53 | },
|
54 | {
|
55 | values: [[], []],
|
56 | isEqual: true
|
57 | },
|
58 | {
|
59 | values: [[1,2,3], [1,2,3]],
|
60 | isEqual: true
|
61 | },
|
62 | {
|
63 | values: [[1,2,3], [4,5,6]],
|
64 | isEqual: false
|
65 | },
|
66 | {
|
67 | values: [[1,2,3], []],
|
68 | isEqual: false
|
69 | },
|
70 | {
|
71 | values: [{}, {}],
|
72 | isEqual: true
|
73 | },
|
74 | {
|
75 | values: [{a: true}, {a: true}],
|
76 | isEqual: true
|
77 | },
|
78 | {
|
79 | values: [{a: true}, {a: false}],
|
80 | isEqual: false
|
81 | },
|
82 | {
|
83 | values: [{a: true}, {a: true, b: true}],
|
84 | isEqual: false
|
85 | },
|
86 | {
|
87 | values: [mapA1, mapA1],
|
88 | isEqual: true
|
89 | },
|
90 | {
|
91 | values: [mapA1, mapA2],
|
92 | isEqual: true
|
93 | },
|
94 | {
|
95 | values: [mapA1, mapA3],
|
96 | isEqual: false
|
97 | },
|
98 | {
|
99 | values: [mapB, mapC],
|
100 | isEqual: false
|
101 | },
|
102 | {
|
103 | values: [mapD1, mapD2],
|
104 | isEqual: true
|
105 | },
|
106 | {
|
107 | values: [mapD1, mapD3],
|
108 | isEqual: false
|
109 | },
|
110 | {
|
111 | values: [mapA1, {a: 1}],
|
112 | isEqual: false
|
113 | }
|
114 | ];
|
115 |
|
116 | tests.forEach(function(test) {
|
117 | var a = test.values[0];
|
118 | var b = test.values[1];
|
119 | var message = "`" + (a instanceof Map ? "Map" : JSON.stringify(a)) + "` is " + (test.isEqual ? "" : "not ") + "equivalent to `" + (b instanceof Map ? "Map" : JSON.stringify(b)) + "`";
|
120 | it(message, function() {
|
121 | assert.equal(util.isEqual(a, b), test.isEqual);
|
122 | });
|
123 | });
|
124 | });
|
125 |
|
126 | describe("#strSubstitute", function() {
|
127 | it("should work with an object", function() {
|
128 | var result = util.strSubstitute("{a}", {
|
129 | a: 1
|
130 | });
|
131 | assert.equal("1", result);
|
132 | });
|
133 | });
|