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