tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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();