forked from web-platform-tests/wpt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker.js
42 lines (33 loc) · 1.46 KB
/
sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
importScripts("/resources/testharness.js");
importScripts('resources/sync-access-handle-test.js');
'use strict';
sync_access_handle_test(async (testCase, handle) => {
const getSizePromise = handle.getSize();
await promise_rejects_dom(testCase, 'InvalidStateError', handle.truncate(4));
assert_equals(await getSizePromise, 0);
}, 'test createSyncAccessHandle.truncate with pending operation');
sync_access_handle_test(async (testCase, handle) => {
await handle.truncate(4);
assert_equals(await handle.getSize(), 4);
await handle.truncate(2);
assert_equals(await handle.getSize(), 2);
await handle.truncate(7);
assert_equals(await handle.getSize(), 7);
await promise_rejects_js(testCase, TypeError, handle.truncate(-4));
}, 'test SyncAccessHandle.truncate with different sizes');
sync_access_handle_test(async (testCase, handle) => {
const writeBuffer = new Uint8Array(4);
writeBuffer.set([96, 97, 98, 99]);
handle.write(writeBuffer, {at: 0});
await handle.truncate(2);
let readBuffer = new Uint8Array(6);
assert_equals(2, handle.read(readBuffer, {at: 0}));
let expected = new Uint8Array(6);
expected.set([96, 97, 0, 0, 0, 0]);
assert_array_equals(expected, readBuffer);
// Resize the file to 6, expect that everything beyond the old size is '0'.
await handle.truncate(6);
assert_equals(6, handle.read(readBuffer, {at: 0}));
assert_array_equals(expected, readBuffer);
}, 'test SyncAccessHandle.truncate after SyncAccessHandle.write');
done();