blob: a063842451f8b7a32158de2ea41d313aae942d26 [file] [log] [blame]
// META: title=Synchronous NativeIO API: close().
// META: global=dedicatedworker
// META: script=resources/support.js
'use strict';
test(testCase => {
reserveAndCleanupCapacitySync(testCase);
const file = createFileSync(testCase, 'file_name');
assert_equals(undefined, file.close());
assert_equals(undefined, file.close());
}, 'NativeIOFileSync.close is idempotent');
test(testCase => {
reserveAndCleanupCapacitySync(testCase);
const file = createFileSync(testCase, 'file_name');
assert_equals(undefined, file.close());
const readBuffer = new Uint8Array(4);
assert_throws_dom('InvalidStateError', () => file.read(readBuffer, 4));
}, 'NativeIOFileSync.read fails after NativeIOFileSync.close');
test(testCase => {
reserveAndCleanupCapacitySync(testCase);
const file = createFileSync(testCase, 'file_name');
assert_equals(undefined, file.close());
const writeBuffer = Uint8Array.from([96, 97, 98, 99]);
assert_throws_dom('InvalidStateError', () => file.write(writeBuffer, 4));
}, 'NativeIOFile.write fails after NativeIOFile.close');
test(testCase => {
reserveAndCleanupCapacitySync(testCase);
const file = createFileSync(testCase, 'file_name');
assert_equals(undefined, file.close());
assert_throws_dom('InvalidStateError', () => file.getLength());
}, 'NativeIOFileSync.getLength fails after NativeIOFileSync.close');
test(testCase => {
reserveAndCleanupCapacitySync(testCase);
const file = createFileSync(testCase, 'file_name');
assert_equals(undefined, file.close());
assert_throws_dom('InvalidStateError', () => file.flush());
}, 'NativeIOFileSync.flush fails after NativeIOFileSync.close');
test(testCase => {
reserveAndCleanupCapacitySync(testCase);
const file = createFileSync(testCase, 'file_name');
assert_equals(undefined, file.close());
assert_throws_dom('InvalidStateError', () => file.setLength(4));
}, 'NativeIOFileSync.setLength fails after NativeIOFileSync.close');