187 lines
7.6 KiB
HTML
187 lines
7.6 KiB
HTML
<!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>
|