blob: 119eff48e4426102cc1ad255868f42204b9c290c [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
var EPSILON = 1e-6; // float epsilon
var values = [
{input: new CSSSkew(0, 0), ax: 0, ay: 0, cssText: "skew(0, 0)"},
{input: new CSSSkew(1, 2), ax: 1, ay: 2, cssText: "skew(1, 2)"},
{input: new CSSSkew(-2, -4), ax: -2, ay: -4, cssText: "skew(-2, -4)"},
{input: new CSSSkew(3.4, 2.7), ax: 3.4, ay: 2.7, cssText: "skew(3.4, 2.7)"}
];
test(function() {
for (var i = 0; i < values.length; ++i) {
assert_equals(values[i].input.ax, values[i].ax);
assert_equals(values[i].input.ay, values[i].ay);
}
}, "Test that the (ax, ay) values for CSSSkew are correct.");
test(function() {
for (var i = 0; i < values.length; ++i) {
assert_true(values[i].input.is2D());
}
}, "Test that the is2D values for CSSSkew is correct.");
test(function() {
for (var i = 0; i < values.length; ++i) {
assert_equals(values[i].input.cssText, values[i].cssText);
}
}, "Test that the cssText for CSSSkew is correct.");
test(function() {
assert_throws(null, function() { new CSSSkew(); });
assert_throws(null, function() { new CSSSkew(1); });
}, "Test that invalid number of arguments for CSSSkew throws an exception.");
function tanDegrees(degrees) {
var radians = degrees * Math.PI / 180;
return Math.tan(radians);
}
test(function() {
for (var i = 0; i < values.length; ++i) {
var input = values[i].input;
var inputAsMatrix = input.asMatrix();
assert_true(inputAsMatrix.is2D());
var tanAx = tanDegrees(input.ax);
var tanAy = tanDegrees(input.ay);
var expectedMatrix = new CSSMatrixTransformComponent(1, tanAy, tanAx, 1, 0, 0);
for (var attribute in expectedMatrix) {
if (typeof expectedMatrix[attribute] === "number") {
assert_approx_equals(inputAsMatrix[attribute], expectedMatrix[attribute], EPSILON);
} else {
assert_equals(inputAsMatrix[attribute], expectedMatrix[attribute]);
}
}
}
}, "Test that asMatrix is constructed correctly for CSSSkew.");
</script>