'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. Only check that the `Error` is a `TypeError`. Do // not check the message because it is different depending on the JavaScript // engine. assert.throws( () => console.count(Symbol('test')), TypeError); assert.throws( () => console.countReset(Symbol('test')), TypeError);