UNPKG

6.63 kBJavaScriptView Raw
1var test = require('tape');
2var forEach = require('for-each');
3
4var inspect = require('../');
5
6test('bad indent options', function (t) {
7 forEach([
8 undefined,
9 true,
10 false,
11 -1,
12 1.2,
13 Infinity,
14 -Infinity,
15 NaN
16 ], function (indent) {
17 t['throws'](
18 function () { inspect('', { indent: indent }); },
19 TypeError,
20 inspect(indent) + ' is invalid'
21 );
22 });
23
24 t.end();
25});
26
27test('simple object with indent', function (t) {
28 t.plan(2);
29
30 var obj = { a: 1, b: 2 };
31
32 var expectedSpaces = [
33 '{',
34 ' a: 1,',
35 ' b: 2',
36 '}'
37 ].join('\n');
38 var expectedTabs = [
39 '{',
40 ' a: 1,',
41 ' b: 2',
42 '}'
43 ].join('\n');
44
45 t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
46 t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
47});
48
49test('two deep object with indent', function (t) {
50 t.plan(2);
51
52 var obj = { a: 1, b: { c: 3, d: 4 } };
53
54 var expectedSpaces = [
55 '{',
56 ' a: 1,',
57 ' b: {',
58 ' c: 3,',
59 ' d: 4',
60 ' }',
61 '}'
62 ].join('\n');
63 var expectedTabs = [
64 '{',
65 ' a: 1,',
66 ' b: {',
67 ' c: 3,',
68 ' d: 4',
69 ' }',
70 '}'
71 ].join('\n');
72
73 t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
74 t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
75});
76
77test('simple array with all single line elements', function (t) {
78 t.plan(2);
79
80 var obj = [1, 2, 3, 'asdf\nsdf'];
81
82 var expected = '[ 1, 2, 3, \'asdf\\nsdf\' ]';
83
84 t.equal(inspect(obj, { indent: 2 }), expected, 'two');
85 t.equal(inspect(obj, { indent: '\t' }), expected, 'tabs');
86});
87
88test('array with complex elements', function (t) {
89 t.plan(2);
90
91 var obj = [1, { a: 1, b: { c: 1 } }, 'asdf\nsdf'];
92
93 var expectedSpaces = [
94 '[',
95 ' 1,',
96 ' {',
97 ' a: 1,',
98 ' b: {',
99 ' c: 1',
100 ' }',
101 ' },',
102 ' \'asdf\\nsdf\'',
103 ']'
104 ].join('\n');
105 var expectedTabs = [
106 '[',
107 ' 1,',
108 ' {',
109 ' a: 1,',
110 ' b: {',
111 ' c: 1',
112 ' }',
113 ' },',
114 ' \'asdf\\nsdf\'',
115 ']'
116 ].join('\n');
117
118 t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
119 t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
120});
121
122test('values', function (t) {
123 t.plan(2);
124 var obj = [{}, [], { 'a-b': 5 }];
125
126 var expectedSpaces = [
127 '[',
128 ' {},',
129 ' [],',
130 ' {',
131 ' \'a-b\': 5',
132 ' }',
133 ']'
134 ].join('\n');
135 var expectedTabs = [
136 '[',
137 ' {},',
138 ' [],',
139 ' {',
140 ' \'a-b\': 5',
141 ' }',
142 ']'
143 ].join('\n');
144
145 t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two');
146 t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs');
147});
148
149test('Map', { skip: typeof Map !== 'function' }, function (t) {
150 var map = new Map();
151 map.set({ a: 1 }, ['b']);
152 map.set(3, NaN);
153
154 var expectedStringSpaces = [
155 'Map (2) {',
156 ' { a: 1 } => [ \'b\' ],',
157 ' 3 => NaN',
158 '}'
159 ].join('\n');
160 var expectedStringTabs = [
161 'Map (2) {',
162 ' { a: 1 } => [ \'b\' ],',
163 ' 3 => NaN',
164 '}'
165 ].join('\n');
166 var expectedStringTabsDoubleQuotes = [
167 'Map (2) {',
168 ' { a: 1 } => [ "b" ],',
169 ' 3 => NaN',
170 '}'
171 ].join('\n');
172
173 t.equal(
174 inspect(map, { indent: 2 }),
175 expectedStringSpaces,
176 'Map keys are not indented (two)'
177 );
178 t.equal(
179 inspect(map, { indent: '\t' }),
180 expectedStringTabs,
181 'Map keys are not indented (tabs)'
182 );
183 t.equal(
184 inspect(map, { indent: '\t', quoteStyle: 'double' }),
185 expectedStringTabsDoubleQuotes,
186 'Map keys are not indented (tabs + double quotes)'
187 );
188
189 t.equal(inspect(new Map(), { indent: 2 }), 'Map (0) {}', 'empty Map should show as empty (two)');
190 t.equal(inspect(new Map(), { indent: '\t' }), 'Map (0) {}', 'empty Map should show as empty (tabs)');
191
192 var nestedMap = new Map();
193 nestedMap.set(nestedMap, map);
194 var expectedNestedSpaces = [
195 'Map (1) {',
196 ' [Circular] => Map (2) {',
197 ' { a: 1 } => [ \'b\' ],',
198 ' 3 => NaN',
199 ' }',
200 '}'
201 ].join('\n');
202 var expectedNestedTabs = [
203 'Map (1) {',
204 ' [Circular] => Map (2) {',
205 ' { a: 1 } => [ \'b\' ],',
206 ' 3 => NaN',
207 ' }',
208 '}'
209 ].join('\n');
210 t.equal(inspect(nestedMap, { indent: 2 }), expectedNestedSpaces, 'Map containing a Map should work (two)');
211 t.equal(inspect(nestedMap, { indent: '\t' }), expectedNestedTabs, 'Map containing a Map should work (tabs)');
212
213 t.end();
214});
215
216test('Set', { skip: typeof Set !== 'function' }, function (t) {
217 var set = new Set();
218 set.add({ a: 1 });
219 set.add(['b']);
220 var expectedStringSpaces = [
221 'Set (2) {',
222 ' {',
223 ' a: 1',
224 ' },',
225 ' [ \'b\' ]',
226 '}'
227 ].join('\n');
228 var expectedStringTabs = [
229 'Set (2) {',
230 ' {',
231 ' a: 1',
232 ' },',
233 ' [ \'b\' ]',
234 '}'
235 ].join('\n');
236 t.equal(inspect(set, { indent: 2 }), expectedStringSpaces, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (two)');
237 t.equal(inspect(set, { indent: '\t' }), expectedStringTabs, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (tabs)');
238
239 t.equal(inspect(new Set(), { indent: 2 }), 'Set (0) {}', 'empty Set should show as empty (two)');
240 t.equal(inspect(new Set(), { indent: '\t' }), 'Set (0) {}', 'empty Set should show as empty (tabs)');
241
242 var nestedSet = new Set();
243 nestedSet.add(set);
244 nestedSet.add(nestedSet);
245 var expectedNestedSpaces = [
246 'Set (2) {',
247 ' Set (2) {',
248 ' {',
249 ' a: 1',
250 ' },',
251 ' [ \'b\' ]',
252 ' },',
253 ' [Circular]',
254 '}'
255 ].join('\n');
256 var expectedNestedTabs = [
257 'Set (2) {',
258 ' Set (2) {',
259 ' {',
260 ' a: 1',
261 ' },',
262 ' [ \'b\' ]',
263 ' },',
264 ' [Circular]',
265 '}'
266 ].join('\n');
267 t.equal(inspect(nestedSet, { indent: 2 }), expectedNestedSpaces, 'Set containing a Set should work (two)');
268 t.equal(inspect(nestedSet, { indent: '\t' }), expectedNestedTabs, 'Set containing a Set should work (tabs)');
269
270 t.end();
271});