|
Line 0
a/LayoutTests/http/wpt/geometry/DOMMatrix-from-to-typed-arrays.html_sec1
|
|
|
1 |
<!DOCTYPE html> |
| 2 |
<html> |
| 3 |
<head> |
| 4 |
<title>Geometry Interfaces: DOMMatrix conversion to and from typed arrays</title> |
| 5 |
<link href="mailto:cdumez@apple.com" rel="author" title="Chris Dumez"> |
| 6 |
<link href="https://drafts.fxtf.org/geometry/#dommatrixreadonly" rel="help"> |
| 7 |
<script src="/resources/testharness.js"></script> |
| 8 |
<script src="/resources/testharnessreport.js"></script> |
| 9 |
</head> |
| 10 |
<body> |
| 11 |
<script> |
| 12 |
for (let matrix of ["DOMMatrixReadOnly", "DOMMatrix"]) { |
| 13 |
|
| 14 |
test(function() { |
| 15 |
assert_throws(new TypeError, () => { window[matrix].fromFloat32Array() }, "No parameter"); |
| 16 |
assert_throws(new TypeError, () => { window[matrix].fromFloat32Array(null) }, "Passing null"); |
| 17 |
assert_throws(new TypeError, () => { window[matrix].fromFloat32Array(new Float64Array()) }, "Bad parameter"); |
| 18 |
assert_throws(new TypeError, () => { window[matrix].fromFloat32Array(new Float32Array()) }, "Empty Float32Array"); |
| 19 |
assert_throws(new TypeError, () => { window[matrix].fromFloat32Array(new Float32Array([1, 2])) }, "Float32Array with too few items"); |
| 20 |
assert_throws(new TypeError, () => { window[matrix].fromFloat32Array(new Float32Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])) }, "Float32Array with too many items"); |
| 21 |
}, matrix + ".fromFloat32Array (error cases)"); |
| 22 |
|
| 23 |
test(function() { |
| 24 |
let matrix2d = window[matrix].fromFloat32Array(new Float32Array([1.5, 2.5, 3.5, 4.5, 5.5, 6.5])); |
| 25 |
assert_equals(matrix2d.__proto__, window[matrix].prototype); |
| 26 |
assert_equals(matrix2d.toString(), "matrix(1.5, 2.5, 3.5, 4.5, 5.5, 6.5)"); |
| 27 |
|
| 28 |
let matrix3d = window[matrix].fromFloat32Array(new Float32Array([1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5])); |
| 29 |
assert_equals(matrix3d.__proto__, window[matrix].prototype); |
| 30 |
assert_equals(matrix3d.toString(), "matrix3d(1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5)"); |
| 31 |
}, matrix + ".fromFloat32Array"); |
| 32 |
|
| 33 |
test(function() { |
| 34 |
assert_throws(new TypeError, () => { window[matrix].fromFloat64Array() }, "No parameter"); |
| 35 |
assert_throws(new TypeError, () => { window[matrix].fromFloat64Array(null) }, "Passing null"); |
| 36 |
assert_throws(new TypeError, () => { window[matrix].fromFloat64Array(new Float32Array()) }, "Bad parameter"); |
| 37 |
assert_throws(new TypeError, () => { window[matrix].fromFloat64Array(new Float64Array()) }, "Empty Float64Array"); |
| 38 |
assert_throws(new TypeError, () => { window[matrix].fromFloat64Array(new Float64Array([1, 2])) }, "Float64Array with too few items"); |
| 39 |
assert_throws(new TypeError, () => { window[matrix].fromFloat64Array(new Float64Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])) }, "Float64Array with too many items"); |
| 40 |
}, matrix + ".fromFloat64Array (error cases)"); |
| 41 |
|
| 42 |
test(function() { |
| 43 |
let matrix2d = window[matrix].fromFloat64Array(new Float64Array([1.5, 2.5, 3.5, 4.5, 5.5, 6.5])); |
| 44 |
assert_equals(matrix2d.__proto__, window[matrix].prototype); |
| 45 |
assert_equals(matrix2d.toString(), "matrix(1.5, 2.5, 3.5, 4.5, 5.5, 6.5)"); |
| 46 |
|
| 47 |
let matrix3d = window[matrix].fromFloat64Array(new Float64Array([1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5])); |
| 48 |
assert_equals(matrix3d.__proto__, window[matrix].prototype); |
| 49 |
assert_equals(matrix3d.toString(), "matrix3d(1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5)"); |
| 50 |
}, matrix + ".fromFloat64Array"); |
| 51 |
|
| 52 |
} |
| 53 |
|
| 54 |
test(function() { |
| 55 |
let matrix2d = new DOMMatrixReadOnly([1.5, 2.5, 3.5, 4.5, 5.5, 6.5]); |
| 56 |
let array32 = matrix2d.toFloat32Array(); |
| 57 |
assert_equals(array32.__proto__, Float32Array.prototype); |
| 58 |
assert_equals(array32.length, 16); |
| 59 |
assert_equals(array32.toString(), "1.5,2.5,0,0,3.5,4.5,0,0,0,0,1,0,5.5,6.5,0,1"); |
| 60 |
|
| 61 |
let matrix3d = new DOMMatrixReadOnly([1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5]); |
| 62 |
array32 = matrix3d.toFloat32Array(); |
| 63 |
assert_equals(array32.__proto__, Float32Array.prototype); |
| 64 |
assert_equals(array32.length, 16); |
| 65 |
assert_equals(array32.toString(), "1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5"); |
| 66 |
assert_equals(matrix3d.toString(), DOMMatrixReadOnly.fromFloat32Array(array32).toString()); |
| 67 |
}, "DOMMatrixReadonly.toFloat32Array"); |
| 68 |
|
| 69 |
test(function() { |
| 70 |
let matrix2d = new DOMMatrixReadOnly([1.5, 2.5, 3.5, 4.5, 5.5, 6.5]); |
| 71 |
let array64 = matrix2d.toFloat64Array(); |
| 72 |
assert_equals(array64.__proto__, Float64Array.prototype); |
| 73 |
assert_equals(array64.length, 16); |
| 74 |
assert_equals(array64.toString(), "1.5,2.5,0,0,3.5,4.5,0,0,0,0,1,0,5.5,6.5,0,1"); |
| 75 |
|
| 76 |
let matrix3d = new DOMMatrixReadOnly([1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5]); |
| 77 |
array64 = matrix3d.toFloat64Array(); |
| 78 |
assert_equals(array64.__proto__, Float64Array.prototype); |
| 79 |
assert_equals(array64.length, 16); |
| 80 |
assert_equals(array64.toString(), "1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5"); |
| 81 |
assert_equals(matrix3d.toString(), DOMMatrixReadOnly.fromFloat64Array(array64).toString()); |
| 82 |
}, "DOMMatrixReadonly.toFloat64Array"); |
| 83 |
</script> |
| 84 |
</body> |
| 85 |
</html> |