blob: 34bba3616b7bbfc96945c5466e2cc025619feb5f [file] [log] [blame]
// META: title=NativeIO API: Write respects the allocated capacities.
// META: global=window,worker
promise_test(async testCase => {
const file = await storageFoundation.open('test_file');
testCase.add_cleanup(async () => {
await file.close();
await storageFoundation.delete('test_file');
});
const writeBuffer = new Uint8Array(4);
writeBuffer.set([64, 65, 66, 67]);
await promise_rejects_dom(
testCase, 'QuotaExceededError', file.write(writeBuffer, 0));
}, 'NativeIOFile.write() fails without any capacity request.');
promise_test(async testCase => {
const file = await storageFoundation.open('test_file');
const granted_capacity = await storageFoundation.requestCapacity(4);
assert_greater_than_equal(granted_capacity, 2);
testCase.add_cleanup(async () => {
await file.close();
await storageFoundation.delete('test_file');
await storageFoundation.releaseCapacity(granted_capacity);
});
const writeBuffer = new Uint8Array(granted_capacity - 1);
writeBuffer.set(Array(granted_capacity - 1).fill(64));
const {writtenBytes} = await file.write(writeBuffer, 0);
assert_equals(writtenBytes, granted_capacity - 1);
}, 'NativeIOFile.write() succeeds when given a buffer of length ' +
'granted capacity - 1');
promise_test(async testCase => {
const file = await storageFoundation.open('test_file');
const granted_capacity = await storageFoundation.requestCapacity(4);
assert_greater_than_equal(granted_capacity, 2);
testCase.add_cleanup(async () => {
await file.close();
await storageFoundation.delete('test_file');
});
const writeBuffer = new Uint8Array(granted_capacity);
writeBuffer.set(Array(granted_capacity).fill(64));
const {writtenBytes} = await file.write(writeBuffer, 0);
assert_equals(writtenBytes, granted_capacity);
}, 'NativeIOFile.write() succeeds when given the granted capacity');
promise_test(async testCase => {
const file = await storageFoundation.open('test_file');
const granted_capacity = await storageFoundation.requestCapacity(4);
assert_greater_than_equal(granted_capacity, 2);
testCase.add_cleanup(async () => {
await file.close();
await storageFoundation.delete('test_file');
await storageFoundation.releaseCapacity(granted_capacity);
});
const writeSharedArrayBuffer = new SharedArrayBuffer(granted_capacity + 1);
const writeBuffer = new Uint8Array(granted_capacity + 1);
writeBuffer.set(Array(granted_capacity + 1).fill(64));
await promise_rejects_dom(testCase,
'QuotaExceededError', file.write(writeBuffer, 0));
}, 'NativeIOFile.write() fails when given the granted capacity + 1');