1'use strict'; 2 3const assert = require('assert'); 4const common = require('./'); 5 6// The formats could change when V8 is updated, then the tests should be 7// updated accordingly. 8function assertResultShape(result) { 9 assert.strictEqual(typeof result.jsMemoryEstimate, 'number'); 10 assert.strictEqual(typeof result.jsMemoryRange[0], 'number'); 11 assert.strictEqual(typeof result.jsMemoryRange[1], 'number'); 12} 13 14function assertSummaryShape(result) { 15 assert.strictEqual(typeof result, 'object'); 16 assert.strictEqual(typeof result.total, 'object'); 17 assertResultShape(result.total); 18} 19 20function assertDetailedShape(result, contexts = 0) { 21 assert.strictEqual(typeof result, 'object'); 22 assert.strictEqual(typeof result.total, 'object'); 23 assert.strictEqual(typeof result.current, 'object'); 24 assertResultShape(result.total); 25 assertResultShape(result.current); 26 if (contexts === 0) { 27 assert.deepStrictEqual(result.other, []); 28 } else { 29 assert.strictEqual(result.other.length, contexts); 30 for (const item of result.other) { 31 assertResultShape(item); 32 } 33 } 34} 35 36function assertSingleDetailedShape(result) { 37 assert.strictEqual(typeof result, 'object'); 38 assert.strictEqual(typeof result.total, 'object'); 39 assert.strictEqual(typeof result.current, 'object'); 40 assert.deepStrictEqual(result.other, []); 41 assertResultShape(result.total); 42 assertResultShape(result.current); 43} 44 45function expectExperimentalWarning() { 46 common.expectWarning( 47 'ExperimentalWarning', 48 'vm.measureMemory is an experimental feature and might change at any time', 49 ); 50} 51 52module.exports = { 53 assertSummaryShape, 54 assertDetailedShape, 55 assertSingleDetailedShape, 56 expectExperimentalWarning, 57}; 58