| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>Geometry Interfaces: DOMRect and DOMRectReadOnly interface tests.</title> | |
| <link rel="author" title="Dirk Schulze" href="mailto:simon.fraser@apple.com" /> | |
| <link rel="help" href="http://www.w3.org/TR/geometry-1/#DOMRect"> | |
| <link rel="help" href="https://drafts.fxtf.org/geometry/#DOMRect"> | |
| <script src="../resources/testharness.js"></script> | |
| <script src="../resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <p>Test DOMRect and DOMRectReadOnly interfaces</p> | |
| <div id="log"></div> | |
| <script> | |
| test(function() { | |
| checkDOMRect(new DOMRectReadOnly(), { x:0, y:0, width:0, height:0 }); | |
| },'testDOMRectReadOnlyConstructor0'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructor4Args'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(new DOMRectReadOnly(x), { x, y:0, width:0, height:0 }); | |
| },'testDOMRectReadOnlyConstructor1Arg'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(new DOMRectReadOnly(x, y), { x, y, width:0, height:0 }); | |
| },'testDOMRectReadOnlyConstructor2Args'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width), { x, y, width, height:0 }); | |
| },'testDOMRectReadOnlyConstructor3Args'); | |
| test(function() { | |
| x = Math.PI; | |
| y = Math.SQRT2; | |
| width = Math.E; | |
| height = Math.LN10; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorDoublePrecision'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = -99; | |
| var height = 102; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorNegativeWidth'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = -102; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorNegativeHeight'); | |
| test(function() { | |
| var x = 1; | |
| var y = NaN; | |
| var width = NaN; | |
| var height = -200; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorNaN1'); | |
| test(function() { | |
| var x = NaN; | |
| var y = 2; | |
| var width = 99; | |
| var height = NaN; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorNaN2'); | |
| test(function() { | |
| var x = Infinity; | |
| var y = -102; | |
| var width = 304; | |
| var height = -Infinity; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorInf1'); | |
| test(function() { | |
| var x = 23; | |
| var y = -Infinity; | |
| var width = Infinity; | |
| var height = -99; | |
| checkDOMRect(new DOMRectReadOnly(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectReadOnlyConstructorInf2'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| var domRect = new DOMRectReadOnly(x, y, width, height); | |
| domRect.x = 1200; | |
| domRect.height = 300; | |
| checkDOMRect(domRect, { x, y, width, height }); | |
| },'testDOMRectReadOnlyIsReadOnly'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(DOMRectReadOnly.fromRect({ x, y, width, height }), { x, y, width, height }); | |
| },'testDOMRectReadOnlyFromRect'); | |
| test(function() { | |
| assert_true(DOMRectReadOnly.fromRect({ x:11, y:22, width:33, height:44 }) instanceof DOMRectReadOnly) | |
| },'testFromRectReturnsDOMRectReadOnly'); | |
| test(function() { | |
| var x = 10; | |
| var width = 99; | |
| checkDOMRect(DOMRectReadOnly.fromRect({ x, width }), { x, y:0, width, height:0 }); | |
| },'testDOMRectReadOnlyFromRectPartial'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = -102; | |
| checkDOMRect(DOMRectReadOnly.fromRect({ x, y, width, height }).toJSON(), { x, y, width, height }); | |
| },'testDOMRectReadOnlySerialization'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(new DOMRect(x, y, width, height), { x, y, width, height }); | |
| },'testDOMRectConstructor0'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| var domRect = new DOMRect(x, y, width, height); | |
| domRect.x = 1200; | |
| domRect.height = 300; | |
| checkDOMRect(domRect, { x:1200, y, width, height:300 }); | |
| },'testDOMRectIsWritable'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| var domRect = new DOMRect(x, y, width, height); | |
| domRect.x = NaN; | |
| domRect.height = NaN; | |
| checkDOMRect(domRect, { x:NaN, y:12, width:99, height:NaN }); | |
| },'testDOMRectIsWritableWithNaN'); | |
| test(function() { | |
| assert_true(DOMRect.fromRect({ x:11, y:22, width:33, height:44 }) instanceof DOMRect) | |
| },'testFromRectReturnsDOMRect'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = 102; | |
| checkDOMRect(DOMRect.fromRect({ x, y, width, height }), { x, y, width, height }); | |
| },'testDOMRectFromRect'); | |
| test(function() { | |
| var x = 10; | |
| var y = 12; | |
| var width = 99; | |
| var height = -102; | |
| checkDOMRect(DOMRect.fromRect({ x, y, width, height }).toJSON(), { x, y, width, height }); | |
| },'testDOMRectSerialization'); | |
| function checkDOMRect(r, exp) { | |
| assert_equals(r.x, exp.x, "Expected value for x is " + exp.x); | |
| assert_equals(r.y, exp.y, "Expected value for y is " + exp.y); | |
| assert_equals(r.width, exp.width, "Expected value for width is " + exp.width); | |
| assert_equals(r.height, exp.height, "Expected value for height is " + exp.height); | |
| assert_equals(r.left, Math.min(exp.x, exp.x + exp.width), "Expected value for left is " + Math.min(exp.x, exp.x + exp.width)); | |
| assert_equals(r.right, Math.max(exp.x, exp.x + exp.width), "Expected value for right is " + Math.max(exp.x, exp.x + exp.width)); | |
| assert_equals(r.top, Math.min(exp.y, exp.y + exp.height), "Expected value for top is " + Math.min(exp.y, exp.y + exp.height)); | |
| assert_equals(r.bottom, Math.max(exp.y, exp.y + exp.height), "Expected value for bottom is " + Math.max(exp.y, exp.y + exp.height)); | |
| } | |
| </script> | |
| </body> | |
| </html> |