tor-browser

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

DOMMatrixInit-validate-fixup.html (6470B)


      1 <!DOCTYPE html>
      2 <title>Geometry Interfaces: DOMMatrixInit validate and fixup</title>
      3 <link rel="help" href="https://drafts.fxtf.org/geometry/#dommatrixinit-dictionary">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="support/dommatrix-test-util.js"></script>
      7 <script>
      8 [
      9  {a: 1, m11: 2},
     10  {b: 0, m12: -1},
     11  {c: Infinity, m21: -Infinity},
     12  {d: 0, m22: NaN},
     13  {e: 1, m41: 1.00000001},
     14  {f: 0, m42: Number.MIN_VALUE},
     15  {m13: 1, is2D: true},
     16  {m14: 1, is2D: true},
     17  {m23: 1, is2D: true},
     18  {m24: 1, is2D: true},
     19  {m31: 1, is2D: true},
     20  {m32: 1, is2D: true},
     21  {m33: 0, is2D: true},
     22  {m33: -0, is2D: true},
     23  {m33: -1, is2D: true},
     24  {m34: 1, is2D: true},
     25  {m43: 1, is2D: true},
     26  {m44: 0, is2D: true},
     27 ].forEach(dict => {
     28  test(() => {
     29    assert_true('fromMatrix' in DOMMatrix, 'fromMatrix should exist');
     30    assert_throws_js(TypeError, () => DOMMatrix.fromMatrix(dict));
     31    assert_true('multiply' in DOMMatrix.prototype, 'multiply should exist');
     32    assert_throws_js(TypeError, () => new DOMMatrix().multiply(dict));
     33    assert_true('multiplySelf' in DOMMatrix.prototype, 'multiplySelf should exist');
     34    assert_throws_js(TypeError, () => new DOMMatrix().multiplySelf(dict));
     35    assert_true('preMultiplySelf' in DOMMatrix.prototype, 'preMultiplySelf should exist');
     36    assert_throws_js(TypeError, () => new DOMMatrix().preMultiplySelf(dict));
     37  }, `${format_dict(dict)} (invalid)`);
     38 });
     39 
     40 [
     41  [{},                             matrix2D({})],
     42  [{is2D: undefined},              matrix2D({})], // undefined means the dictionary member is not present
     43  [{a: 1, m11: 1},                 matrix2D({m11: 1})],
     44  [{b: 0, m12: undefined},         matrix2D({m12: 0})],
     45  [{c: 0, m21: 0},                 matrix2D({m21: 0})],
     46  [{c: 0, m21: -0},                matrix2D({m21: -0})],
     47  [{c: -0, m21: 0},                matrix2D({m21: 0})],
     48  [{c: -0, m21: -0},               matrix2D({m21: -0})],
     49  [{d: Infinity, m22: Infinity},   matrix2D({m22: Infinity})],
     50  [{e: -Infinity, m41: -Infinity}, matrix2D({m41: -Infinity})],
     51  [{f: NaN, m42: NaN},             matrix2D({m42: NaN})],
     52  [{f: NaN, m42: NaN, is2D: true}, matrix2D({m42: NaN})],
     53  [{f: 0, m42: null},              matrix2D({m42: 0})], // null is converted to 0
     54  [{f: -0, m42: null},             matrix2D({m42: 0})], // null is converted to 0
     55  [{a: 2},                         matrix2D({m11: 2})],
     56  [{b: 2},                         matrix2D({m12: 2})],
     57  [{c: 2},                         matrix2D({m21: 2})],
     58  [{d: 2},                         matrix2D({m22: 2})],
     59  [{e: 2},                         matrix2D({m41: 2})],
     60  [{f: 2},                         matrix2D({m42: 2})],
     61  [{a: -0, b: -0, c: -0, d: -0, e: -0, f: -0},
     62                                   matrix2D({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0})],
     63  [{a: -0, b: -0, c: -0, d: -0, e: -0, f: -0, is2D: true},
     64                                   matrix2D({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0})],
     65  [{m11:2},                        matrix2D({m11: 2})],
     66  [{m12:2},                        matrix2D({m12: 2})],
     67  [{m21:2},                        matrix2D({m21: 2})],
     68  [{m22:2},                        matrix2D({m22: 2})],
     69  [{m41:2},                        matrix2D({m41: 2})],
     70  [{m42:2},                        matrix2D({m42: 2})],
     71  [{m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0},
     72                                   matrix2D({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0})],
     73  [{m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0, is2D: true},
     74                                   matrix2D({m11: -0, m12: -0, m21: -0, m22: -0, m41: -0, m42: -0})],
     75  [{m13: 0, is2D: true},           matrix2D({m13: 0})],
     76  [{m13: -0, is2D: true},          matrix2D({m13: 0})],
     77  [{m14: 0, is2D: true},           matrix2D({m14: 0})],
     78  [{m14: -0, is2D: true},          matrix2D({m14: 0})],
     79  [{m23: 0, is2D: true},           matrix2D({m23: 0})],
     80  [{m23: -0, is2D: true},          matrix2D({m23: 0})],
     81  [{m24: 0, is2D: true},           matrix2D({m24: 0})],
     82  [{m24: -0, is2D: true},          matrix2D({m24: 0})],
     83  [{m31: 0, is2D: true},           matrix2D({m31: 0})],
     84  [{m31: -0, is2D: true},          matrix2D({m31: 0})],
     85  [{m32: 0, is2D: true},           matrix2D({m32: 0})],
     86  [{m32: -0, is2D: true},          matrix2D({m32: 0})],
     87  [{m33: 1, is2D: true},           matrix2D({m33: 1})],
     88  [{m34: 0, is2D: true},           matrix2D({m34: 0})],
     89  [{m34: -0, is2D: true},          matrix2D({m34: 0})],
     90  [{m43: 0, is2D: true},           matrix2D({m43: 0})],
     91  [{m43: -0, is2D: true},          matrix2D({m43: 0})],
     92  [{m44: 1, is2D: true},           matrix2D({m44: 1})],
     93  [{is2D: true},                   matrix2D({})],
     94 ].forEach(([dict, expected]) => {
     95  test(() => {
     96    const matrix = DOMMatrix.fromMatrix(dict);
     97    checkMatrix(matrix, expected);
     98  }, `${format_dict(dict)} (2d)`);
     99 });
    100 
    101 [
    102  [{m13: 1, is2D: false},          matrix3D({m13: 1})],
    103  [{m14: 1, is2D: false},          matrix3D({m14: 1})],
    104  [{m23: 1, is2D: false},          matrix3D({m23: 1})],
    105  [{m24: 1, is2D: false},          matrix3D({m24: 1})],
    106  [{m31: 1, is2D: false},          matrix3D({m31: 1})],
    107  [{m32: 1, is2D: false},          matrix3D({m32: 1})],
    108  [{m33: 0, is2D: false},          matrix3D({m33: 0})],
    109  [{m33: -0, is2D: false},         matrix3D({m33: -0})],
    110  [{m33: -1, is2D: false},         matrix3D({m33: -1})],
    111  [{m34: 1, is2D: false},          matrix3D({m34: 1})],
    112  [{m43: 1, is2D: false},          matrix3D({m43: 1})],
    113  [{m44: 0, is2D: false},          matrix3D({m44: 0})],
    114  [{m13: 1},                       matrix3D({m13: 1})],
    115  [{m14: 1},                       matrix3D({m14: 1})],
    116  [{m23: 1},                       matrix3D({m23: 1})],
    117  [{m24: 1},                       matrix3D({m24: 1})],
    118  [{m31: 1},                       matrix3D({m31: 1})],
    119  [{m32: 1},                       matrix3D({m32: 1})],
    120  [{m33: 0},                       matrix3D({m33: 0})],
    121  [{m34: 1},                       matrix3D({m34: 1})],
    122  [{m43: 1},                       matrix3D({m43: 1})],
    123  [{m44: 0},                       matrix3D({m44: 0})],
    124  [{is2D: false},                  matrix3D({})],
    125  [{is2D: null},                   matrix3D({})], // null is converted to false
    126 ].forEach(([dict, expected]) => {
    127  test(() => {
    128    const matrix = DOMMatrix.fromMatrix(dict);
    129    checkMatrix(matrix, expected);
    130  }, `${format_dict(dict)} (3d)`);
    131 });
    132 </script>