Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title>Geometry Interfaces: DOMMatrix and DOMMatrixReadOnly constructors</ti tle> | 4 <title>Geometry Interfaces: DOMMatrix and DOMMatrixReadOnly constructors</ti tle> |
| 5 <link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com" /> | 5 <link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com" /> |
| 6 <link rel="help" href="http://www.w3.org/TR/geometry-1/#DOMMatrix"> | 6 <link rel="help" href="http://www.w3.org/TR/geometry-1/#DOMMatrix"> |
| 7 <link rel="help" href="http://www.w3.org/TR/geometry-1/#dommatrix-constructo rs"> | 7 <link rel="help" href="http://www.w3.org/TR/geometry-1/#dommatrix-constructo rs"> |
| 8 <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dommatrix-dommat rix"> | 8 <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dommatrix-dommat rix"> |
| 9 <script src="support/dommatrix-test-util.js"></script> | 9 <script src="support/dommatrix-test-util.js"></script> |
| 10 <script src="/resources/testharness.js"></script> | 10 <script src="/resources/testharness.js"></script> |
| 11 <script src="/resources/testharnessreport.js"></script> | 11 <script src="/resources/testharnessreport.js"></script> |
| 12 </head> | 12 </head> |
| 13 <body> | 13 <body> |
| 14 <p>Test DOMMatrix and DOMMatrixReadOnly contructors</p> | 14 <p>Test DOMMatrix and DOMMatrixReadOnly contructors</p> |
| 15 <div id="log"></div> | 15 <div id="log"></div> |
| 16 <script> | 16 <script> |
| 17 initial = { | 17 initial = { |
| 18 m11: 1, m21: 0, m31: 0, m41: 0, | 18 m11: 1, m21: 0, m31: 0, m41: 0, |
| 19 m12: 0, m22: 1, m32: 0, m42: 0, | 19 m12: 0, m22: 1, m32: 0, m42: 0, |
| 20 m13: 0, m23: 0, m33: 1, m43: 0, | 20 m13: 0, m23: 0, m33: 1, m43: 0, |
| 21 m14: 0, m24: 0, m34: 0, m44: 1, | 21 m14: 0, m24: 0, m34: 0, m44: 1, |
| 22 is2D: true, | 22 is2D: true, |
| 23 isIdentity: true | 23 isIdentity: true |
| 24 }; | 24 }; |
| 25 scaleTranslate2D = { | 25 scaleTranslate2D = { |
| 26 m11: 2, m21: 0, m31: 0, m41: 10, | 26 m11: 2, m21: 0, m31: 0, m41: 10, |
| 27 m12: 0, m22: 2, m32: 0, m42: 10, | 27 m12: 0, m22: 2, m32: 0, m42: 10, |
| 28 m13: 0, m23: 0, m33: 1, m43: 0, | 28 m13: 0, m23: 0, m33: 1, m43: 0, |
| 29 m14: 0, m24: 0, m34: 0, m44: 1, | 29 m14: 0, m24: 0, m34: 0, m44: 1, |
| 30 is2D: false, | 30 is2D: true, |
| 31 isIdentity: false | 31 isIdentity: false |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 test(function() { | 34 test(function() { |
| 35 checkDOMMatrix(new DOMMatrix(), initial); | 35 checkDOMMatrix(new DOMMatrix(), initial); |
| 36 },'testConstructor0'); | 36 },'testConstructor0'); |
| 37 test(function() { | 37 test(function() { |
| 38 checkDOMMatrix(new DOMMatrix(new DOMMatrix()), initial); | 38 checkDOMMatrix(new DOMMatrix(new DOMMatrix()), initial); |
| 39 },'testConstructor1'); | 39 },'testConstructor1'); |
| 40 test(function() { | 40 test(function() { |
| 41 var float32Array = new Float32Array( | 41 var float32Array = new Float32Array([ |
| 42 2.0, 0.0, 0.0, 0.0, | 42 2.0, 0.0, 0.0, 0.0, |
| 43 0.0, 2.0, 0.0, 0.0, | 43 0.0, 2.0, 0.0, 0.0, |
| 44 0.0, 0.0, 1.0, 0.0, | 44 0.0, 0.0, 1.0, 0.0, |
| 45 10.0, 10.0, 0.0, 1.0); | 45 10.0, 10.0, 0.0, 1.0]); |
| 46 checkDOMMatrix(new DOMMatrix(float32Array), scaleTranslate2D, false) ; | 46 checkDOMMatrix(new DOMMatrix(float32Array), scaleTranslate2D, false) ; |
| 47 },'testConstructor2'); | 47 },'testConstructor2'); |
| 48 test(function() { | 48 test(function() { |
| 49 var float32Array = new Float32Array(2.0, 0.0, 0.0, 2.0, 10.0, 10.0); | 49 var float32Array = new Float32Array([2.0, 0.0, 0.0, 2.0, 10.0, 10.0] ); |
| 50 checkDOMMatrix(new DOMMatrix(float32Array), scaleTranslate2D); | 50 checkDOMMatrix(new DOMMatrix(float32Array), scaleTranslate2D); |
| 51 },'testConstructor3'); | 51 },'testConstructor3'); |
| 52 test(function() { | 52 test(function() { |
| 53 var float64Array = new Float64Array([ | 53 var float64Array = new Float64Array([ |
| 54 2.0, 0.0, 0.0, 0.0, | 54 2.0, 0.0, 0.0, 0.0, |
| 55 0.0, 2.0, 0.0, 0.0, | 55 0.0, 2.0, 0.0, 0.0, |
| 56 0.0, 0.0, 1.0, 0.0, | 56 0.0, 0.0, 1.0, 0.0, |
| 57 10.0, 10.0, 0.0, 1.0]); | 57 10.0, 10.0, 0.0, 1.0]); |
| 58 checkDOMMatrix(new DOMMatrix(float64Array), scaleTranslate2D, false) ; | 58 checkDOMMatrix(new DOMMatrix(float64Array), scaleTranslate2D, false) ; |
| 59 },'testConstructor4'); | 59 },'testConstructor4'); |
| 60 test(function() { | 60 test(function() { |
| 61 var float64Array = new Float64Array(2.0, 0.0, 0.0, 2.0, 10.0, 10.0); | 61 var float64Array = new Float64Array([2.0, 0.0, 0.0, 2.0, 10.0, 10.0] ); |
| 62 checkDOMMatrix(new DOMMatrix(float64Array), scaleTranslate2D); | 62 checkDOMMatrix(new DOMMatrix(float64Array), scaleTranslate2D); |
| 63 },'testConstructor5'); | 63 },'testConstructor5'); |
| 64 test(function() { | 64 test(function() { |
| 65 var sequence = [ | 65 var sequence = [ |
| 66 2.0, 0.0, 0.0, 0.0, | 66 2.0, 0.0, 0.0, 0.0, |
| 67 0.0, 2.0, 0.0, 0.0, | 67 0.0, 2.0, 0.0, 0.0, |
| 68 0.0, 0.0, 1.0, 0.0, | 68 0.0, 0.0, 1.0, 0.0, |
| 69 10.0, 10.0, 0.0, 1.0]; | 69 10.0, 10.0, 0.0, 1.0]; |
| 70 checkDOMMatrix(new DOMMatrix(sequence), scaleTranslate2D, false); | 70 checkDOMMatrix(new DOMMatrix(sequence), scaleTranslate2D, false); |
| 71 },'testConstructor6'); | 71 },'testConstructor6'); |
| 72 test(function() { | 72 test(function() { |
| 73 var sequence = [ 2.0, 0.0, 0.0, 2.0, 10.0, 10.0]; | 73 var sequence = [ 2.0, 0.0, 0.0, 2.0, 10.0, 10.0]; |
| 74 checkDOMMatrix(new DOMMatrix(float64Array), scaleTranslate2D); | 74 checkDOMMatrix(new DOMMatrix(sequence), scaleTranslate2D); |
| 75 },'testConstructor7'); | 75 },'testConstructor7'); |
| 76 test(function() { | 76 test(function() { |
| 77 var string = 'scale(2) translateX(5px) translateY(5px)'; | 77 var string = 'scale(2) translateX(5px) translateY(5px)'; |
| 78 checkDOMMatrix(new DOMMatrix(string), scaleTranslate2D); | 78 checkDOMMatrix(new DOMMatrix(string), scaleTranslate2D); |
| 79 },'testConstructor8'); | 79 },'testConstructor8'); |
| 80 test(function() { | 80 test(function() { |
| 81 var string = 'scale(2 2) translateX(5) translateY(5)'; | 81 var string = 'scale(2, 2) translateX(5px) translateY(5px)'; |
|
Justin Novosad
2017/05/08 14:50:39
It seems the old version of the test was quite del
fserb
2017/05/08 15:31:19
It seems even the draft CSS transform doesn't acce
| |
| 82 checkDOMMatrix(new DOMMatrix(string), scaleTranslate2D); | 82 checkDOMMatrix(new DOMMatrix(string), scaleTranslate2D); |
| 83 },'testConstructor9'); | 83 },'testConstructor9'); |
| 84 test(function() { | 84 test(function() { |
| 85 var string = 'scale(2, 2), translateX(5) ,translateY(5)'; | |
| 86 checkDOMMatrix(new DOMMatrix(string), scaleTranslate2D); | |
| 87 },'testConstructor10'); | |
| 88 test(function() { | |
| 89 assert_throws('SyntaxError', function() { new DOMMatrix('translateX (5px)'); }); | 85 assert_throws('SyntaxError', function() { new DOMMatrix('translateX (5px)'); }); |
| 90 assert_throws('SyntaxError', function() { new DOMMatrix('scale(2)tra nslateX(5px)'); }); | |
|
Justin Novosad
2017/05/08 14:50:39
Why is this removed? Are you sure this case was no
fserb
2017/05/08 15:31:18
No spaces between function and (.
But the space be
| |
| 91 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5em)'); }); | 86 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5em)'); }); |
| 92 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5ex)'); }); | 87 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5ex)'); }); |
| 93 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5ch)'); }); | 88 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5ch)'); }); |
| 94 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5rem)'); }); | 89 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5rem)'); }); |
| 95 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vw)'); }); | 90 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vw)'); }); |
| 96 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vh)'); }); | 91 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vh)'); }); |
| 97 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vmin)'); }); | 92 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vmin)'); }); |
| 98 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vmax)'); }); | 93 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5vmax)'); }); |
| 99 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5%)'); }); | 94 assert_throws('SyntaxError', function() { new DOMMatrix('translateX( 5%)'); }); |
| 100 },'testConstructor11'); | 95 },'testConstructor10'); |
| 101 test(function() { | 96 test(function() { |
| 102 var sequence = [ | 97 var sequence = [ |
| 103 2.0, 1.0, 0.0, 0.0, | 98 2.0, 1.0, 0.0, 0.0, |
| 104 1.0, 2.0, 0.0, 0.0, | 99 1.0, 2.0, 0.0, 0.0, |
| 105 0.0, 0.0, 1.0, 0.0, | 100 0.0, 0.0, 1.0, 0.0, |
| 106 10.0, 10.0, 0.0, 1.0]; | 101 10.0, 10.0, 0.0, 1.0]; |
| 107 checkDOMMatrix(new DOMMatrix(sequence), { | 102 checkDOMMatrix(new DOMMatrix(sequence), { |
| 108 m11: 2, m21: 1, m31: 0, m41: 10, | 103 m11: 2, m21: 1, m31: 0, m41: 10, |
| 109 m12: 1, m22: 2, m32: 0, m42: 10, | 104 m12: 1, m22: 2, m32: 0, m42: 10, |
| 110 m13: 0, m23: 0, m33: 1, m43: 0, | 105 m13: 0, m23: 0, m33: 1, m43: 0, |
| 111 m14: 0, m24: 0, m34: 0, m44: 1, | 106 m14: 0, m24: 0, m34: 0, m44: 1, |
| 112 is2D: false, | 107 is2D: false, |
| 113 isIdentity: false | 108 isIdentity: false |
| 114 }); | 109 }); |
| 115 },'testConstructor12'); | 110 },'testConstructor11'); |
| 116 test(function() { | 111 test(function() { |
| 117 var matrix = new DOMMatrix([ | 112 var matrix = new DOMMatrix([ |
| 118 2.0, 1.0, 0.0, 0.0, | 113 2.0, 1.0, 0.0, 0.0, |
| 119 1.0, 2.0, 0.0, 0.0, | 114 1.0, 2.0, 0.0, 0.0, |
| 120 0.0, 0.0, 1.0, 0.0, | 115 0.0, 0.0, 1.0, 0.0, |
| 121 10.0, 10.0, 0.0, 1.0]); | 116 10.0, 10.0, 0.0, 1.0]); |
| 122 checkDOMMatrix(new DOMMatrix(matrix), { | 117 checkDOMMatrix(new DOMMatrix(matrix), { |
| 123 m11: 2, m21: 1, m31: 0, m41: 10, | 118 m11: 2, m21: 1, m31: 0, m41: 10, |
| 124 m12: 1, m22: 2, m32: 0, m42: 10, | 119 m12: 1, m22: 2, m32: 0, m42: 10, |
| 125 m13: 0, m23: 0, m33: 1, m43: 0, | 120 m13: 0, m23: 0, m33: 1, m43: 0, |
| 126 m14: 0, m24: 0, m34: 0, m44: 1, | 121 m14: 0, m24: 0, m34: 0, m44: 1, |
| 127 is2D: false, | 122 is2D: false, |
| 128 isIdentity: false | 123 isIdentity: false |
| 129 }); | 124 }); |
| 130 },'testConstructor13'); | 125 },'testConstructor12'); |
| 131 test(function() { | |
| 132 assert_throws(new TypeError(), function() { new DOMMatrixReadOnly(); }); | |
|
Justin Novosad
2017/05/08 14:50:39
Based on my reading of the spec, this call to the
fserb
2017/05/08 15:31:19
This is clearly off. The previous implementation h
| |
| 133 },'testConstructorIllegal0'); | |
| 134 test(function() { | 126 test(function() { |
| 135 var string = 'scale(2, 2), translateX(5px) translateY(5px)'; | 127 var string = 'scale(2, 2), translateX(5px) translateY(5px)'; |
| 136 assert_throws(new TypeError(), function() { new DOMMatrixReadOnly(st ring); }); | 128 assert_throws(new SyntaxError(), function() { new DOMMatrixReadOnly( string); }); |
|
Justin Novosad
2017/05/08 14:50:39
I agree with this correction under the assumption
| |
| 137 },'testConstructorIllegal1'); | 129 },'testConstructorIllegal0'); |
| 138 test(function() { | 130 test(function() { |
| 139 var sequence = [ 2.0, 0.0, 0.0, 2.0, 10.0]; | 131 var sequence = [ 2.0, 0.0, 0.0, 2.0, 10.0]; |
| 140 assert_throws(new TypeError(), function() { new DOMMatrixReadOnly(se quence); }); | 132 assert_throws(new TypeError(), function() { new DOMMatrixReadOnly(se quence); }); |
| 141 },'testConstructorIllegal2'); | 133 },'testConstructorIllegal1'); |
| 142 | 134 |
| 143 </script> | 135 </script> |
| 144 </body> | 136 </body> |
| 145 </html> | 137 </html> |
| OLD | NEW |