mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 21:00:42 +02:00
Automatic update from web-platform-tests Replace assert_precondition with assert_equals in native-io/ (#23023) assert_precondition is deprecated (see https://github.com/web-platform-tests/rfcs/blob/master/rfcs/assert_precondition_rename.md). The usage in these tests was to check equality rather than whether a feature was supported, so replace with assert_equals. -- wpt-commits: 9b5bdedc2ad7797a6b99895157aeaa2b3a2d61e6 wpt-pr: 23023
82 lines
3 KiB
JavaScript
82 lines
3 KiB
JavaScript
// META: title=NativeIO API: close().
|
|
// META: global=window,worker
|
|
|
|
'use strict';
|
|
|
|
// Returns a handle to a newly created file that holds some data.
|
|
//
|
|
// The file will be closed and deleted when the test ends.
|
|
async function createFile(testCase, fileName) {
|
|
const file = await nativeIO.open(fileName);
|
|
testCase.add_cleanup(async () => {
|
|
await file.close();
|
|
await nativeIO.delete('test_file');
|
|
});
|
|
|
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
|
writtenBytes.set([64, 65, 66, 67]);
|
|
const writeCount = await file.write(writtenBytes, 0);
|
|
assert_equals(writeCount, 4);
|
|
|
|
return file;
|
|
}
|
|
|
|
promise_test(async testCase => {
|
|
const file = await createFile(testCase, 'file_name');
|
|
assert_equals(await file.close(), undefined);
|
|
|
|
assert_equals(await file.close(), undefined);
|
|
}, 'NativeIOFile.close is idempotent');
|
|
|
|
promise_test(async testCase => {
|
|
const file = await createFile(testCase, 'file_name');
|
|
const closePromise = file.close();
|
|
|
|
assert_equals(await file.close(), undefined);
|
|
assert_equals(await closePromise, undefined);
|
|
}, 'NativeIOFile.close is idempotent when called immediately');
|
|
|
|
promise_test(async testCase => {
|
|
const file = await createFile(testCase, 'file_name');
|
|
assert_equals(await file.close(), undefined);
|
|
|
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
|
file.read(readBytes, 4));
|
|
}, 'NativeIOFile.read fails after NativeIOFile.close settles');
|
|
|
|
promise_test(async testCase => {
|
|
const file = await createFile(testCase, 'file_name');
|
|
const closePromise = file.close();
|
|
|
|
const readSharedArrayBuffer = new SharedArrayBuffer(4);
|
|
const readBytes = new Uint8Array(readSharedArrayBuffer);
|
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
|
file.read(readBytes, 4));
|
|
assert_equals(await closePromise, undefined);
|
|
}, 'NativeIOFile.read fails immediately after calling NativeIOFile.close');
|
|
|
|
promise_test(async testCase => {
|
|
const file = await createFile(testCase, 'file_name');
|
|
assert_equals(await file.close(), undefined);
|
|
|
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
|
writtenBytes.set([96, 97, 98, 99]);
|
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
|
file.write(writtenBytes, 4));
|
|
}, 'NativeIOFile.write fails after NativeIOFile.close settles');
|
|
|
|
promise_test(async testCase => {
|
|
const file = await createFile(testCase, 'file_name');
|
|
const closePromise = file.close();
|
|
|
|
const writeSharedArrayBuffer = new SharedArrayBuffer(4);
|
|
const writtenBytes = new Uint8Array(writeSharedArrayBuffer);
|
|
writtenBytes.set([96, 97, 98, 99]);
|
|
await promise_rejects_dom(testCase, 'InvalidStateError',
|
|
file.write(writtenBytes, 4));
|
|
assert_equals(await closePromise, undefined);
|
|
}, 'NativeIOFile.write fails immediately after calling NativeIOFile.close');
|