<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="./resources/geometry-interfaces-test-helpers.js"></script>
<script>
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale();
assert_identity_2d_matrix(result);
assert_identity_2d_matrix(matrix);
assert_not_equals(result, matrix, 'result and matrix should be different object');
}, "DOMMatrix.scale()");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale(3);
assert_2d_matrix_equals(result, [3, 0, 0, 3, 0, 0]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale(sx)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale(3, 3);
assert_2d_matrix_equals(result, [3, 0, 0, 3, 0, 0]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale(sx, sy)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale(3, 8);
assert_2d_matrix_equals(result, [3, 0, 0, 8, 0, 0]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale(sx, sy)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale(3, 3, 1, 4, 2);
assert_2d_matrix_equals(result, [3, 0, 0, 3, -8, -4]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale(sx, sy, sz, ox, oy)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale(2, 3, 0.5, 2, -4, -1);
assert_3d_matrix_equals(result, [2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0.5, 0, -2, 8, -0.5, 1]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale(sx, sy, sz, ox, oy, oz)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleNonUniform();
assert_identity_2d_matrix(result);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scaleNonUniform()");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleNonUniform(5);
var expected = matrix.scale(5, 1, 1, 0, 0, 0);
assert_2d_matrix_equals(result, [expected.a, expected.b, expected.c, expected.d, expected.e, expected.f]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scaleNonUniform(scaleX)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleNonUniform(5, 7);
var expected = matrix.scale(5, 7, 1, 0, 0, 0);
assert_2d_matrix_equals(result, [expected.a, expected.b, expected.c, expected.d, expected.e, expected.f]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scaleNonUniform(scaleX, scaleY)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale3d();
assert_identity_2d_matrix(result);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale3d()");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale3d(3);
assert_3d_matrix_equals(result, [3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale3d(scale)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale3d(3, 2, 7, -1);
assert_3d_matrix_equals(result, [3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, -4, -14, 2, 1]);
assert_identity_2d_matrix(matrix);
}, "DOMMatrix.scale3d(scale, ox, oy, oz)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf();
assert_identity_2d_matrix(result);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf()");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf(3);
assert_2d_matrix_equals(result, [3, 0, 0, 3, 0, 0]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf(sx)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf(3, 3);
assert_2d_matrix_equals(result, [3, 0, 0, 3, 0, 0]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf(sx, sy)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf(3, 7);
assert_2d_matrix_equals(result, [3, 0, 0, 7, 0, 0]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf(sx, sy)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf(3, 3, 1, 4, 2);
assert_2d_matrix_equals(result, [3, 0, 0, 3, -8, -4]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf(sx, sy, sz, ox, oy)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf(2, 3, 0.5, 2, -4, -1);
assert_3d_matrix_equals(result, [2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0.5, 0, -2, 8, -0.5, 1]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf(sx, sy, sz, ox, oy, oz)");
// origin value is used to move base point before scale.
// after scale, base point is return to negative origin value.
// if scale value were 1, value of matrix should be same before scale.
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scaleSelf(1, 1, 1, 2, -4, -1);
assert_identity_3d_matrix(result);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scaleSelf(1, 1, 1, ox, oy, oz)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale3dSelf(3);
assert_3d_matrix_equals(result, [3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scale3dSelf(scale)");
test(function() {
var matrix = new DOMMatrix();
assert_identity_2d_matrix(matrix);
var result = matrix.scale3dSelf(3, 2, 7, -1);
assert_3d_matrix_equals(result, [3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, -4, -14, 2, 1]);
assert_equals(result, matrix, 'result and matrix should be the exact same object');
}, "DOMMatrix.scale3dSelf(scale, ox, oy, oz)");
</script>