summaryrefslogtreecommitdiffstats
path: root/dom/svg/test/matrixUtils.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/svg/test/matrixUtils.js')
-rw-r--r--dom/svg/test/matrixUtils.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/dom/svg/test/matrixUtils.js b/dom/svg/test/matrixUtils.js
new file mode 100644
index 0000000000..ed9b8297b9
--- /dev/null
+++ b/dom/svg/test/matrixUtils.js
@@ -0,0 +1,78 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
+ * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*
+ * Utilities for testing SVG matrices
+ */
+
+function createMatrix(a, b, c, d, e, f) {
+ var svg = document.getElementsByTagName("svg")[0];
+ var m = svg.createSVGMatrix();
+ m.a = a;
+ m.b = b;
+ m.c = c;
+ m.d = d;
+ m.e = e;
+ m.f = f;
+ return m;
+}
+
+// Lightweight dummy Matrix class for representing arrays that get passed in
+function MatrixFromArray(a) {
+ this.a = a[0];
+ this.b = a[1];
+ this.c = a[2];
+ this.d = a[3];
+ this.e = a[4];
+ this.f = a[5];
+}
+
+function cmpMatrix(a, b, msg) {
+ if (a.constructor === Array) {
+ a = new MatrixFromArray(a);
+ }
+ if (b.constructor === Array) {
+ b = new MatrixFromArray(b);
+ }
+
+ ok(
+ a.a == b.a &&
+ a.b == b.b &&
+ a.c == b.c &&
+ a.d == b.d &&
+ a.e == b.e &&
+ a.f == b.f,
+ msg + " - got " + formatMatrix(a) + ", expected " + formatMatrix(b)
+ );
+}
+
+function roughCmpMatrix(a, b, msg) {
+ if (a.constructor === Array) {
+ a = new MatrixFromArray(a);
+ }
+ if (b.constructor === Array) {
+ b = new MatrixFromArray(b);
+ }
+
+ const tolerance = 1 / 65535;
+ ok(
+ Math.abs(b.a - a.a) < tolerance &&
+ Math.abs(b.b - a.b) < tolerance &&
+ Math.abs(b.c - a.c) < tolerance &&
+ Math.abs(b.d - a.d) < tolerance &&
+ Math.abs(b.e - a.e) < tolerance &&
+ Math.abs(b.f - a.f) < tolerance,
+ msg + " - got " + formatMatrix(a) + ", expected " + formatMatrix(b)
+ );
+}
+
+function formatMatrix(m) {
+ if (m.constructor != Array) {
+ return "(" + [m.a, m.b, m.c, m.d, m.e, m.f].join(", ") + ")";
+ }
+
+ return "(" + m.join(", ") + ")";
+}