[d565449] | 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 | });
|
---|