text: // 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));
    }
  }
  