tor-browser

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

dommatrix-test-util.js (1550B)


      1 // This formats dict as a string suitable as test name.
      2 // format_value() is provided by testharness.js,
      3 // which also preserves sign for -0.
      4 function format_dict(dict) {
      5  const props = [];
      6  for (let prop in dict) {
      7    props.push(`${prop}: ${format_value(dict[prop])}`);
      8  }
      9  return `{${props.join(', ')}}`;
     10 }
     11 
     12 // Create a normal JS object with the expected properties
     13 // from a dict with only m11..m44 specified (not a..f).
     14 function matrix3D(dict) {
     15  const matrix = {m11: 1, m12: 0, m13: 0, m14: 0,
     16                  m21: 0, m22: 1, m23: 0, m24: 0,
     17                  m31: 0, m32: 0, m33: 1, m34: 0,
     18                  m41: 0, m42: 0, m43: 0, m44: 1}
     19  for (let member in dict) {
     20    matrix[member] = dict[member];
     21  }
     22  matrix.is2D = false;
     23  matrix.a = matrix.m11;
     24  matrix.b = matrix.m12;
     25  matrix.c = matrix.m21;
     26  matrix.d = matrix.m22;
     27  matrix.e = matrix.m41;
     28  matrix.f = matrix.m42;
     29  return matrix;
     30 }
     31 
     32 function matrix2D(dict) {
     33  const matrix = matrix3D(dict);
     34  matrix.is2D = true;
     35  return matrix;
     36 }
     37 
     38 function checkMatrix(actual, expected, { epsilon = Number.MIN_VALUE } = {}) {
     39  for (let member in expected) {
     40    if (epsilon && typeof expected[member] === "number") {
     41      assert_approx_equals(actual[member], expected[member], epsilon, member);
     42    } else {
     43      assert_equals(actual[member], expected[member], member);
     44    }
     45  }
     46 }
     47 
     48 function identity() {
     49    return new DOMMatrix(
     50    [1, 0, 0, 0,
     51        0, 1, 0 ,0,
     52        0, 0, 1, 0,
     53        0, 0, 0, 1]);
     54 }
     55 
     56 function update(matrix, f) {
     57    f(matrix);
     58    return matrix;
     59 }