tor-browser

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

ctm-singular-sanity.html (1345B)


      1 <html>
      2 <head>
      3  <script type="text/javascript">
      4 function assert(cond, msg) {
      5  if (!cond) {
      6    throw msg;
      7  }
      8 }
      9 
     10 assert.equal = function(m1, m2, msg) {
     11  assert(
     12    m1.is2D &&
     13      m2.is2D &&
     14      m1.a === m2.a &&
     15      m1.b === m2.b &&
     16      m1.c === m2.c &&
     17      m1.d === m2.d &&
     18      m1.e === m2.e &&
     19      m1.f === m2.f,
     20    msg
     21  );
     22 };
     23 
     24 window.onload = function() {
     25  try {
     26    var ctx = document.getElementById("c1").getContext("2d");
     27 
     28    var singular = new DOMMatrix([0, 0, 0, 0, 0, 0]);
     29    ctx.setTransform(singular);
     30    assert.equal(
     31      ctx.getTransform(),
     32      singular,
     33      "Expected setting transform to a singular matrix to work"
     34    );
     35    var inv = ctx.getTransform().invertSelf();
     36    assert(
     37      isNaN(inv.a) && isNaN(inv.b) && isNaN(inv.c) && isNaN(inv.d),
     38      "Expected to get back matrix of NaN's from inverse transform"
     39    );
     40 
     41    var m = new DOMMatrix([1, 2, 3, 4, 5, 6]);
     42    ctx.setTransform(m);
     43    ctx.setTransform(singular.invertSelf());
     44    assert.equal(
     45      ctx.getTransform(),
     46      m,
     47      "Setting transform to an inverse singular matrix is a no-op"
     48    );
     49  } catch (e) {
     50    document.body.innerHTML = "FAIL: " + e.toString();
     51    return;
     52  }
     53  document.body.innerHTML = "Pass";
     54 };
     55  </script>
     56 </head>
     57 <body>
     58  <div><canvas id="c1" width="300" height="300"></canvas></div>
     59 </body>
     60 </html>