FileSystemSyncAccessHandle-truncate.https.worker.js (2397B)
1 importScripts("/resources/testharness.js"); 2 importScripts('resources/sync-access-handle-test.js'); 3 4 'use strict'; 5 6 sync_access_handle_test((t, handle) => { 7 // Without this assertion, the test passes even if truncate is not defined. 8 assert_implements(handle.truncate, 9 "SyncAccessHandle.truncate is not implemented."); 10 11 handle.truncate(4); 12 assert_equals(handle.getSize(), 4); 13 handle.truncate(2); 14 assert_equals(handle.getSize(), 2); 15 handle.truncate(7); 16 assert_equals(handle.getSize(), 7); 17 handle.truncate(0); 18 assert_equals(handle.getSize(), 0); 19 assert_throws_js(TypeError, () => handle.truncate(-4)); 20 }, 'test SyncAccessHandle.truncate with different sizes'); 21 22 sync_access_handle_test((t, handle) => { 23 const writeBuffer = new Uint8Array(4); 24 writeBuffer.set([96, 97, 98, 99]); 25 handle.write(writeBuffer, {at: 0}); 26 27 handle.truncate(2); 28 let readBuffer = new Uint8Array(6); 29 assert_equals(2, handle.read(readBuffer, {at: 0})); 30 let expected = new Uint8Array(6); 31 expected.set([96, 97, 0, 0, 0, 0]); 32 assert_array_equals(expected, readBuffer); 33 34 // Resize the file to 6, expect that everything beyond the old size is '0'. 35 handle.truncate(6); 36 assert_equals(6, handle.read(readBuffer, {at: 0})); 37 assert_array_equals(expected, readBuffer); 38 }, 'test SyncAccessHandle.truncate after SyncAccessHandle.write'); 39 40 sync_access_handle_test((t, handle) => { 41 const writeBuffer = new Uint8Array(4); 42 writeBuffer.set([96, 97, 98, 99]); 43 handle.write(writeBuffer, {at: 0}); 44 45 // Moves cursor to 2 46 handle.truncate(2); 47 let readBuffer = new Uint8Array(256); 48 assert_equals(handle.read(readBuffer), 0); 49 50 writeBuffer.set([100, 101, 102, 103]); 51 handle.write(writeBuffer); 52 53 assert_equals(handle.read(readBuffer, {at: 0}), 6); 54 let expected = new Uint8Array(256); 55 expected.set([96, 97, 100, 101, 102, 103]); 56 assert_array_equals(readBuffer, expected); 57 58 // Resize the file to 10, expect that everything beyond the old size is '0'. 59 handle.truncate(10); // file cursor should still be at 6 60 // overwrite two bytes 61 const writeBuffer2 = new Uint8Array(2); 62 writeBuffer2.set([110, 111]); 63 handle.write(writeBuffer2); 64 expected = new Uint8Array(256); 65 expected.set([96, 97, 100, 101, 102, 103, 110, 111, 0, 0]); 66 assert_equals(handle.read(readBuffer, {at: 0}), 10); 67 assert_array_equals(readBuffer, expected); 68 }, 'Test truncate effect on cursor'); 69 70 done();