tor-browser

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

resizable-dataview-byteoffset.js (1690B)


      1 load(libdir + "asserts.js");
      2 
      3 function testResizableArrayBufferAutoLength() {
      4  for (let i = 0; i < 4; ++i) {
      5    let ab = new ArrayBuffer(i, {maxByteLength: i + 1});
      6    let ta = new DataView(ab);
      7    for (let j = 0; j < 100; ++j) {
      8      ab.resize(i);
      9      assertEq(ta.byteOffset, 0);
     10 
     11      ab.resize(i + 1);
     12      assertEq(ta.byteOffset, 0);
     13 
     14      if (i > 0) {
     15        ab.resize(i - 1);
     16        assertEq(ta.byteOffset, 0);
     17      }
     18    }
     19  }
     20 }
     21 for (let i = 0; i < 2; ++i) testResizableArrayBufferAutoLength();
     22 
     23 function testResizableArrayBufferAutoLengthNonZeroOffset() {
     24  for (let i = 1; i < 4 + 1; ++i) {
     25    let ab = new ArrayBuffer(i, {maxByteLength: i + 1});
     26    let ta = new DataView(ab, 1);
     27    for (let j = 0; j < 100; ++j) {
     28      ab.resize(i);
     29      assertEq(ta.byteOffset, 1);
     30 
     31      ab.resize(i + 1);
     32      assertEq(ta.byteOffset, 1);
     33 
     34      ab.resize(i - 1);
     35      if (i > 1) {
     36        assertEq(ta.byteOffset, 1);
     37      } else {
     38        assertThrowsInstanceOf(() => ta.byteOffset, TypeError);
     39      }
     40    }
     41  }
     42 }
     43 for (let i = 0; i < 2; ++i) testResizableArrayBufferAutoLengthNonZeroOffset();
     44 
     45 function testResizableArrayBufferNonZeroOffset() {
     46  for (let i = 2; i < 4 + 2; ++i) {
     47    let ab = new ArrayBuffer(i, {maxByteLength: i + 1});
     48    let ta = new DataView(ab, 1, 1);
     49    for (let j = 0; j < 100; ++j) {
     50      ab.resize(i);
     51      assertEq(ta.byteOffset, 1);
     52 
     53      ab.resize(i + 1);
     54      assertEq(ta.byteOffset, 1);
     55 
     56      ab.resize(i - 1);
     57      if (i > 2) {
     58        assertEq(ta.byteOffset, 1);
     59      } else {
     60        assertThrowsInstanceOf(() => ta.byteOffset, TypeError);
     61      }
     62    }
     63  }
     64 }
     65 for (let i = 0; i < 2; ++i) testResizableArrayBufferNonZeroOffset();