'use strict'; require('../common'); const assert = require('assert'); // This test ensures that assert.CallTracker.calls() works as intended. const tracker = new assert.CallTracker(); function bar() {} const err = { code: 'ERR_INVALID_ARG_TYPE', }; // Ensures calls() throws on invalid input types. assert.throws(() => { const callsbar = tracker.calls(bar, '1'); callsbar(); }, err ); assert.throws(() => { const callsbar = tracker.calls(bar, 0.1); callsbar(); }, { code: 'ERR_OUT_OF_RANGE' } ); assert.throws(() => { const callsbar = tracker.calls(bar, true); callsbar(); }, err ); assert.throws(() => { const callsbar = tracker.calls(bar, () => {}); callsbar(); }, err ); assert.throws(() => { const callsbar = tracker.calls(bar, null); callsbar(); }, err ); // Expects an error as tracker.calls() cannot be called within a process exit // handler. process.on('exit', () => { assert.throws(() => tracker.calls(bar, 1), { code: 'ERR_UNAVAILABLE_DURING_EXIT', }); }); const msg = 'Expected to throw'; function func() { throw new Error(msg); } const callsfunc = tracker.calls(func, 1); // Expects callsfunc() to call func() which throws an error. assert.throws( () => callsfunc(), { message: msg } ); { const tracker = new assert.CallTracker(); const callsNoop = tracker.calls(1); callsNoop(); tracker.verify(); } { const tracker = new assert.CallTracker(); const callsNoop = tracker.calls(undefined, 1); callsNoop(); tracker.verify(); }