0
0
mirror of https://github.com/nodejs/node.git synced 2024-11-29 23:16:30 +01:00
nodejs/test/parallel/test-console-table.js
Gus Caplan 97ace04492
console: add table method
PR-URL: https://github.com/nodejs/node/pull/18137
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
2018-03-30 19:41:41 -05:00

197 lines
7.3 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const { Console } = require('console');
const queue = [];
const console = new Console({ write: (x) => {
queue.push(x);
}, removeListener: () => {} }, process.stderr, false);
function test(data, only, expected) {
if (arguments.length === 2) {
expected = only;
only = undefined;
}
console.table(data, only);
assert.strictEqual(queue.shift(), expected.trimLeft());
}
common.expectsError(() => console.table([], false), {
code: 'ERR_INVALID_ARG_TYPE',
});
test(null, 'null\n');
test(undefined, 'undefined\n');
test(false, 'false\n');
test('hi', 'hi\n');
test(Symbol(), 'Symbol()\n');
test([1, 2, 3], `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└─────────┴────────┘
`);
test([Symbol(), 5, [10]], `
┌─────────┬──────────┐
│ (index) │ Values │
├─────────┼──────────┤
│ 0 │ Symbol() │
│ 1 │ 5 │
│ 2 │ [ 10 ] │
└─────────┴──────────┘
`);
test([undefined, 5], `
┌─────────┬───────────┐
│ (index) │ Values │
├─────────┼───────────┤
│ 0 │ undefined │
│ 1 │ 5 │
└─────────┴───────────┘
`);
test({ a: 1, b: Symbol(), c: [10] }, `
┌─────────┬────┬──────────┐
│ (index) │ 0 │ Values │
├─────────┼────┼──────────┤
│ a │ │ 1 │
│ b │ │ Symbol() │
│ c │ 10 │ │
└─────────┴────┴──────────┘
`);
test(new Map([ ['a', 1], [Symbol(), [2]] ]), `
┌───────────────────┬──────────┬────────┐
│ (iteration index) │ Key │ Values │
├───────────────────┼──────────┼────────┤
│ 0 │ 'a' │ 1 │
│ 1 │ Symbol() │ [ 2 ] │
└───────────────────┴──────────┴────────┘
`);
test(new Set([1, 2, Symbol()]), `
┌───────────────────┬──────────┐
│ (iteration index) │ Values │
├───────────────────┼──────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ Symbol() │
└───────────────────┴──────────┘
`);
test({ a: 1, b: 2 }, ['a'], `
┌─────────┬───┐
│ (index) │ a │
├─────────┼───┤
│ a │ │
│ b │ │
└─────────┴───┘
`);
test([{ a: 1, b: 2 }, { a: 3, c: 4 }], ['a'], `
┌─────────┬───┐
│ (index) │ a │
├─────────┼───┤
│ 0 │ 1 │
│ 1 │ 3 │
└─────────┴───┘
`);
test(new Map([[1, 1], [2, 2], [3, 3]]).entries(), `
┌───────────────────┬─────┬────────┐
│ (iteration index) │ Key │ Values │
├───────────────────┼─────┼────────┤
│ 0 │ 1 │ 1 │
│ 1 │ 2 │ 2 │
│ 2 │ 3 │ 3 │
└───────────────────┴─────┴────────┘
`);
test(new Set([1, 2, 3]).values(), `
┌───────────────────┬────────┐
│ (iteration index) │ Values │
├───────────────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└───────────────────┴────────┘
`);
test({ a: { a: 1, b: 2, c: 3 } }, `
┌─────────┬───┬───┬───┐
│ (index) │ a │ b │ c │
├─────────┼───┼───┼───┤
│ a │ 1 │ 2 │ 3 │
└─────────┴───┴───┴───┘
`);
test({ a: [1, 2] }, `
┌─────────┬───┬───┐
│ (index) │ 0 │ 1 │
├─────────┼───┼───┤
│ a │ 1 │ 2 │
└─────────┴───┴───┘
`);
test({ a: [1, 2, 3, 4, 5], b: 5, c: { e: 5 } }, `
┌─────────┬───┬───┬───┬───┬───┬───┬────────┐
│ (index) │ 0 │ 1 │ 2 │ 3 │ 4 │ e │ Values │
├─────────┼───┼───┼───┼───┼───┼───┼────────┤
│ a │ 1 │ 2 │ 3 │ 4 │ 5 │ │ │
│ b │ │ │ │ │ │ │ 5 │
│ c │ │ │ │ │ │ 5 │ │
└─────────┴───┴───┴───┴───┴───┴───┴────────┘
`);
test(new Uint8Array([1, 2, 3]), `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└─────────┴────────┘
`);
test(Buffer.from([1, 2, 3]), `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
└─────────┴────────┘
`);
test({ a: undefined }, ['x'], `
┌─────────┬───┐
│ (index) │ x │
├─────────┼───┤
│ a │ │
└─────────┴───┘
`);
test([], `
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
└─────────┴────────┘
`);
test(new Map(), `
┌───────────────────┬─────┬────────┐
│ (iteration index) │ Key │ Values │
├───────────────────┼─────┼────────┤
└───────────────────┴─────┴────────┘
`);