Support the deprecated dictionary constructor for DOMPointReadOnly and DOMPoint
[WebKit-https.git] / LayoutTests / geometry / DOMPoint-001.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4     <title>Geometry Interfaces: DOMPoint and DOMPointReadOnly interface tests.</title>
5     <link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com" />
6     <link rel="help" href="http://www.w3.org/TR/geometry-1/#DOMPoint">
7     <link rel="help" href="http://dev.w3.org/fxtf/geometry/#dictdef-dompointinit">
8     <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dompoint-dompoint">
9     <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dompointreadonly-dompoint-x">
10     <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dompointreadonly-dompoint-y">
11     <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dompointreadonly-dompoint-z">
12     <link rel="help" href="http://www.w3.org/TR/geometry-1/#dom-dompointreadonly-dompoint-w">
13     <script src="../resources/testharness.js"></script>
14     <script src="../resources/testharnessreport.js"></script>
15 </head>
16 <body>
17     <p>Test DOMPoint and DOMPointReadOnly interfaces</p>
18     <div id="log"></div>
19     <script>
20         test(function() {
21             checkDOMPoint(new DOMPoint(), {x:0, y:0, z:0, w:1});
22         },'testConstructor0');
23         test(function() {
24             checkDOMPoint(new DOMPoint(1), {x:1, y:0, z:0, w:1})
25         },'testConstructor1');
26         test(function() {
27             checkDOMPoint(new DOMPoint(1, 2), {x:1, y:2, z:0, w:1});
28         },'testConstructor2');
29         test(function() {
30             checkDOMPoint(new DOMPoint(1, 2, 3), {x:1, y:2, z:3, w:1});
31         },'testConstructor3');
32         test(function() {
33             checkDOMPoint(new DOMPoint(1, 2, 3, 4), {x:1, y:2, z:3, w:4});
34         },'testConstructor4');
35         test(function() {
36             checkDOMPoint(new DOMPoint(1, 2, 3, 4, 5), {x:1, y:2, z:3, w:4});
37         },'testConstructor5');
38
39         // Dictionary constructors are in http://www.w3.org/TR/geometry-1 but not http://dev.w3.org/fxtf/geometry.
40         test(function() {
41             checkDOMPoint(new DOMPoint({x:1, y:2, z:3, w:4}), {x:1, y:2, z:3, w:4});
42         },'testDictionaryConstructor1');
43         test(function() {
44             checkDOMPoint(new DOMPoint({}), {x:0, y:0, z:0, w:1});
45         },'testDictionaryConstructor2');
46         test(function() {
47             checkDOMPoint(new DOMPoint({x:1}), {x:1, y:0, z:0, w:1});
48         },'testDictionaryConstructor3');
49         test(function() {
50             checkDOMPoint(new DOMPoint({y:3, w:0.5}), {x:0, y:3, z:0, w:0.5});
51         },'testDictionaryConstructor4');
52
53         test(function() {
54             checkDOMPoint(DOMPoint.fromPoint({}), {x:0, y:0, z:0, w:1});
55         },'testConstructorDOMPointInit0');
56         test(function() {
57             checkDOMPoint(DOMPoint.fromPoint({x:1}), {x:1, y:0, z:0, w:1});
58         },'testConstructorDOMPointInit1');
59         test(function() {
60             checkDOMPoint(DOMPoint.fromPoint({x:1, y:2}), {x:1, y:2, z:0, w:1});
61         },'testConstructorDOMPointInit2');
62         test(function() {
63             checkDOMPoint(DOMPoint.fromPoint({x:1, y:2, z:3}), {x:1, y:2, z:3, w:1});
64         },'testConstructorDOMPointInit3');
65         test(function() {
66             checkDOMPoint(DOMPoint.fromPoint({x:1, y:2, z:3, w:4}), {x:1, y:2, z:3, w:4});
67         },'testConstructorDOMPointInit4');
68         test(function() {
69             checkDOMPoint(DOMPoint.fromPoint({x:1, y:2, z:3, w:4, v:5}), {x:1, y:2, z:3, w:4});
70         },'testConstructorDOMPointInit5');
71         test(function() {
72             checkDOMPoint(DOMPoint.fromPoint({x:1, z:3}), {x:1, y:0, z:3, w:1});
73         },'testConstructorDOMPointInit2irregular');
74         test(function() {
75             checkDOMPoint(DOMPoint.fromPoint({x:1, y: undefined, z:3}), {x:1, y:0, z:3, w:1});
76         },'testConstructorDOMPointInit2undefined');
77         test(function() {
78             checkDOMPoint(new DOMPointReadOnly(), {x:0, y:0, z:0, w:1});
79         },'testReadonlyConstructor1');
80         test(function() {
81             checkDOMPoint(new DOMPoint(1, NaN), {x:1, y:NaN, z:0, w:1});
82         },'testConstructor2NaN');
83         test(function() {
84             checkDOMPoint(new DOMPoint(1, Number.POSITIVE_INFINITY), {x:1, y:Infinity, z:0, w:1});
85         },'testConstructor2Infinity');
86         test(function() {
87             var p = DOMPoint.fromPoint({});
88             assert_true(p instanceof DOMPoint);
89         },'testFromPointReturnType');
90         test(function() {
91             var p = DOMPointReadOnly.fromPoint({});
92             assert_true(p instanceof DOMPointReadOnly);
93         },'testFromPointReadOnlyReturnType');
94         test(function() {
95             var p = new DOMPointReadOnly();
96             p.x = 1;
97             p.y = Math.PI;
98             p.z = 3.2;
99             p.w = 4;
100             checkDOMPoint(p, {x:0, y:0, z:0, w:1});
101         },'testReadonlyAttributes');
102         test(function() {
103             var p = new DOMPoint();
104             p.x = 1;
105             p.y = Math.PI;
106             p.z = 3.2;
107             p.w = 4;
108             checkDOMPoint(p, {x:1, y:Math.PI, z:3.2, w:4});
109         },'testAttributes');
110         test(function() {
111             var p = new DOMPoint(0, 0, 0, 1);
112             p.x = undefined;
113             p.y = undefined;
114             p.z = undefined;
115             p.w = undefined;
116             checkDOMPoint(p, {x:NaN, y:NaN, z:NaN, w:NaN});
117         },'testAttributesUndefined');
118         test(function() {
119             var p = new DOMPoint(0, 0, 0, 1);
120             p.x = NaN;
121             p.y = Number.POSITIVE_INFINITY;
122             p.z = Number.NEGATIVE_INFINITY;
123             p.w = Infinity;
124             checkDOMPoint(p, {x:NaN, y:Infinity, z:-Infinity, w:Infinity});
125         },'testAttributesNaNInfinity');
126         test(function() {
127             var p = DOMPoint.fromPoint({x:1, y:3.1415927, z:3.2, w:4});
128             assert_equals(JSON.stringify(p.toJSON()), "{\"x\":1,\"y\":3.1415927,\"z\":3.2,\"w\":4}");
129         },'testSerializer');
130         test(function() {
131             var p = DOMPointReadOnly.fromPoint({x:1, y:3.1415927, z:3.2, w:4});
132             assert_equals(JSON.stringify(p.toJSON()), "{\"x\":1,\"y\":3.1415927,\"z\":3.2,\"w\":4}");
133         },'testReadonlySerializer');
134
135         function checkDOMPoint(p, exp) {
136             assert_equals(p.x, exp.x, "Expected value for x is " + exp.x);
137             assert_equals(p.y, exp.y, "Expected value for y is " + exp.y);
138             assert_equals(p.z, exp.z, "Expected value for z is " + exp.z);
139             assert_equals(p.w, exp.w, "Expected value for w is " + exp.w);
140         }
141     </script>
142 </body>
143 </html>