This test exercises the CSSMatrix 3D interface
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
CSSMatrix constructors
PASS default constructor
PASS object constructor
PASS string constructor
Test toString
PASS a[0] is "matrix3d"
PASS parseFloat(a2[0]) is 1
PASS parseFloat(a2[1]) is 0
PASS parseFloat(a2[2]) is 0
PASS parseFloat(a2[3]) is 1
PASS parseFloat(a2[4]) is 0
PASS parseFloat(a2[5]) is 1
PASS parseFloat(a2[6]) is 0
PASS parseFloat(a2[7]) is 0
PASS parseFloat(a2[8]) is 0
PASS parseFloat(a2[9]) is 0
PASS parseFloat(a2[10]) is 1
PASS parseFloat(a2[11]) is 0
PASS parseFloat(a2[12]) is 0
PASS parseFloat(a2[13]) is 0
PASS parseFloat(a2[14]) is 0
PASS parseFloat(a3[0]) is 1
PASS a3[1] is ""
Test bad input to string constructor
PASS new WebKitCSSMatrix("banana") threw exception SyntaxError: Failed to construct 'DOMMatrix': Failed to parse 'banana'..
Test attributes on default matrix
PASS m.m11 is 1
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 1
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 1
PASS m.m34 is 0
PASS m.m41 is 0
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 1
Test attributes on custom matrix
PASS m.m11 is 11
PASS m.m12 is 12
PASS m.m13 is 13
PASS m.m14 is 14
PASS m.m21 is 21
PASS m.m22 is 22
PASS m.m23 is 23
PASS m.m24 is 24
PASS m.m31 is 31
PASS m.m32 is 32
PASS m.m33 is 33
PASS m.m34 is 34
PASS m.m41 is 41
PASS m.m42 is 42
PASS m.m43 is 43
PASS m.m44 is 44
Test setMatrixValue - set to matrix()
PASS m.m11 is 11
PASS m.m12 is 12
PASS m.m13 is 13
PASS m.m14 is 14
PASS m.m21 is 21
PASS m.m22 is 22
PASS m.m23 is 23
PASS m.m24 is 24
PASS m.m31 is 31
PASS m.m32 is 32
PASS m.m33 is 33
PASS m.m34 is 34
PASS m.m41 is 41
PASS m.m42 is 42
PASS m.m43 is 43
PASS m.m44 is 44
Test setMatrixValue - set to translate(10px, 20px, 30px) scale(2, 3, 4)
PASS m.m11 is 2
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 3
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 4
PASS m.m34 is 0
PASS m.m41 is 10
PASS m.m42 is 20
PASS m.m43 is 30
PASS m.m44 is 1
Test throwing exception from setMatrixValue
PASS m.setMatrixValue("banana") threw exception SyntaxError: Failed to execute 'setMatrixValue' on 'DOMMatrix': Failed to parse 'banana'..
PASS m.setMatrixValue("translate3d(10em, 20%, 40)") threw exception SyntaxError: Failed to execute 'setMatrixValue' on 'DOMMatrix': Failed to parse 'translate3d(10em, 20%, 40)'..
PASS m.setMatrixValue("translate3d(10px, 20px, 30px) scale3d()") threw exception SyntaxError: Failed to execute 'setMatrixValue' on 'DOMMatrix': Failed to parse 'translate3d(10px, 20px, 30px) scale3d()'..
Test multiply
PASS parseFloat(m3.m11) is 538
PASS parseFloat(m3.m12) is 612
PASS parseFloat(m3.m13) is 686
PASS parseFloat(m3.m14) is 760
PASS parseFloat(m3.m21) is 650
PASS parseFloat(m3.m22) is 740
PASS parseFloat(m3.m23) is 830
PASS parseFloat(m3.m24) is 920
PASS parseFloat(m3.m31) is 762
PASS parseFloat(m3.m32) is 868
PASS parseFloat(m3.m33) is 974
PASS parseFloat(m3.m34) is 1080
PASS parseFloat(m3.m41) is 874
PASS parseFloat(m3.m42) is 996
PASS parseFloat(m3.m43) is 1118
PASS parseFloat(m3.m44) is 1240
Test immutability of multiply
PASS parseFloat(m.m11) is 1
PASS parseFloat(m.m12) is 2
PASS parseFloat(m.m13) is 3
PASS parseFloat(m.m14) is 4
PASS parseFloat(m.m21) is 5
PASS parseFloat(m.m22) is 6
PASS parseFloat(m.m23) is 7
PASS parseFloat(m.m24) is 8
PASS parseFloat(m.m31) is 9
PASS parseFloat(m.m32) is 10
PASS parseFloat(m.m33) is 11
PASS parseFloat(m.m34) is 12
PASS parseFloat(m.m41) is 13
PASS parseFloat(m.m42) is 14
PASS parseFloat(m.m43) is 15
PASS parseFloat(m.m44) is 16
Test multiply in an affine matrix
PASS parseFloat(m3.m11) is 31
PASS parseFloat(m3.m12) is 46
PASS parseFloat(m3.m13) is 0
PASS parseFloat(m3.m14) is 0
PASS parseFloat(m3.m21) is 39
PASS parseFloat(m3.m22) is 58
PASS parseFloat(m3.m23) is 0
PASS parseFloat(m3.m24) is 0
PASS parseFloat(m3.m31) is 0
PASS parseFloat(m3.m32) is 0
PASS parseFloat(m3.m33) is 1
PASS parseFloat(m3.m34) is 0
PASS parseFloat(m3.m41) is 52
PASS parseFloat(m3.m42) is 76
PASS parseFloat(m3.m43) is 0
PASS parseFloat(m3.m44) is 1
Test that multiply works in the right direction
PASS m.m11 is 2
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 1
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 1
PASS m.m34 is 0
PASS m.m41 is 100
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 1
Test inverse
PASS parseFloat(m2.m11) is 0.5
PASS parseFloat(m2.m12) is 0
PASS parseFloat(m2.m13) is 0
PASS parseFloat(m2.m14) is 0
PASS parseFloat(m2.m21) is 0
PASS parseFloat(m2.m22) is 0.5
PASS parseFloat(m2.m23) is 0
PASS parseFloat(m2.m24) is 0
PASS parseFloat(m2.m31) is 0
PASS parseFloat(m2.m32) is 0
PASS parseFloat(m2.m33) is 0.5
PASS parseFloat(m2.m34) is 0
PASS parseFloat(m2.m41) is -5
PASS parseFloat(m2.m42) is -10
PASS parseFloat(m2.m43) is -15
PASS parseFloat(m2.m44) is 1
Test immutability of inverse
PASS parseFloat(m.m11) is 2
PASS parseFloat(m.m12) is 0
PASS parseFloat(m.m13) is 0
PASS parseFloat(m.m14) is 0
PASS parseFloat(m.m21) is 0
PASS parseFloat(m.m22) is 2
PASS parseFloat(m.m23) is 0
PASS parseFloat(m.m24) is 0
PASS parseFloat(m.m31) is 0
PASS parseFloat(m.m32) is 0
PASS parseFloat(m.m33) is 2
PASS parseFloat(m.m34) is 0
PASS parseFloat(m.m41) is 10
PASS parseFloat(m.m42) is 20
PASS parseFloat(m.m43) is 30
PASS parseFloat(m.m44) is 1
Test not invertible 3d matrix
PASS m2.m11 is NaN
PASS m2.m12 is NaN
PASS m2.m13 is NaN
PASS m2.m14 is NaN
PASS m2.m21 is NaN
PASS m2.m22 is NaN
PASS m2.m23 is NaN
PASS m2.m24 is NaN
PASS m2.m31 is NaN
PASS m2.m32 is NaN
PASS m2.m33 is NaN
PASS m2.m34 is NaN
PASS m2.m41 is NaN
PASS m2.m42 is NaN
PASS m2.m43 is NaN
PASS m2.m44 is NaN
Test immutability of inverse
PASS m.m11 is 0
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 0
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 0
PASS m.m34 is 0
PASS m.m41 is 0
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 0
Test translate
PASS m2.m11 is 1
PASS m2.m12 is 0
PASS m2.m13 is 0
PASS m2.m14 is 0
PASS m2.m21 is 0
PASS m2.m22 is 1
PASS m2.m23 is 0
PASS m2.m24 is 0
PASS m2.m31 is 0
PASS m2.m32 is 0
PASS m2.m33 is 1
PASS m2.m34 is 0
PASS m2.m41 is 10
PASS m2.m42 is 20
PASS m2.m43 is 30
PASS m2.m44 is 1
Test immutability of translate
PASS m.m11 is 1
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 1
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 1
PASS m.m34 is 0
PASS m.m41 is 0
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 1
Test scale
PASS m2.m11 is 10
PASS m2.m12 is 0
PASS m2.m13 is 0
PASS m2.m14 is 0
PASS m2.m21 is 0
PASS m2.m22 is 20
PASS m2.m23 is 0
PASS m2.m24 is 0
PASS m2.m31 is 0
PASS m2.m32 is 0
PASS m2.m33 is 30
PASS m2.m34 is 0
PASS m2.m41 is 0
PASS m2.m42 is 0
PASS m2.m43 is 0
PASS m2.m44 is 1
Test immutability of scale
PASS m.m11 is 1
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 1
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 1
PASS m.m34 is 0
PASS m.m41 is 0
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 1
Test rotate
PASS parseFloat(m2.m11.toPrecision(6)) is 0.813798
PASS parseFloat(m2.m12.toPrecision(6)) is 0.469846
PASS parseFloat(m2.m13.toPrecision(6)) is -0.34202
PASS parseFloat(m2.m14.toPrecision(6)) is 0
PASS parseFloat(m2.m21.toPrecision(6)) is -0.44097
PASS parseFloat(m2.m22.toPrecision(6)) is 0.882564
PASS parseFloat(m2.m23.toPrecision(6)) is 0.163176
PASS parseFloat(m2.m24.toPrecision(6)) is 0
PASS parseFloat(m2.m31.toPrecision(6)) is 0.378522
PASS parseFloat(m2.m32.toPrecision(6)) is 0.0180283
PASS parseFloat(m2.m33.toPrecision(6)) is 0.925417
PASS parseFloat(m2.m34.toPrecision(6)) is 0
PASS parseFloat(m2.m41.toPrecision(6)) is 0
PASS parseFloat(m2.m42.toPrecision(6)) is 0
PASS parseFloat(m2.m43.toPrecision(6)) is 0
PASS parseFloat(m2.m44.toPrecision(6)) is 1
Test immutability of rotate
PASS m.m11 is 1
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 1
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 1
PASS m.m34 is 0
PASS m.m41 is 0
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 1
Test rotateAxisAngle
PASS parseFloat(m2.m11.toPrecision(6)) is 0.804738
PASS parseFloat(m2.m12.toPrecision(6)) is 0.505879
PASS parseFloat(m2.m13.toPrecision(6)) is -0.310617
PASS parseFloat(m2.m14.toPrecision(6)) is 0
PASS parseFloat(m2.m21.toPrecision(6)) is -0.310617
PASS parseFloat(m2.m22.toPrecision(6)) is 0.804738
PASS parseFloat(m2.m23.toPrecision(6)) is 0.505879
PASS parseFloat(m2.m24.toPrecision(6)) is 0
PASS parseFloat(m2.m31.toPrecision(6)) is 0.505879
PASS parseFloat(m2.m32.toPrecision(6)) is -0.310617
PASS parseFloat(m2.m33.toPrecision(6)) is 0.804738
PASS parseFloat(m2.m34.toPrecision(6)) is 0
PASS parseFloat(m2.m41.toPrecision(6)) is 0
PASS parseFloat(m2.m42.toPrecision(6)) is 0
PASS parseFloat(m2.m43.toPrecision(6)) is 0
PASS parseFloat(m2.m44.toPrecision(6)) is 1
Test immutability of rotateAxisAngle
PASS m.m11 is 1
PASS m.m12 is 0
PASS m.m13 is 0
PASS m.m14 is 0
PASS m.m21 is 0
PASS m.m22 is 1
PASS m.m23 is 0
PASS m.m24 is 0
PASS m.m31 is 0
PASS m.m32 is 0
PASS m.m33 is 1
PASS m.m34 is 0
PASS m.m41 is 0
PASS m.m42 is 0
PASS m.m43 is 0
PASS m.m44 is 1
PASS successfullyParsed is true
TEST COMPLETE