blob: cb7d6642c845f6b8c5c7f3d06e3e785e0ddc6644 [file] [log] [blame]
// META: title=NativeIO API: Concurrent io while setLength is resolving.
// META: global=window,worker
// META: script=operation_helpers.js
// META: script=../resources/support.js
'use strict';
// See documentation in operation_helpers.js
for (let op of kOperations) {
promise_test(async testCase => {
const file = await createFile(testCase, 'setlength_file');
const res = op.prepare();
const setLengthPromise = file.setLength(5);
op.assertRejection(testCase, file, res);
await setLengthPromise;
const readSharedArrayBuffer = new SharedArrayBuffer(5);
const readBytes = new Uint8Array(readSharedArrayBuffer);
assert_equals(await file.read(readBytes, 0), 5,
`NativeIOFile.read() should not fail after a rejected ` +
`${op.name}() during setLength().`);
assert_array_equals(readBytes, [64, 65, 66, 67, 0],
`Rejecting ${op.name}() during setLength()` +
` should not change the file.`);
op.assertUnchanged(res);
}, `${op.name}() rejects while setLength() is resolving.`);
};