| 1 | var test = require('tape');
|
|---|
| 2 | var forEach = require('for-each');
|
|---|
| 3 |
|
|---|
| 4 | var inspect = require('../');
|
|---|
| 5 |
|
|---|
| 6 | test('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 |
|
|---|
| 27 | test('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 |
|
|---|
| 49 | test('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 |
|
|---|
| 77 | test('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 |
|
|---|
| 88 | test('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 |
|
|---|
| 122 | test('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 |
|
|---|
| 149 | test('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 |
|
|---|
| 216 | test('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 | });
|
|---|