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 = 'foo' + 'bar' + 'foobar'; 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 = 'foobar' + 'dudetruite' + '' + ''; 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 = 'foobar' + '' + ''; 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 = '' + 'foobar'; 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 = '' + 'foobar'; 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');