OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 | 4 |
5 <script> | 5 <script> |
6 var EPSILON = 1e-6; // float epsilon | 6 var EPSILON = 1e-6; // float epsilon |
7 | 7 |
8 function angle(deg) { return new CSSAngleValue(deg, 'deg'); } | 8 function angle(deg) { return new CSSUnitValue(deg, 'deg'); } |
9 | 9 |
10 function tanDegrees(degrees) { | 10 function tanDegrees(degrees) { |
11 var radians = degrees * Math.PI / 180; | 11 var radians = degrees * Math.PI / 180; |
12 return Math.tan(radians); | 12 return Math.tan(radians); |
13 } | 13 } |
14 | 14 |
15 var values = [ | 15 var values = [ |
16 {input: new CSSSkew(angle(0), angle(0)), ax: 0, ay: 0, cssText: "skew(0deg, 0d
eg)"}, | 16 {input: new CSSSkew(angle(0), angle(0)), ax: 0, ay: 0, cssText: "skew(0deg, 0d
eg)"}, |
17 {input: new CSSSkew(angle(1), angle(2)), ax: 1, ay: 2, cssText: "skew(1deg, 2d
eg)"}, | 17 {input: new CSSSkew(angle(1), angle(2)), ax: 1, ay: 2, cssText: "skew(1deg, 2d
eg)"}, |
18 {input: new CSSSkew(angle(-2), angle(-4)), ax: -2, ay: -4, cssText: "skew(-2de
g, -4deg)"}, | 18 {input: new CSSSkew(angle(-2), angle(-4)), ax: -2, ay: -4, cssText: "skew(-2de
g, -4deg)"}, |
19 {input: new CSSSkew(angle(3.4), angle(2.7)), ax: 3.4, ay: 2.7, cssText: "skew(
3.4deg, 2.7deg)"}, | 19 {input: new CSSSkew(angle(3.4), angle(2.7)), ax: 3.4, ay: 2.7, cssText: "skew(
3.4deg, 2.7deg)"}, |
20 {input: new CSSSkew(new CSSAngleValue(1, 'rad'), angle(0)), ax: 57.2957795, ay
: 0, cssText: "skew(1rad, 0deg)"}, | 20 {input: new CSSSkew(new CSSUnitValue(1, 'rad'), angle(0)), ax: 57.2957795, ay:
0, cssText: "skew(1rad, 0deg)"}, |
21 {input: new CSSSkew(angle(0), new CSSAngleValue(1, 'rad')), ax: 0, ay: 57.2957
795, cssText: "skew(0deg, 1rad)"} | 21 {input: new CSSSkew(angle(0), new CSSUnitValue(1, 'rad')), ax: 0, ay: 57.29577
95, cssText: "skew(0deg, 1rad)"} |
22 ]; | 22 ]; |
23 | 23 |
24 test(function() { | 24 test(function() { |
25 for (var i = 0; i < values.length; ++i) { | 25 for (var i = 0; i < values.length; ++i) { |
26 assert_approx_equals(values[i].input.ax.degrees, values[i].ax, EPSILON); | 26 assert_approx_equals(values[i].input.ax.degrees, values[i].ax, EPSILON); |
27 assert_approx_equals(values[i].input.ay.degrees, values[i].ay, EPSILON); | 27 assert_approx_equals(values[i].input.ay.degrees, values[i].ay, EPSILON); |
28 } | 28 } |
29 }, "(ax, ay) values for CSSSkew are correct."); | 29 }, "(ax, ay) values for CSSSkew are correct."); |
30 | 30 |
31 test(function() { | 31 test(function() { |
32 for (var i = 0; i < values.length; ++i) { | 32 for (var i = 0; i < values.length; ++i) { |
33 assert_true(values[i].input.is2D()); | 33 assert_true(values[i].input.is2D()); |
34 } | 34 } |
35 }, "is2D values for CSSSkew are correct."); | 35 }, "is2D values for CSSSkew are correct."); |
36 | 36 |
37 test(function() { | 37 test(function() { |
38 for (var i = 0; i < values.length; ++i) { | 38 for (var i = 0; i < values.length; ++i) { |
39 assert_equals(values[i].input.toString(), values[i].cssText); | 39 assert_equals(values[i].input.toString(), values[i].cssText); |
40 } | 40 } |
41 }, "toString() for CSSSkew is correct."); | 41 }, "toString() for CSSSkew is correct."); |
42 | 42 |
43 test(function() { | 43 test(function() { |
44 assert_throws(null, function() { new CSSSkew(); }); | 44 assert_throws(new TypeError(), function() { new CSSSkew(); }); |
45 assert_throws(null, function() { new CSSSkew(null); }); | 45 assert_throws(new TypeError(), function() { new CSSSkew(null); }); |
46 assert_throws(null, function() { new CSSSkew(1); }); | 46 assert_throws(new TypeError(), function() { new CSSSkew(1); }); |
47 assert_throws(null, function() { new CSSSkew('1'); }); | 47 assert_throws(new TypeError(), function() { new CSSSkew('1'); }); |
48 assert_throws(null, function() { new CSSSkew(angle(1)); }); | 48 assert_throws(new TypeError(), function() { new CSSSkew(angle(1)); }); |
49 }, "Invalid arguments for CSSSkew throws an exception."); | 49 }, "Invalid arguments for CSSSkew throws an exception."); |
50 | 50 |
51 test(function() { | 51 test(function() { |
52 for (var i = 0; i < values.length; ++i) { | 52 for (var i = 0; i < values.length; ++i) { |
53 var input = values[i].input; | 53 var input = values[i].input; |
54 var inputAsMatrix = input.asMatrix(); | 54 var inputAsMatrix = input.asMatrix(); |
55 assert_true(inputAsMatrix.is2D()); | 55 assert_true(inputAsMatrix.is2D()); |
56 var tanAx = tanDegrees(input.ax.degrees); | 56 var tanAx = tanDegrees(input.ax.degrees); |
57 var tanAy = tanDegrees(input.ay.degrees); | 57 var tanAy = tanDegrees(input.ay.degrees); |
58 var expectedMatrix = new CSSMatrixComponent(new DOMMatrixReadOnly([1, tanAy,
tanAx, 1, 0, 0])); | 58 var expectedMatrix = new CSSMatrixComponent(new DOMMatrixReadOnly([1, tanAy,
tanAx, 1, 0, 0])); |
(...skipping 11 matching lines...) Expand all Loading... |
70 for (var i = 0; i < actual.length; i++) { | 70 for (var i = 0; i < actual.length; i++) { |
71 assert_approx_equals(actual[i], expected[i], EPSILON); | 71 assert_approx_equals(actual[i], expected[i], EPSILON); |
72 } | 72 } |
73 } | 73 } |
74 | 74 |
75 function assert_matrix_approx_equals(actual, expected) { | 75 function assert_matrix_approx_equals(actual, expected) { |
76 assert_array_approx_equals(actual.toFloat64Array(), expected.toFloat64Array())
; | 76 assert_array_approx_equals(actual.toFloat64Array(), expected.toFloat64Array())
; |
77 } | 77 } |
78 | 78 |
79 </script> | 79 </script> |
OLD | NEW |