| 'use strict'; |
| |
| const assert = require('assert'); |
| const common = require('./'); |
| |
| // The formats could change when V8 is updated, then the tests should be |
| // updated accordingly. |
| function assertResultShape(result) { |
| assert.strictEqual(typeof result.jsMemoryEstimate, 'number'); |
| assert.strictEqual(typeof result.jsMemoryRange[0], 'number'); |
| assert.strictEqual(typeof result.jsMemoryRange[1], 'number'); |
| } |
| |
| function assertSummaryShape(result) { |
| assert.strictEqual(typeof result, 'object'); |
| assert.strictEqual(typeof result.total, 'object'); |
| assertResultShape(result.total); |
| } |
| |
| function assertDetailedShape(result, contexts = 0) { |
| assert.strictEqual(typeof result, 'object'); |
| assert.strictEqual(typeof result.total, 'object'); |
| assert.strictEqual(typeof result.current, 'object'); |
| assertResultShape(result.total); |
| assertResultShape(result.current); |
| if (contexts === 0) { |
| assert.deepStrictEqual(result.other, []); |
| } else { |
| assert.strictEqual(result.other.length, contexts); |
| for (const item of result.other) { |
| assertResultShape(item); |
| } |
| } |
| } |
| |
| function assertSingleDetailedShape(result) { |
| assert.strictEqual(typeof result, 'object'); |
| assert.strictEqual(typeof result.total, 'object'); |
| assert.strictEqual(typeof result.current, 'object'); |
| assert.deepStrictEqual(result.other, []); |
| assertResultShape(result.total); |
| assertResultShape(result.current); |
| } |
| |
| function expectExperimentalWarning() { |
| common.expectWarning( |
| 'ExperimentalWarning', |
| 'vm.measureMemory is an experimental feature and might change at any time', |
| ); |
| } |
| |
| module.exports = { |
| assertSummaryShape, |
| assertDetailedShape, |
| assertSingleDetailedShape, |
| expectExperimentalWarning, |
| }; |