// Flags: --expose-internals 'use strict'; require('../common'); const assert = require('assert'); const { internalBinding } = require('internal/test/binding'); const { arrayBufferViewHasBuffer } = internalBinding('util'); const tests = [ { length: 0, expectOnHeap: true }, { length: 48, expectOnHeap: true }, { length: 96, expectOnHeap: false }, { length: 1024, expectOnHeap: false }, ]; for (const { length, expectOnHeap } of tests) { const arrays = [ new Uint8Array(length), new Uint16Array(length / 2), new Uint32Array(length / 4), new Float32Array(length / 4), new Float64Array(length / 8), Buffer.alloc(length), Buffer.allocUnsafeSlow(length) // Buffer.allocUnsafe() is missing because it may use pooled allocations. ]; for (const array of arrays) { const isOnHeap = !arrayBufferViewHasBuffer(array); assert.strictEqual(isOnHeap, expectOnHeap, `mismatch: ${isOnHeap} vs ${expectOnHeap} ` + `for ${array.constructor.name}, length = ${length}`); // Consistency check: Accessing .buffer should create it. array.buffer; assert(arrayBufferViewHasBuffer(array)); } }