]> dev.renevier.net Git - syp.git/blob - openlayers/tests/BaseTypes/LonLat.html
initial commit
[syp.git] / openlayers / tests / BaseTypes / LonLat.html
1 <html>
2 <head>
3   <script src="../../lib/OpenLayers.js"></script>
4   <script type="text/javascript">
5
6     var lonlat; 
7
8     function test_LonLat_constructor (t) {
9         t.plan( 6 );
10         lonlat = new OpenLayers.LonLat(6, 5);
11         t.ok( lonlat instanceof OpenLayers.LonLat, "new OpenLayers.LonLat returns LonLat object" );
12         t.eq( lonlat.CLASS_NAME, "OpenLayers.LonLat", "lonlat.CLASS_NAME is set correctly");
13         t.eq( lonlat.lon, 6, "lonlat.lon is set correctly");
14         t.eq( lonlat.lat, 5, "lonlat.lat is set correctly");
15
16         // possible global Mercator projection values
17         lonlat = new OpenLayers.LonLat(20037508.33999999, -20037508.33999999);
18         t.eq( lonlat.lon, 20037508.34, "lonlat.lon rounds correctly");
19         t.eq( lonlat.lat, -20037508.34, "lonlat.lat rounds correctly");
20     }
21     
22     function test_LonLat_constructorFromStrings (t) {
23         t.plan( 4 );
24         lonlat = new OpenLayers.LonLat("6", "5");
25         t.ok( lonlat instanceof OpenLayers.LonLat, "new OpenLayers.LonLat returns LonLat object" );
26         t.eq( lonlat.CLASS_NAME, "OpenLayers.LonLat", "lonlat.CLASS_NAME is set correctly");
27         t.eq( lonlat.lon, 6, "lonlat.lon is set correctly");
28         t.eq( lonlat.lat, 5, "lonlat.lat is set correctly");
29     }
30
31     function test_LonLat_toString(t) {
32         t.plan( 1 );
33         lonlat = new OpenLayers.LonLat(5,6);
34         t.eq( lonlat.toString(), "lon=5,lat=6", "lonlat.toString() returns correctly");
35     }
36
37     function test_LonLat_toShortString(t) {
38         t.plan( 1 );
39         lonlat = new OpenLayers.LonLat(5,6);
40         t.eq( lonlat.toShortString(), "5, 6", "lonlat.toShortString() returns correctly");
41     }
42
43     function test_LonLat_clone(t) {
44         t.plan( 3 );
45         oldLonLat = new OpenLayers.LonLat(5,6);
46         lonlat = oldLonLat.clone();
47         t.ok( lonlat instanceof OpenLayers.LonLat, "clone returns new OpenLayers.LonLat object" );
48         t.ok( lonlat.equals(oldLonLat), "lonlat is set correctly");
49         
50         oldLonLat.lon = 100;
51         t.eq( lonlat.lon, 5, "changing oldLonLat.lon doesn't change lonlat.lon");
52     }
53
54     function test_LonLat_add(t) {
55         t.plan( 8 );
56
57         origLL = new OpenLayers.LonLat(10,100);
58         lonlatA = origLL.clone();
59
60         addpx = lonlatA.add(5, 50);
61         t.ok( lonlatA.equals(origLL), "lonlatA is not modified by add operation");
62
63         var ll = new OpenLayers.LonLat(15,150);
64         t.ok( addpx.equals(ll), "addpx is set correctly");
65         
66     //null values
67         var desiredMsg = "You must pass both lon and lat values to the add function.";
68         OpenLayers.Console.error = function(msg) {
69             t.eq(msg, desiredMsg, "error correctly reported");
70         }
71     
72         addpx = lonlatA.add(null, 50);
73         t.ok( lonlatA.equals(origLL), "lonlatA is not modified by erroneous add operation (null lon)");
74         t.ok(addpx == null, "returns null on erroneous add operation (null lon)");
75  
76         addpx = lonlatA.add(5, null);
77         t.ok( lonlatA.equals(origLL), "lonlatA is not modified by erroneous add operation (null lat)");
78         t.ok(addpx == null, "returns null on erroneous add operation (null lat)");
79     }
80     
81     function test_LonLat_equals(t) {
82         t.plan( 5 );
83         lonlat = new OpenLayers.LonLat(5,6);
84
85         ll = new OpenLayers.LonLat(5,6);
86         t.eq( lonlat.equals(ll), true, "(5,6) equals (5,6)");
87
88         ll = new OpenLayers.LonLat(1,6);
89         t.eq( lonlat.equals(ll), false, "(5,6) does not equal (1,6)");
90
91         ll = new OpenLayers.LonLat(5,2);
92         t.eq( lonlat.equals(ll), false, "(5,6) does not equal (5,2)");
93
94         ll = new OpenLayers.LonLat(1,2);
95         t.eq( lonlat.equals(ll), false, "(5,6) does not equal (1,2)");
96
97         t.ok( !lonlat.equals(null), "equals() returns false on comparison to null");
98
99     }
100
101     function test_LonLat_fromString(t) {
102         t.plan( 2 );
103         lonlat = OpenLayers.LonLat.fromString("6,5");
104         t.ok( lonlat instanceof OpenLayers.LonLat, "new OpenLayers.LonLat returns LonLat object" );
105
106         var ll = new OpenLayers.LonLat(6, 5);
107         t.ok( lonlat.equals(ll), "lonlat is set correctly");
108     }
109
110     function test_LonLat_transform(t) {
111         t.plan( 6 );
112         lonlat = new OpenLayers.LonLat(10, -10);
113         lonlat.transform(new OpenLayers.Projection("foo"), new OpenLayers.Projection("Bar")); 
114         t.eq(lonlat.lon, 10, "lon for null transform is the same")
115         t.eq(lonlat.lat, -10, "lat for null transform is the same")
116         lonlat.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")); 
117         t.eq(Math.round(lonlat.lon), 1113195, "lon for spherical mercator transform is correct");
118         t.eq(Math.round(lonlat.lat), -1118890, "lat for spherical mercator correct")
119         lonlat.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326")); 
120         t.eq(lonlat.lon, 10, "lon for inverse spherical mercator transform is correct");
121         t.eq(Math.round(lonlat.lat), -10, "lat for inverse spherical mercator correct")
122     }
123     
124     function test_LonLat_wrapDateLine(t) {
125         t.plan( 6 );
126
127         var goodLL = new OpenLayers.LonLat(0,0);
128         var testLL, wrappedLL;
129
130   //bad maxextent
131         var maxExtent = null;
132
133         testLL = goodLL.clone();
134         wrappedLL = testLL.wrapDateLine(maxExtent);
135         t.ok(wrappedLL.equals(goodLL), "wrapping a ll with a bad maxextent does nothing");
136         
137         
138   //good maxextent
139         maxExtent = new OpenLayers.Bounds(-10,-10,10,10);
140
141     //inside
142         testLL = goodLL.clone();
143         wrappedLL = testLL.wrapDateLine(maxExtent);
144         t.ok(wrappedLL.equals(goodLL), "wrapping a ll within the maxextent does nothing");
145         
146     //left
147         testLL = goodLL.add(-20,0);
148         wrappedLL = testLL.wrapDateLine(maxExtent);
149         t.ok(wrappedLL.equals(goodLL), "wrapping a ll once left of maxextent works");
150         
151     //way left
152         testLL = goodLL.add(-200,0);
153         wrappedLL = testLL.wrapDateLine(maxExtent);
154         t.ok(wrappedLL.equals(goodLL), "wrapping a ll way left of maxextent works");
155
156     //right
157         testLL = goodLL.add(20,0);
158         wrappedLL = testLL.wrapDateLine(maxExtent);
159         t.ok(wrappedLL.equals(goodLL), "wrapping a ll once right of maxextent works");
160         
161     //way right
162         testLL = goodLL.add(200,0);
163         wrappedLL = testLL.wrapDateLine(maxExtent);
164         t.ok(wrappedLL.equals(goodLL), "wrapping a ll way right of maxextent works");
165
166     }
167
168
169   </script>
170 </head>
171 <body>
172 </body>
173 </html>