49 lines
1.6 KiB
HTML
49 lines
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
const originalIterator = Object.getOwnPropertyDescriptor(Array.prototype, Symbol.iterator);
|
|
|
|
test(() => {
|
|
let callCount = 0;
|
|
let array = [2.0, 0.0, 0.0, 2.0, 10.0, 10.0];
|
|
Object.defineProperty(array, Symbol.iterator, {
|
|
get() {
|
|
++callCount;
|
|
return originalIterator.value;
|
|
}
|
|
});
|
|
|
|
let matrix = new DOMMatrix(array);
|
|
|
|
assert_equals(callCount, 1, "@@iterator must only be accessed once.");
|
|
assert_equals(matrix.toString(), "matrix(2, 0, 0, 2, 10, 10)", "DOMMatrix constructor should work correctly.");
|
|
}, "@@iterator should only be accessed once, tested via replacement of @@iterator on instance.");
|
|
|
|
test((t) => {
|
|
t.add_cleanup(() => {
|
|
Object.defineProperty(Array.prototype, Symbol.iterator, originalIterator);
|
|
});
|
|
|
|
let callCount = 0;
|
|
const array = [2.0, 0.0, 0.0, 2.0, 10.0, 10.0];
|
|
Object.defineProperty(Array.prototype, Symbol.iterator, {
|
|
get() {
|
|
++callCount;
|
|
return originalIterator.value;
|
|
}
|
|
});
|
|
|
|
let matrix = new DOMMatrix(array);
|
|
|
|
assert_equals(callCount, 1, "@@iterator must only be accessed once.");
|
|
assert_equals(matrix.toString(), "matrix(2, 0, 0, 2, 10, 10)", "DOMMatrix constructor should work correctly.");
|
|
}, "@@iterator should only be accessed once, tested via replacement of @@iterator on prototype.");
|
|
</script>
|
|
</body>
|
|
</html>
|