tor-browser

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

columnNumber.js (2134B)


      1 // Simple tests for evaluate's "columnNumber" option.
      2 
      3 load(libdir + 'asserts.js');
      4 
      5 assertEq(evaluate("saveStack().column"), 1);
      6 assertEq(evaluate("saveStack().column", { columnNumber: 1729 }), 1729);
      7 assertEq(evaluate("\nsaveStack().column", { columnNumber: 1729 }), 1);
      8 assertEq(evaluate("saveStack().column", { columnNumber: "42" }), 42);
      9 // columnNumber < 1 is fixed to 1.
     10 assertEq(evaluate("saveStack().column", { columnNumber: -10 }), 1);
     11 assertThrowsInstanceOf(() => evaluate("saveStack().column", { columnNumber: Math.pow(2,30) }),
     12                       RangeError);
     13 
     14 if (helperThreadCount() > 0) {
     15  print("offThreadCompileToStencil 1");
     16  offThreadCompileToStencil("saveStack().column", { columnNumber: -10 });
     17  var stencil = finishOffThreadStencil();
     18  assertEq(evalStencil(stencil), 1);
     19 
     20  print("offThreadCompileToStencil 2");
     21  offThreadCompileToStencil("saveStack().column", { columnNumber: Math.pow(2,30) });
     22  assertThrowsInstanceOf(() => {
     23    var stencil = finishOffThreadStencil();
     24    evalStencil();
     25  }, RangeError);
     26 
     27  print("offThreadCompileToStencil 3");
     28  offThreadCompileToStencil("saveStack().column", { columnNumber: 10000 });
     29  stencil = finishOffThreadStencil();
     30  assertEq(evalStencil(stencil), 10000);
     31 }
     32 
     33 // Check handling of columns near the limit of our ability to represent them.
     34 // (This is hardly thorough, but since web content can't set column numbers,
     35 // it's probably not worth it to be thorough.)
     36 const maxColumn = Math.pow(2, 30) - 2;
     37 assertEq(evaluate("saveStack().column", { columnNumber: maxColumn }),
     38         maxColumn);
     39 
     40 // Check the saturation behavior when we reach the limit of the column
     41 // representation.
     42 assertEq(evaluate(" saveStack().column", { columnNumber: maxColumn }),
     43         maxColumn + 1);
     44 
     45 // Gathering source text for inclusion in error messages should not try to reach
     46 // outside the buffer to find the start of the source line. The below should
     47 // report the error without crashing.
     48 assertThrowsInstanceOf(() => evaluate("function x(y,y) { 'use strict'; } x()",
     49                                      { columnNumber: 10 }),
     50                       SyntaxError);