1 | 'use strict';
|
2 |
|
3 | var tape = require('../');
|
4 | var tap = require('tap');
|
5 | var concat = require('concat-stream');
|
6 |
|
7 | var stripFullStack = require('./common').stripFullStack;
|
8 |
|
9 | tap.test('edge cases', function (tt) {
|
10 | tt.plan(1);
|
11 |
|
12 | var test = tape.createHarness();
|
13 | test.createStream().pipe(concat(function (body) {
|
14 | tt.equal(
|
15 | stripFullStack(body.toString('utf8')),
|
16 | 'TAP version 13\n'
|
17 | + '# zeroes\n'
|
18 | + 'not ok 1 0 equal to -0\n'
|
19 | + ' ---\n'
|
20 | + ' operator: equal\n'
|
21 | + ' expected: |-\n'
|
22 | + ' -0\n'
|
23 | + ' actual: |-\n'
|
24 | + ' 0\n'
|
25 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
26 | + ' stack: |-\n'
|
27 | + ' Error: 0 equal to -0\n'
|
28 | + ' [... stack stripped ...]\n'
|
29 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
30 | + ' [... stack stripped ...]\n'
|
31 | + ' ...\n'
|
32 | + 'not ok 2 -0 equal to 0\n'
|
33 | + ' ---\n'
|
34 | + ' operator: equal\n'
|
35 | + ' expected: |-\n'
|
36 | + ' 0\n'
|
37 | + ' actual: |-\n'
|
38 | + ' -0\n'
|
39 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
40 | + ' stack: |-\n'
|
41 | + ' Error: -0 equal to 0\n'
|
42 | + ' [... stack stripped ...]\n'
|
43 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
44 | + ' [... stack stripped ...]\n'
|
45 | + ' ...\n'
|
46 | + 'ok 3 0 notEqual to -0\n'
|
47 | + 'ok 4 -0 notEqual to 0\n'
|
48 | + 'ok 5 0 looseEqual to -0\n'
|
49 | + 'ok 6 -0 looseEqual to 0\n'
|
50 | + 'not ok 7 0 notLooseEqual to -0\n'
|
51 | + ' ---\n'
|
52 | + ' operator: notLooseEqual\n'
|
53 | + ' expected: |-\n'
|
54 | + ' -0\n'
|
55 | + ' actual: |-\n'
|
56 | + ' 0\n'
|
57 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
58 | + ' stack: |-\n'
|
59 | + ' Error: 0 notLooseEqual to -0\n'
|
60 | + ' [... stack stripped ...]\n'
|
61 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
62 | + ' [... stack stripped ...]\n'
|
63 | + ' ...\n'
|
64 | + 'not ok 8 -0 notLooseEqual to 0\n'
|
65 | + ' ---\n'
|
66 | + ' operator: notLooseEqual\n'
|
67 | + ' expected: |-\n'
|
68 | + ' 0\n'
|
69 | + ' actual: |-\n'
|
70 | + ' -0\n'
|
71 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
72 | + ' stack: |-\n'
|
73 | + ' Error: -0 notLooseEqual to 0\n'
|
74 | + ' [... stack stripped ...]\n'
|
75 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
76 | + ' [... stack stripped ...]\n'
|
77 | + ' ...\n'
|
78 | + 'not ok 9 0 strictEqual to -0\n'
|
79 | + ' ---\n'
|
80 | + ' operator: equal\n'
|
81 | + ' expected: |-\n'
|
82 | + ' -0\n'
|
83 | + ' actual: |-\n'
|
84 | + ' 0\n'
|
85 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
86 | + ' stack: |-\n'
|
87 | + ' Error: 0 strictEqual to -0\n'
|
88 | + ' [... stack stripped ...]\n'
|
89 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
90 | + ' [... stack stripped ...]\n'
|
91 | + ' ...\n'
|
92 | + 'not ok 10 -0 strictEqual to 0\n'
|
93 | + ' ---\n'
|
94 | + ' operator: equal\n'
|
95 | + ' expected: |-\n'
|
96 | + ' 0\n'
|
97 | + ' actual: |-\n'
|
98 | + ' -0\n'
|
99 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
100 | + ' stack: |-\n'
|
101 | + ' Error: -0 strictEqual to 0\n'
|
102 | + ' [... stack stripped ...]\n'
|
103 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
104 | + ' [... stack stripped ...]\n'
|
105 | + ' ...\n'
|
106 | + 'ok 11 0 notStrictEqual to -0\n'
|
107 | + 'ok 12 -0 notStrictEqual to 0\n'
|
108 | + 'ok 13 0 deepLooseEqual to -0\n'
|
109 | + 'ok 14 -0 deepLooseEqual to 0\n'
|
110 | + 'not ok 15 0 notDeepLooseEqual to -0\n'
|
111 | + ' ---\n'
|
112 | + ' operator: notDeepLooseEqual\n'
|
113 | + ' expected: |-\n'
|
114 | + ' -0\n'
|
115 | + ' actual: |-\n'
|
116 | + ' 0\n'
|
117 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
118 | + ' stack: |-\n'
|
119 | + ' Error: 0 notDeepLooseEqual to -0\n'
|
120 | + ' [... stack stripped ...]\n'
|
121 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
122 | + ' [... stack stripped ...]\n'
|
123 | + ' ...\n'
|
124 | + 'not ok 16 -0 notDeepLooseEqual to 0\n'
|
125 | + ' ---\n'
|
126 | + ' operator: notDeepLooseEqual\n'
|
127 | + ' expected: |-\n'
|
128 | + ' 0\n'
|
129 | + ' actual: |-\n'
|
130 | + ' -0\n'
|
131 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
132 | + ' stack: |-\n'
|
133 | + ' Error: -0 notDeepLooseEqual to 0\n'
|
134 | + ' [... stack stripped ...]\n'
|
135 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
136 | + ' [... stack stripped ...]\n'
|
137 | + ' ...\n'
|
138 | + 'not ok 17 0 deepEqual to -0\n'
|
139 | + ' ---\n'
|
140 | + ' operator: deepEqual\n'
|
141 | + ' expected: |-\n'
|
142 | + ' -0\n'
|
143 | + ' actual: |-\n'
|
144 | + ' 0\n'
|
145 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
146 | + ' stack: |-\n'
|
147 | + ' Error: 0 deepEqual to -0\n'
|
148 | + ' [... stack stripped ...]\n'
|
149 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
150 | + ' [... stack stripped ...]\n'
|
151 | + ' ...\n'
|
152 | + 'not ok 18 -0 deepEqual to 0\n'
|
153 | + ' ---\n'
|
154 | + ' operator: deepEqual\n'
|
155 | + ' expected: |-\n'
|
156 | + ' 0\n'
|
157 | + ' actual: |-\n'
|
158 | + ' -0\n'
|
159 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
160 | + ' stack: |-\n'
|
161 | + ' Error: -0 deepEqual to 0\n'
|
162 | + ' [... stack stripped ...]\n'
|
163 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
164 | + ' [... stack stripped ...]\n'
|
165 | + ' ...\n'
|
166 | + 'ok 19 0 notDeepEqual to -0\n'
|
167 | + 'ok 20 -0 notDeepEqual to 0\n'
|
168 | + '# NaNs\n'
|
169 | + 'ok 21 NaN equal to NaN\n'
|
170 | + 'not ok 22 NaN notEqual to NaN\n'
|
171 | + ' ---\n'
|
172 | + ' operator: notEqual\n'
|
173 | + ' expected: NaN\n'
|
174 | + ' actual: NaN\n'
|
175 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
176 | + ' stack: |-\n'
|
177 | + ' Error: NaN notEqual to NaN\n'
|
178 | + ' [... stack stripped ...]\n'
|
179 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
180 | + ' [... stack stripped ...]\n'
|
181 | + ' ...\n'
|
182 | + 'not ok 23 NaN looseEqual to NaN\n'
|
183 | + ' ---\n'
|
184 | + ' operator: looseEqual\n'
|
185 | + ' expected: NaN\n'
|
186 | + ' actual: NaN\n'
|
187 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
188 | + ' stack: |-\n'
|
189 | + ' Error: NaN looseEqual to NaN\n'
|
190 | + ' [... stack stripped ...]\n'
|
191 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
192 | + ' [... stack stripped ...]\n'
|
193 | + ' ...\n'
|
194 | + 'ok 24 NaN notLooseEqual to NaN\n'
|
195 | + 'ok 25 NaN strictEqual to NaN\n'
|
196 | + 'not ok 26 NaN notStrictEqual to NaN\n'
|
197 | + ' ---\n'
|
198 | + ' operator: notEqual\n'
|
199 | + ' expected: NaN\n'
|
200 | + ' actual: NaN\n'
|
201 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
202 | + ' stack: |-\n'
|
203 | + ' Error: NaN notStrictEqual to NaN\n'
|
204 | + ' [... stack stripped ...]\n'
|
205 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
206 | + ' [... stack stripped ...]\n'
|
207 | + ' ...\n'
|
208 | + 'not ok 27 NaN deepLooseEqual to NaN\n'
|
209 | + ' ---\n'
|
210 | + ' operator: deepLooseEqual\n'
|
211 | + ' expected: NaN\n'
|
212 | + ' actual: NaN\n'
|
213 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
214 | + ' stack: |-\n'
|
215 | + ' Error: NaN deepLooseEqual to NaN\n'
|
216 | + ' [... stack stripped ...]\n'
|
217 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
218 | + ' [... stack stripped ...]\n'
|
219 | + ' ...\n'
|
220 | + 'ok 28 NaN notDeepLooseEqual to NaN\n'
|
221 | + 'ok 29 NaN deepEqual to NaN\n'
|
222 | + 'not ok 30 NaN notDeepEqual to NaN\n'
|
223 | + ' ---\n'
|
224 | + ' operator: notDeepEqual\n'
|
225 | + ' expected: NaN\n'
|
226 | + ' actual: NaN\n'
|
227 | + ' at: Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
228 | + ' stack: |-\n'
|
229 | + ' Error: NaN notDeepEqual to NaN\n'
|
230 | + ' [... stack stripped ...]\n'
|
231 | + ' at Test.<anonymous> ($TEST/edge-cases.js:$LINE:$COL)\n'
|
232 | + ' [... stack stripped ...]\n'
|
233 | + ' ...\n'
|
234 | + '\n1..30\n'
|
235 | + '# tests 30\n'
|
236 | + '# pass 15\n'
|
237 | + '# fail 15\n'
|
238 | );
|
239 | }));
|
240 |
|
241 | test('zeroes', function (t) {
|
242 | t.equal(0, -0, '0 equal to -0');
|
243 | t.equal(-0, 0, '-0 equal to 0');
|
244 | t.notEqual(0, -0, '0 notEqual to -0');
|
245 | t.notEqual(-0, 0, '-0 notEqual to 0');
|
246 |
|
247 | t.looseEqual(0, -0, '0 looseEqual to -0');
|
248 | t.looseEqual(-0, 0, '-0 looseEqual to 0');
|
249 | t.notLooseEqual(0, -0, '0 notLooseEqual to -0');
|
250 | t.notLooseEqual(-0, 0, '-0 notLooseEqual to 0');
|
251 |
|
252 | t.strictEqual(0, -0, '0 strictEqual to -0');
|
253 | t.strictEqual(-0, 0, '-0 strictEqual to 0');
|
254 | t.notStrictEqual(0, -0, '0 notStrictEqual to -0');
|
255 | t.notStrictEqual(-0, 0, '-0 notStrictEqual to 0');
|
256 |
|
257 | t.deepLooseEqual(0, -0, '0 deepLooseEqual to -0');
|
258 | t.deepLooseEqual(-0, 0, '-0 deepLooseEqual to 0');
|
259 | t.notDeepLooseEqual(0, -0, '0 notDeepLooseEqual to -0');
|
260 | t.notDeepLooseEqual(-0, 0, '-0 notDeepLooseEqual to 0');
|
261 |
|
262 | t.deepEqual(0, -0, '0 deepEqual to -0');
|
263 | t.deepEqual(-0, 0, '-0 deepEqual to 0');
|
264 | t.notDeepEqual(0, -0, '0 notDeepEqual to -0');
|
265 | t.notDeepEqual(-0, 0, '-0 notDeepEqual to 0');
|
266 |
|
267 | t.end();
|
268 | });
|
269 |
|
270 | test('NaNs', function (t) {
|
271 | t.equal(NaN, NaN, 'NaN equal to NaN');
|
272 | t.notEqual(NaN, NaN, 'NaN notEqual to NaN');
|
273 |
|
274 | t.looseEqual(NaN, NaN, 'NaN looseEqual to NaN');
|
275 | t.notLooseEqual(NaN, NaN, 'NaN notLooseEqual to NaN');
|
276 |
|
277 | t.strictEqual(NaN, NaN, 'NaN strictEqual to NaN');
|
278 | t.notStrictEqual(NaN, NaN, 'NaN notStrictEqual to NaN');
|
279 |
|
280 | t.deepLooseEqual(NaN, NaN, 'NaN deepLooseEqual to NaN');
|
281 | t.notDeepLooseEqual(NaN, NaN, 'NaN notDeepLooseEqual to NaN');
|
282 |
|
283 | t.deepEqual(NaN, NaN, 'NaN deepEqual to NaN');
|
284 | t.notDeepEqual(NaN, NaN, 'NaN notDeepEqual to NaN');
|
285 |
|
286 | t.end();
|
287 | });
|
288 | });
|