'use strict'; const common = require('../../common'); const assert = require('assert'); const test_sharedarraybuffer = require(`./build/${common.buildType}/test_sharedarraybuffer`); { const sab = new SharedArrayBuffer(16); const ab = new ArrayBuffer(16); const obj = {}; const arr = []; assert.strictEqual(test_sharedarraybuffer.TestIsSharedArrayBuffer(sab), true); assert.strictEqual(test_sharedarraybuffer.TestIsSharedArrayBuffer(ab), false); assert.strictEqual(test_sharedarraybuffer.TestIsSharedArrayBuffer(obj), false); assert.strictEqual(test_sharedarraybuffer.TestIsSharedArrayBuffer(arr), false); assert.strictEqual(test_sharedarraybuffer.TestIsSharedArrayBuffer(null), false); assert.strictEqual(test_sharedarraybuffer.TestIsSharedArrayBuffer(undefined), false); } // Test node_api_create_sharedarraybuffer { const sab = test_sharedarraybuffer.TestCreateSharedArrayBuffer(16); assert(sab instanceof SharedArrayBuffer); assert.strictEqual(sab.byteLength, 16); } // Test node_api_create_get_sharedarraybuffer_info { const sab = new SharedArrayBuffer(32); const byteLength = test_sharedarraybuffer.TestGetSharedArrayBufferInfo(sab); assert.strictEqual(byteLength, 32); } // Test data access { const sab = new SharedArrayBuffer(8); const result = test_sharedarraybuffer.TestSharedArrayBufferData(sab); assert.strictEqual(result, true); // Check if data was written correctly const view = new Uint8Array(sab); for (let i = 0; i < 8; i++) { assert.strictEqual(view[i], i % 256); } } // Test data pointer from existing SharedArrayBuffer { const sab = new SharedArrayBuffer(16); const result = test_sharedarraybuffer.TestSharedArrayBufferData(sab); assert.strictEqual(result, true); } // Test zero-length SharedArrayBuffer { const sab = test_sharedarraybuffer.TestCreateSharedArrayBuffer(0); assert(sab instanceof SharedArrayBuffer); assert.strictEqual(sab.byteLength, 0); } // Test invalid arguments { assert.throws(() => { test_sharedarraybuffer.TestGetSharedArrayBufferInfo({}); }, { name: 'Error', message: 'Invalid argument' }); }