node/test/parallel/test-console-count.js
James M Snell cc43c8fb54 console: add console.count() and console.clear()
Both are simple utility functions defined by the WHATWG
console spec (https://console.spec.whatwg.org/).

PR-URL: https://github.com/nodejs/node/pull/12678
Ref: https://github.com/nodejs/node/issues/12675
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
2017-08-02 08:23:07 -07:00

64 lines
1.4 KiB
JavaScript

'use strict';
require('../common');
const assert = require('assert');
const stdoutWrite = process.stdout.write;
let buf = '';
process.stdout.write = (string) => buf = string;
console.count();
assert.strictEqual(buf, 'default: 1\n');
// 'default' and undefined are equivalent
console.count('default');
assert.strictEqual(buf, 'default: 2\n');
console.count('a');
assert.strictEqual(buf, 'a: 1\n');
console.count('b');
assert.strictEqual(buf, 'b: 1\n');
console.count('a');
assert.strictEqual(buf, 'a: 2\n');
console.count();
assert.strictEqual(buf, 'default: 3\n');
console.count({});
assert.strictEqual(buf, '[object Object]: 1\n');
console.count(1);
assert.strictEqual(buf, '1: 1\n');
console.count(null);
assert.strictEqual(buf, 'null: 1\n');
console.count('null');
assert.strictEqual(buf, 'null: 2\n');
console.countReset();
console.count();
assert.strictEqual(buf, 'default: 1\n');
console.countReset('a');
console.count('a');
assert.strictEqual(buf, 'a: 1\n');
// countReset('a') only reset the a counter
console.count();
assert.strictEqual(buf, 'default: 2\n');
process.stdout.write = stdoutWrite;
// Symbol labels do not work
assert.throws(
() => console.count(Symbol('test')),
/^TypeError: Cannot convert a Symbol value to a string$/);
assert.throws(
() => console.countReset(Symbol('test')),
/^TypeError: Cannot convert a Symbol value to a string$/);