diff --git a/tests/Format/test_GML.html b/tests/Format/test_GML.html index 74c8f00e1b..db6361d7ed 100644 --- a/tests/Format/test_GML.html +++ b/tests/Format/test_GML.html @@ -30,7 +30,6 @@ ' southFlorida ' + ''; - function test_Format_GML_constructor(t) { t.plan(4); @@ -41,14 +40,17 @@ t.eq(format.foo, "bar", "constructor sets options correctly"); t.eq(typeof format.read, "function", "format has a read function"); t.eq(typeof format.write, "function", "format has a write function"); - } + } + function test_Format_GML_getFid(t) { t.plan(2); + var parser = new OpenLayers.Format.GML(); data = parser.read(test_content); t.eq(data[0].fid, '221', 'fid on polygons set correctly (with whitespace)'); t.eq(data[1].fid, '8', 'fid on linestrings set correctly with whitespace'); } + function test_Format_GML_no_clobber(t) { t.plan(1); var parser = new OpenLayers.Format.GML(); diff --git a/tests/Format/test_GeoJSON.html b/tests/Format/test_GeoJSON.html index b3d4217812..68693048c9 100644 --- a/tests/Format/test_GeoJSON.html +++ b/tests/Format/test_GeoJSON.html @@ -9,7 +9,6 @@ var multiple_features = '{"type": "FeatureCollection", "members": [{"geometry": {"type": "Point", "coordinates": [-91.0546875, 43.9453125]}, "type": "Feature", "id": 577, "properties": {"strokeColor": "red", "title": "Feature 2", "image": "foo.gif", "author": "Your Name Here"}}, {"geometry": {"type": "LineString", "coordinates": [[91.40625, -1.40625], [116.015625, -42.890625], [153.28125, -28.125], [108.984375, 11.25], [75.234375, 8.4375], [76.640625, 9.140625], [67.5, -36.5625], [67.5, -35.859375]]}, "type": "Feature", "id": 576, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [139.5703125, 57.48046875]}, "type": "Feature", "id": 575, "properties": {"strokeColor": "blue", "title": "Feature 7", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [107.2265625, 82.44140625]}, "type": "Feature", "id": 574, "properties": {"strokeColor": "blue", "title": "Feature 6", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [94.21875, 72.94921875]}, "type": "Feature", "id": 573, "properties": {"strokeColor": "blue", "title": "Feature 5", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [116.3671875, 61.69921875]}, "type": "Feature", "id": 572, "properties": {"strokeColor": "blue", "title": "Feature 4", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [145.8984375, 73.65234375]}, "type": "Feature", "id": 571, "properties": {"strokeColor": "blue", "title": "Feature 3", "author": "Your Name Here"}}, {"geometry": {"type": "Polygon", "coordinates": [[[32.34375, 52.20703125], [87.1875, 70.13671875], [122.6953125, 37.44140625], [75.234375, 42.36328125], [40.078125, 42.36328125], [28.828125, 48.33984375], [18.6328125, 56.77734375], [23.203125, 65.56640625], [32.34375, 52.20703125]]]}, "type": "Feature", "id": 570, "properties": {"strokeColor": "blue", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [62.578125, -53.4375]}, "type": "Feature", "id": 569, "properties": {"strokeColor": "red", "title": "Feature 3", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [121.640625, 16.875]}, "type": "Feature", "id": 568, "properties": {"strokeColor": "red", "title": "Feature 6", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [135.703125, 8.4375]}, "type": "Feature", "id": 567, "properties": {"strokeColor": "red", "title": "Feature 4", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [137.109375, 48.515625]}, "type": "Feature", "id": 566, "properties": {"strokeColor": "red", "title": "Feature 274", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 565, "properties": {}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 564, "properties": {}}, {"geometry": {"type": "Point", "coordinates": [0, 5]}, "type": "Feature", "id": 563, "properties": {}}, {"geometry": {"type": "Polygon", "coordinates": [[[-131.484375, -5.9765625], [-112.5, -58.0078125], [-32.34375, -50.2734375], [-114.609375, 52.3828125], [-167.34375, -35.5078125], [-146.953125, -57.3046875], [-139.921875, -34.1015625], [-131.484375, -5.9765625]]]}, "type": "Feature", "id": 562, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [48.8671875, -15.8203125]}, "type": "Feature", "id": 560, "properties": {"strokeColor": "red", "title": "Feature 2", "author": "Your Name Here"}}, {"geometry": {"type": "LineString", "coordinates": [[-27.0703125, 59.4140625], [-77.6953125, 20.7421875], [30.5859375, -36.2109375], [67.1484375, 34.8046875]]}, "type": "Feature", "id": 559, "properties": {"strokeColor": "red", "title": "Feature 1", "author": "Your Name Here"}}, {"geometry": {"type": "Point", "coordinates": [12.65625, 16.5234375]}, "type": "Feature", "id": 558, "properties": {"styleUrl": "#allstyle", "title": "Feature 1", "strokeColor": "red", "author": "Your Name Here"}}]}'; var parser = new OpenLayers.Format.GeoJSON(); - function test_Format_GeoJSON_constructor(t) { t.plan(4); @@ -20,10 +19,11 @@ t.eq(format.foo, "bar", "constructor sets options correctly"); t.eq(typeof format.read, "function", "format has a read function"); t.eq(typeof format.write, "function", "format has a write function"); - } - + } + function test_Format_GeoJSON_valid_type(t) { t.plan(13); + OpenLayers.Console.error = function(error) { window.global_error = error; } var types = ["Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", "Box"]; for (var i = 0; i < types.length; i++) { @@ -35,27 +35,32 @@ t.ok(parser.isValidType({'type':"GeometryCollection"}, "GeometryCollection"), "Geometry Collection type is valid"); t.ok(!parser.isValidType({'type':"GeometryCollection2"}, "GeometryCollection"), "Geometry Collection 2 type is invalid"); t.eq(global_error, "Cannot convert types from GeometryCollection2 to GeometryCollection", "error message set correctly for bad geometrycollection type"); - } + } function test_Format_GeoJSON_point(t) { t.plan(3); + data = parser.read(point_feature); t.eq(data[0].fid, 573, "Fid is correct on point feature"); t.eq(data[0].geometry.x, 94.21875, 'Reading point feature gives correct x'); data = parser.read(point_feature, "Feature"); t.eq(data.fid, 573, 'Reading point feature with type gives feature instead of array of features '); - } + } + function test_Format_GeoJSON_line(t) { t.plan(5); + data = parser.read(line_feature); t.eq(data[0].fid, 559, "Fid is correct on line feature"); t.eq(data[0].geometry.components.length, 4, 'Reading line feature gives correct length'); t.eq(data[0].geometry.CLASS_NAME, 'OpenLayers.Geometry.LineString', 'Reading line feature gives correct class'); t.eq(data[0].geometry.components[0].x, -27.0703125, 'Reading line feature gives correct x'); t.eq(data[0].geometry.components[0].y, 59.4140625, 'Reading line feature gives correct y'); - } + } + function test_Format_GeoJSON_poly(t) { t.plan(2); + data = parser.read(poly_content); t.eq(data[0].fid, 562, "poly id is correct") t.eq(data[0].geometry.components[0].components.length, 8, @@ -64,6 +69,7 @@ function test_Format_GeoJSON_multipoint(t) { t.plan(5); + var multipoint = { "type": "MultiPoint", "coordinates": [ @@ -79,23 +85,25 @@ t.eq(data.components[1].y, 1, "y of second component is right"); } - function test_Format_GeoJSON_multiline(t) { t.plan(3); + var multiline = { "type": "MultiLineString", "coordinates": [ [ [100.0, 0.0], [101.0, 1.0] ], [ [102.0, 2.0], [103.0, 3.0] ] ] - } + }; data = parser.read(multiline, "Geometry"); t.eq(data.CLASS_NAME, "OpenLayers.Geometry.MultiLineString", "Correct class retrieved") t.eq(data.components[0].components[0].CLASS_NAME, "OpenLayers.Geometry.Point", "correct type of components") t.eq(data.components[0].CLASS_NAME, "OpenLayers.Geometry.LineString", "correct type of components") } + function test_Format_GeoJSON_multipol(t) { t.plan(2); + var multipol = { "type": "MultiPolygon", "coordinates": [ @@ -107,15 +115,16 @@ [ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ] ] ] - } + }; OpenLayers.Console.error = function(error) { window.global_error = error; } data = parser.read(multipol, "Geometry"); t.eq(data.CLASS_NAME, "OpenLayers.Geometry.MultiPolygon", "Correct class retrieved") t.eq(data.components[1].components[0].components[0].CLASS_NAME, "OpenLayers.Geometry.Point", "correct type of components") - } - + } + function test_Format_GeoJSON_box(t) { t.plan(6); + var box = { "type": "Box", "coordinates": [[100.0, 0.0], [101.0, 1.0]] @@ -128,14 +137,12 @@ t.eq(poly.components[0].components[3].y, 1, "y of upper left is correct"); var box = parser.write(poly ); t.ok(box.search("Polygon") != -1 , "Serializes back to polygon"); - } - - + } - // This test is from the geom_collection example on geojson spec. function test_Format_GeoJSON_geom_collection(t) { t.plan(7); + var geomcol = { "type": "GeometryCollection", "members": [ @@ -150,7 +157,7 @@ ] } ] - } + }; data = parser.read(geomcol, "GeometryCollection"); t.eq(data[0].CLASS_NAME, "OpenLayers.Geometry.Point", "First geom in geom collection is point type"); @@ -162,11 +169,11 @@ t.eq(data[1].components.length, 2, "linestring is correct length"); t.eq(data[1].components[1].x, 102, "linestring is correct x end"); t.eq(data[1].components[1].y, 1, "linestring is correct y end"); - } - + function test_Format_GeoJSON_multipleFeatures(t) { t.plan(2); + var feats = parser.read(multiple_features); t.eq(feats.length, 19, "parsing a feature collection returns the correct number of features."); var types = {'Point':0, 'LineString':0, 'Polygon':0} @@ -176,43 +183,70 @@ } t.eq(types, {'Point':15, 'Polygon': 2, 'LineString':2}, "Correct number of each type"); } - + function test_Format_GeoJSON_write(t) { t.plan(10); - var line_object = {"type": "FeatureCollection", - "members": [{"geometry": - {"type": "LineString", - "coordinates": [[-27.0703125, 59.4140625], - [-77.6953125, 20.7421875], - [30.5859375, -36.2109375], - [67.1484375, 34.8046875]]}, - "type": "Feature", - "id": 559, - "properties": - { - "strokeColor": "red", - "title": "Feature 1", - "author": "Your Name Here"}}]}; + + var line_object = { + "type": "FeatureCollection", + "members": [ + { + "geometry": { + "type": "LineString", + "coordinates": [ + [-27.0703125, 59.4140625], + [-77.6953125, 20.7421875], + [30.5859375, -36.2109375], + [67.1484375, 34.8046875] + ] + }, + "type": "Feature", + "id": 559, + "properties": { + "strokeColor": "red", + "title": "Feature 1", + "author": "Your Name Here" + } + } + ] + }; data = parser.read(line_object); out = parser.write(data); serialized = '{"type":"FeatureCollection","members":[{"type":"Feature","id":559,"properties":{"strokeColor":"red","title":"Feature 1","author":"Your Name Here"},"geometry":{"type":"LineString","coordinates":[[-27.0703125,59.4140625],[-77.6953125,20.7421875],[30.5859375,-36.2109375],[67.1484375,34.8046875]]}}]}'; t.eq(out, serialized, "input and output on line collections are the same"); var serialize_tests = [ - [new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2)), - '{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]}}'], - [new OpenLayers.Geometry.Point(1,2), - '{"type":"Point","coordinates":[1,2]}'], - [new OpenLayers.Geometry.MultiPoint([new OpenLayers.Geometry.Point(1,2)]), - '{"type":"MultiPoint","coordinates":[[1,2]]}'], - [new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(1,2), new OpenLayers.Geometry.Point(3,4)]), - '{"type":"LineString","coordinates":[[1,2],[3,4]]}'], - [new OpenLayers.Geometry.Polygon([ - new OpenLayers.Geometry.LinearRing([ - new OpenLayers.Geometry.Point(1,2), - new OpenLayers.Geometry.Point(3,4), - new OpenLayers.Geometry.Point(5,6)])]), - '{"type":"Polygon","coordinates":[[[1,2],[3,4],[5,6],[1,2]]]}'] + [ + new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2)), + '{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]}}' + ], + [ + new OpenLayers.Geometry.Point(1,2), + '{"type":"Point","coordinates":[1,2]}' + ], + [ + new OpenLayers.Geometry.MultiPoint([ + new OpenLayers.Geometry.Point(1,2) + ]), + '{"type":"MultiPoint","coordinates":[[1,2]]}' + ], + [ + new OpenLayers.Geometry.LineString([ + new OpenLayers.Geometry.Point(1,2), + new OpenLayers.Geometry.Point(3,4) + ]), + '{"type":"LineString","coordinates":[[1,2],[3,4]]}' + ], + [ + new OpenLayers.Geometry.Polygon([ + new OpenLayers.Geometry.LinearRing([ + new OpenLayers.Geometry.Point(1,2), + new OpenLayers.Geometry.Point(3,4), + new OpenLayers.Geometry.Point(5,6) + ]) + ]), + '{"type":"Polygon","coordinates":[[[1,2],[3,4],[5,6],[1,2]]]}' + ] ]; serialize_tests[0][0].fid = 0; multiline = new OpenLayers.Geometry.MultiLineString([serialize_tests[3][0], serialize_tests[3][0]]); @@ -227,31 +261,41 @@ test_out = parser.write(input); t.eq(test_out, output, "Serializing " + input.toString() + " saved correctly."); } - } - - + } + function test_Format_GeoJSON_read_object(t) { t.plan(1); - var line_object = {"type": "FeatureCollection", - "members": [{"geometry": - {"type": "LineString", - "coordinates": [[-27.0703125, 59.4140625], - [-77.6953125, 20.7421875], - [30.5859375, -36.2109375], - [67.1484375, 34.8046875]]}, - "type": "Feature", - "id": 559, - "properties": - { - "strokeColor": "red", - "title": "Feature 1", - "author": "Your Name Here"}}]}; + + var line_object = { + "type": "FeatureCollection", + "members": [ + { + "geometry": { + "type": "LineString", + "coordinates": [ + [-27.0703125, 59.4140625], + [-77.6953125, 20.7421875], + [30.5859375, -36.2109375], + [67.1484375, 34.8046875] + ] + }, + "type": "Feature", + "id": 559, + "properties": { + "strokeColor": "red", + "title": "Feature 1", + "author": "Your Name Here" + } + } + ] + }; data = parser.read(line_object); t.eq(data[0].fid, 559, "Can read data from an object correctly."); - } + } function test_Format_GeoJSON_read_attributes(t) { t.plan(3); + var parser = new OpenLayers.Format.GeoJSON(); data = parser.read(line_feature); t.eq(data[0].attributes['strokeColor'], 'red', 'read strokeColor attribute properly'); @@ -259,7 +303,6 @@ t.eq(data[0].attributes['author'], 'Your Name Here', 'read author attribute properly'); } - diff --git a/tests/Format/test_GeoRSS.html b/tests/Format/test_GeoRSS.html index faac8995e3..53379a69e6 100644 --- a/tests/Format/test_GeoRSS.html +++ b/tests/Format/test_GeoRSS.html @@ -3,8 +3,6 @@ diff --git a/tests/Format/test_XML.html b/tests/Format/test_XML.html index ba847ae0a1..e22ffe6b81 100644 --- a/tests/Format/test_XML.html +++ b/tests/Format/test_XML.html @@ -2,6 +2,7 @@ diff --git a/tests/test_Format.html b/tests/test_Format.html index 12f9686fe2..8e98c9979b 100644 --- a/tests/test_Format.html +++ b/tests/test_Format.html @@ -2,6 +2,7 @@