Added versioned GML Parser, on behalf of mr. tschaub. review=ahocevar. (Pullup #1639)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@8007 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
euzuro
2008-09-12 15:16:13 +00:00
parent 44ac8154c7
commit 7a5b401604
11 changed files with 2478 additions and 67 deletions

222
tests/Format/GML/cases.js Normal file
View File

@@ -0,0 +1,222 @@
var xml = new OpenLayers.Format.XML();
function readXML(file) {
return xml.read(document.getElementById(file).firstChild.nodeValue);
}
var cases = {
"v2/point-coord.xml": new OpenLayers.Geometry.Point(1, 2),
"v2/point-coordinates.xml": new OpenLayers.Geometry.Point(1, 2),
"v2/linestring-coord.xml": new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(3, 4)
]),
"v2/linestring-coordinates.xml": new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(3, 4)
]),
"v2/linearring-coord.xml": new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(1, 2)
]),
"v2/linearring-coordinates.xml": new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(1, 2)
]),
"v2/polygon-coord.xml": 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),
new OpenLayers.Geometry.Point(1, 2)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(4, 5),
new OpenLayers.Geometry.Point(6, 7),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(7, 8),
new OpenLayers.Geometry.Point(3, 4)
])
]),
"v2/polygon-coordinates.xml": 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),
new OpenLayers.Geometry.Point(1, 2)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(4, 5),
new OpenLayers.Geometry.Point(6, 7),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(7, 8),
new OpenLayers.Geometry.Point(3, 4)
])
]),
"v2/multipoint-coord.xml": new OpenLayers.Geometry.MultiPoint([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(3, 4)
]),
"v2/multipoint-coordinates.xml": new OpenLayers.Geometry.MultiPoint([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(3, 4)
]),
"v2/multilinestring-coord.xml": new OpenLayers.Geometry.MultiLineString([
new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(4, 5)
])
]),
"v2/multilinestring-coordinates.xml": new OpenLayers.Geometry.MultiLineString([
new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(4, 5)
])
]),
"v2/multipolygon-coord.xml": new OpenLayers.Geometry.MultiPolygon([
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),
new OpenLayers.Geometry.Point(1, 2)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(4, 5),
new OpenLayers.Geometry.Point(6, 7),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(7, 8),
new OpenLayers.Geometry.Point(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),
new OpenLayers.Geometry.Point(1, 2)
])
])
]),
"v2/multipolygon-coordinates.xml": new OpenLayers.Geometry.MultiPolygon([
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),
new OpenLayers.Geometry.Point(1, 2)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(4, 5),
new OpenLayers.Geometry.Point(6, 7),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(7, 8),
new OpenLayers.Geometry.Point(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),
new OpenLayers.Geometry.Point(1, 2)
])
])
]),
"v2/geometrycollection-coordinates.xml": new OpenLayers.Geometry.Collection([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.LineString([
new OpenLayers.Geometry.Point(1, 2),
new OpenLayers.Geometry.Point(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),
new OpenLayers.Geometry.Point(1, 2)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(2, 3),
new OpenLayers.Geometry.Point(4, 5),
new OpenLayers.Geometry.Point(6, 7),
new OpenLayers.Geometry.Point(2, 3)
]),
new OpenLayers.Geometry.LinearRing([
new OpenLayers.Geometry.Point(3, 4),
new OpenLayers.Geometry.Point(5, 6),
new OpenLayers.Geometry.Point(7, 8),
new OpenLayers.Geometry.Point(3, 4)
])
])
]),
"v2/box-coord.xml": new OpenLayers.Bounds(1, 2, 3, 4),
"v2/box-coordinates.xml": new OpenLayers.Bounds(1, 2, 3, 4)
};
// cases for v3 use the same geometries
OpenLayers.Util.extend(cases, {
"v3/point.xml": cases["v2/point-coordinates.xml"],
"v3/linestring.xml": cases["v2/linestring-coordinates.xml"],
"v3/polygon.xml": cases["v2/polygon-coordinates.xml"],
"v3/multipoint-singular.xml": cases["v2/multipoint-coordinates.xml"],
"v3/multipoint-plural.xml": cases["v2/multipoint-coordinates.xml"],
"v3/multilinestring-singular.xml": cases["v2/multilinestring-coordinates.xml"],
"v3/multilinestring-plural.xml": cases["v2/multilinestring-coordinates.xml"],
"v3/multipolygon-singular.xml": cases["v2/multipolygon-coordinates.xml"],
"v3/multipolygon-plural.xml": cases["v2/multipolygon-coordinates.xml"],
"v3/multisurface-singular.xml": cases["v2/multipolygon-coordinates.xml"],
"v3/multisurface-plural.xml": cases["v2/multipolygon-coordinates.xml"],
"v3/envelope.xml": cases["v2/box-coordinates.xml"]
});

605
tests/Format/GML/v2.html Normal file

File diff suppressed because one or more lines are too long

551
tests/Format/GML/v3.html Normal file

File diff suppressed because one or more lines are too long

View File

@@ -291,35 +291,39 @@
t.ok(found === false, "returns false for bad attribute");
}
function test_getNamespacePrefix(t) {
t.plan(6);
function test_namespaces(t) {
t.plan(2);
// test that getNamespacePrefix returns null with no ns defined
var format = new OpenLayers.Format.XML();
var got = format.getNamespacePrefix("http://example.com/foo");
t.eq(got, null, "returns null when no namespaces are defined");
var format = new OpenLayers.Format.XML({
namespaces: {
"def": "http://example.com/default",
"foo": "http://example.com/foo",
"bar": "http://example.com/bar"
},
defaultPrefix: "def"
});
format.defaultPrefix = "def";
format.namespaces = {
"def": "http://example.com/default",
"foo": "http://example.com/foo",
"bar": "http://example.com/bar"
};
// test that prototype has not been altered
t.eq(OpenLayers.Format.XML.prototype.namespaces, null,
"setting namespaces at construction does not modify prototype");
var cases = [
{uri: null, expect: "def"},
{uri: "http://example.com/default", expect: "def"},
{uri: "http://example.com/foo", expect: "foo"},
{uri: "http://example.com/bar", expect: "bar"},
{uri: "http://example.com/nothing", expect: null}
];
// test that namespaceAlias has been set
t.eq(format.namespaceAlias["http://example.com/foo"], "foo",
"namespaceAlias mapping has been set");
var test;
for(var i=0; i<cases.length; ++i) {
test = cases[i];
t.eq(format.getNamespacePrefix(test.uri), test.expect,
"uri: " + test.uri + " works");
}
}
function test_setNamespace(t) {
t.plan(3);
var format = new OpenLayers.Format.XML();
// test that namespaces is an object
t.ok(format.namespaces instanceof Object, "empty namespace object set");
format.setNamespace("foo", "http://example.com/foo");
t.eq(format.namespaces["foo"], "http://example.com/foo", "alias -> uri mapping set");
t.eq(format.namespaceAlias["http://example.com/foo"], "foo", "uri -> alias mapping set");
}

View File

@@ -43,6 +43,8 @@
<li>Format/GeoJSON.html</li>
<li>Format/GeoRSS.html</li>
<li>Format/GML.html</li>
<li>Format/GML/v2.html</li>
<li>Format/GML/v3.html</li>
<li>Format/GPX.html</li>
<li>Format/JSON.html</li>
<li>Format/KML.html</li>