3 <script src="../../lib/OpenLayers.js"></script>
4 <script type="text/javascript">
8 function test_LonLat_constructor (t) {
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");
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");
22 function test_LonLat_constructorFromStrings (t) {
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");
31 function test_LonLat_toString(t) {
33 lonlat = new OpenLayers.LonLat(5,6);
34 t.eq( lonlat.toString(), "lon=5,lat=6", "lonlat.toString() returns correctly");
37 function test_LonLat_toShortString(t) {
39 lonlat = new OpenLayers.LonLat(5,6);
40 t.eq( lonlat.toShortString(), "5, 6", "lonlat.toShortString() returns correctly");
43 function test_LonLat_clone(t) {
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");
51 t.eq( lonlat.lon, 5, "changing oldLonLat.lon doesn't change lonlat.lon");
54 function test_LonLat_add(t) {
57 origLL = new OpenLayers.LonLat(10,100);
58 lonlatA = origLL.clone();
60 addpx = lonlatA.add(5, 50);
61 t.ok( lonlatA.equals(origLL), "lonlatA is not modified by add operation");
63 var ll = new OpenLayers.LonLat(15,150);
64 t.ok( addpx.equals(ll), "addpx is set correctly");
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");
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)");
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)");
81 function test_LonLat_equals(t) {
83 lonlat = new OpenLayers.LonLat(5,6);
85 ll = new OpenLayers.LonLat(5,6);
86 t.eq( lonlat.equals(ll), true, "(5,6) equals (5,6)");
88 ll = new OpenLayers.LonLat(1,6);
89 t.eq( lonlat.equals(ll), false, "(5,6) does not equal (1,6)");
91 ll = new OpenLayers.LonLat(5,2);
92 t.eq( lonlat.equals(ll), false, "(5,6) does not equal (5,2)");
94 ll = new OpenLayers.LonLat(1,2);
95 t.eq( lonlat.equals(ll), false, "(5,6) does not equal (1,2)");
97 t.ok( !lonlat.equals(null), "equals() returns false on comparison to null");
101 function test_LonLat_fromString(t) {
103 lonlat = OpenLayers.LonLat.fromString("6,5");
104 t.ok( lonlat instanceof OpenLayers.LonLat, "new OpenLayers.LonLat returns LonLat object" );
106 var ll = new OpenLayers.LonLat(6, 5);
107 t.ok( lonlat.equals(ll), "lonlat is set correctly");
110 function test_LonLat_transform(t) {
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")
124 function test_LonLat_wrapDateLine(t) {
127 var goodLL = new OpenLayers.LonLat(0,0);
128 var testLL, wrappedLL;
131 var maxExtent = null;
133 testLL = goodLL.clone();
134 wrappedLL = testLL.wrapDateLine(maxExtent);
135 t.ok(wrappedLL.equals(goodLL), "wrapping a ll with a bad maxextent does nothing");
139 maxExtent = new OpenLayers.Bounds(-10,-10,10,10);
142 testLL = goodLL.clone();
143 wrappedLL = testLL.wrapDateLine(maxExtent);
144 t.ok(wrappedLL.equals(goodLL), "wrapping a ll within the maxextent does nothing");
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");
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");
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");
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");