Index: third_party/WebKit/LayoutTests/typedcssom/translationTransformComponent.html |
diff --git a/third_party/WebKit/LayoutTests/typedcssom/translationTransformComponent.html b/third_party/WebKit/LayoutTests/typedcssom/translationTransformComponent.html |
index 7ae5f462c4b55a22b5ad6c9366f12bcb49fcd7e3..7a4ad3a9f119989aa78c8ab4be62275b00d39d4d 100644 |
--- a/third_party/WebKit/LayoutTests/typedcssom/translationTransformComponent.html |
+++ b/third_party/WebKit/LayoutTests/typedcssom/translationTransformComponent.html |
@@ -3,6 +3,7 @@ |
<script src="../resources/testharnessreport.js"></script> |
<script> |
+var EPSILON = 1e-6; // float epsilon |
var simpleLength = new SimpleLength(0, "px"); |
var decimalLength = new SimpleLength(1.1, "px"); |
@@ -94,4 +95,47 @@ test(function() { |
assert_throws(null, function() { new Translation(simpleLength); }); |
}, "Test that invalid number of arguments for Translation throws an exception."); |
+function assert_matrix_equals(actual, expected) { |
+ assert_equals(actual.is2DComponent(), expected.is2DComponent()); |
+ for (var attribute in expected) { |
+ if (typeof expected[attribute] === "number") { |
+ assert_approx_equals(actual[attribute], expected[attribute], EPSILON); |
+ } else { |
+ assert_equals(actual[attribute], expected[attribute]); |
+ } |
+ } |
+} |
+ |
+test(function() { |
+ var coordinates = [ |
+ {x: 0, y: 0, z: 0}, |
+ {x: 1, y: 0, z: 0}, |
+ {x: 0, y: 1, z: 0}, |
+ {x: 0, y: 0, z: 1}, |
+ {x: 1, y: 2, z: 3}, |
+ {x: 1.1, y: 0, z: 3.3}, |
+ {x: -1, y: 2, z: -0.1} |
+ ]; |
+ |
+ for (var i = 0; i < coordinates.length; ++i) { |
+ var x = coordinates[i].x; |
+ var y = coordinates[i].y; |
+ var z = coordinates[i].z; |
+ |
+ var lengthX = new SimpleLength(x, "px"); |
+ var lengthY = new SimpleLength(y, "px"); |
+ var lengthZ = new SimpleLength(z, "px"); |
+ |
+ // Test 2D translation matrix |
+ var translation2D = new Translation(lengthX, lengthY); |
+ var expectedMatrix2D = new Matrix(1, 0, 0, 1, x, y); |
+ assert_matrix_equals(translation2D.asMatrix(), expectedMatrix2D); |
+ |
+ // Test 3D translation matrix |
+ var translation3D = new Translation(lengthX, lengthY, lengthZ); |
+ var expectedMatrix3D = new Matrix(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1); |
+ assert_matrix_equals(translation3D.asMatrix(), expectedMatrix3D); |
+ } |
+}, "asMatrix for simple Translation instances constructs the correct matrix"); |
+ |
</script> |