Files
openlayers/old/test/spec/ol/parser/gpx.test.js
Éric Lemoine 35d5158454 Merge remote-tracking branch 'upstream/master' into vector-api
Conflicts:
	src/objectliterals.jsdoc
	src/ol/attribution.js
	src/ol/geom/geometry.js
	src/ol/geom/geometrycollection.js
	src/ol/geom/linestring.js
	src/ol/layer/vectorlayer.exports
	src/ol/layer/vectorlayer.js
	src/ol/map.js
	src/ol/proj/proj.js
	src/ol/renderer/canvas/canvasvectorlayerrenderer.js
	src/ol/source/imagewmssource.js
	src/ol/source/tilewmssource.js
	src/ol/source/vectorsource.exports
	src/ol/source/vectorsource.js
	src/ol/source/wmssource.js
	src/ol/style/style.js
	src/ol/tilegrid/tilegrid.js
	src/ol/tilegrid/wmtstilegrid.js
	src/ol/tilegrid/xyztilegrid.js
2013-12-13 12:53:57 +01:00

131 lines
6.6 KiB
JavaScript

goog.provide('ol.test.parser.gpx');
describe('ol.parser.gpx', function() {
var parser = new ol.parser.GPX();
describe('Test GPX parser', function() {
it('Read works correctly', function(done) {
var url = 'spec/ol/parser/gpx/data.xml';
afterLoadXml(url, function(xml) {
var obj = parser.read(xml);
expect(obj.features.length).to.eql(3);
// waypoint feature
var feature = obj.features[0];
var geom = feature.getGeometry();
expect(geom.getType()).to.eql(ol.geom.GeometryType.POINT);
expect(geom.getCoordinates()).to.eql([-0.1853562259, 51.3697845627]);
// route feature
feature = obj.features[1];
geom = feature.getGeometry();
var attributes = feature.getAttributes();
expect(geom.getType()).to.eql(ol.geom.GeometryType.LINE_STRING);
expect(geom.getCoordinates()).to.eql([[-0.1829991904, 51.3761803674],
[-0.1758887005, 51.3697894659], [-0.1833202965, 51.3639790884],
[-0.1751119509, 51.3567607069]]);
expect(attributes['name']).to.eql('Route8');
expect(attributes['type']).to.eql('Route');
// track feature
feature = obj.features[2];
geom = feature.getGeometry();
attributes = feature.getAttributes();
expect(geom.getType()).to.eql(ol.geom.GeometryType.LINE_STRING);
expect(geom.getCoordinates()).to.eql([[-0.1721292044, 51.3768216433],
[-0.1649230916, 51.370833767], [-0.1736741378, 51.3644368725],
[-0.166259525, 51.3576354272]]);
expect(attributes['name']).to.eql('Track');
expect(attributes['type']).to.eql('Track');
done();
});
});
it('Write works correctly for points', function() {
var feature1 = new ol.Feature({name: 'foo', description: 'bar'});
feature1.setGeometry(new ol.geom.Point([-111.04, 45.68]));
var feature2 = new ol.Feature({name: 'foo', description: 'bar'});
feature2.setGeometry(new ol.geom.Point([-112.04, 45.68]));
var output = parser.write({features: [feature1, feature2]});
var expected = '<gpx xmlns="http://www.topografix.com/GPX/1/1" ' +
'version="1.1" creator="OpenLayers" xsi:schemaLocation="' +
'http://www.topografix.com/GPX/1/1 http://www.topografix.com/' +
'GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/' +
'XMLSchema-instance"><wpt lon="-111.04" lat="45.68"><name>foo' +
'</name><desc>bar</desc></wpt><wpt lon="-112.04" lat="45.68">' +
'<name>foo</name><desc>bar</desc></wpt></gpx>';
expect(goog.dom.xml.loadXml(expected)).to.xmleql(
goog.dom.xml.loadXml(output));
});
it('Write works correctly for lines', function() {
var feature1 = new ol.Feature({name: 'foo', description: 'bar'});
feature1.setGeometry(new ol.geom.LineString([[-111.04, 45.68],
[-112.04, 45.68]]));
var feature2 = new ol.Feature({name: 'dude', description: 'truite'});
feature2.setGeometry(new ol.geom.LineString([[1, 2], [3, 4]]));
var output = parser.write({features: [feature1, feature2]});
var expected = '<gpx xmlns="http://www.topografix.com/GPX/1/1" ' +
'version="1.1" creator="OpenLayers" xsi:schemaLocation="' +
'http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/' +
'1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/' +
'XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg>' +
'<trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="' +
'45.68"/></trkseg></trk><trk><name>dude</name><desc>truite</desc>' +
'<trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg>' +
'</trk></gpx>';
expect(goog.dom.xml.loadXml(expected)).to.xmleql(
goog.dom.xml.loadXml(output));
});
it('Write works correctly for multilines', function() {
var multi = new ol.geom.MultiLineString([[[-111.04, 45.68],
[-112.04, 45.68]], [[1, 2], [3, 4]]]);
var feature = new ol.Feature({name: 'foo', description: 'bar'});
feature.setGeometry(multi);
var output = parser.write({features: [feature]});
var expected = '<gpx xmlns="http://www.topografix.com/GPX/1/1" ' +
'version="1.1" creator="OpenLayers" xsi:schemaLocation="' +
'http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/' +
'1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-' +
'instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt' +
' lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/>' +
'</trkseg><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/>' +
'</trkseg></trk></gpx>';
expect(goog.dom.xml.loadXml(expected)).to.xmleql(
goog.dom.xml.loadXml(output));
});
it('Write works correctly for polygon', function() {
var polygon = new ol.geom.Polygon([[[-111.04, 45.68],
[-112.04, 45.68], [-111.04, 45.68]]]);
var feature = new ol.Feature({name: 'foo', description: 'bar'});
feature.setGeometry(polygon);
var output = parser.write({features: [feature]});
var expected = '<gpx xmlns="http://www.topografix.com/GPX/1/1"' +
' version="1.1" creator="OpenLayers" xsi:schemaLocation="http://' +
'www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/' +
'gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
'<trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04"' +
' lat="45.68"/><trkpt lon="-112.04" lat="45.68"/><trkpt lon="' +
'-111.04" lat="45.68"/></trkseg></trk></gpx>';
expect(goog.dom.xml.loadXml(expected)).to.xmleql(
goog.dom.xml.loadXml(output));
});
it('Write works correctly for metadata', function() {
var output = parser.write({features: [], metadata: {'name': 'foo',
'desc': 'bar'}});
var expected = '<gpx xmlns="http://www.topografix.com/GPX/1/1" ' +
'version="1.1" creator="OpenLayers" xsi:schemaLocation="http://' +
'www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/' +
'gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
'<metadata><name>foo</name><desc>bar</desc></metadata></gpx>';
expect(goog.dom.xml.loadXml(expected)).to.xmleql(
goog.dom.xml.loadXml(output));
});
});
});
goog.require('ol.geom.GeometryType');
goog.require('goog.dom.xml');
goog.require('ol.Feature');
goog.require('ol.geom.Point');
goog.require('ol.geom.LineString');
goog.require('ol.geom.MultiLineString');
goog.require('ol.geom.Polygon');
goog.require('ol.parser.GPX');