Make geometries event targets

Previously, the tests were using eql to make assertions about matching geometries.  This is inappropriate for structures with circular references (as with goog.events.EventTarget);
This commit is contained in:
Tim Schaub
2013-09-27 19:10:51 +02:00
parent 626a319222
commit 9b47c15bd8
3 changed files with 85 additions and 9 deletions

View File

@@ -0,0 +1,37 @@
goog.provide('ol.test.geom.Geometry');
describe('ol.geom.Geometry', function() {
describe('constructor', function() {
it('creates a new geometry', function() {
var geom = new ol.geom.Geometry();
expect(geom).to.be.a(ol.geom.Geometry);
expect(geom).to.be.a(goog.events.EventTarget);
});
});
});
describe('ol.geom.GeometryEvent', function() {
describe('constructor', function() {
it('creates a new event', function() {
var point = new ol.geom.Point([1, 2]);
var bounds = point.getBounds();
var evt = new ol.geom.GeometryEvent('change', point, bounds);
expect(evt).to.be.a(ol.geom.GeometryEvent);
expect(evt).to.be.a(goog.events.Event);
expect(evt.target).to.be(point);
expect(evt.oldExtent).to.be(bounds);
});
});
});
goog.require('goog.events.Event');
goog.require('goog.events.EventTarget');
goog.require('ol.geom.Geometry');
goog.require('ol.geom.GeometryEvent');
goog.require('ol.geom.Point');

View File

@@ -73,13 +73,15 @@ describe('ol.parser.GeoJSON', function() {
it('encodes point', function() {
var point = new ol.geom.Point([10, 20]);
var geojson = parser.write(point);
expect(point).to.eql(parser.read(geojson));
expect(point.getCoordinates()).to.eql(
parser.read(geojson).getCoordinates());
});
it('encodes linestring', function() {
var linestring = new ol.geom.LineString([[10, 20], [30, 40]]);
var geojson = parser.write(linestring);
expect(linestring).to.eql(parser.read(geojson));
expect(linestring.getCoordinates()).to.eql(
parser.read(geojson).getCoordinates());
});
it('encodes polygon', function() {
@@ -88,7 +90,8 @@ describe('ol.parser.GeoJSON', function() {
inner2 = [[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]];
var polygon = new ol.geom.Polygon([outer, inner1, inner2]);
var geojson = parser.write(polygon);
expect(polygon).to.eql(parser.read(geojson));
expect(polygon.getCoordinates()).to.eql(
parser.read(geojson).getCoordinates());
});
it('encodes geometry collection', function() {
@@ -97,9 +100,12 @@ describe('ol.parser.GeoJSON', function() {
new ol.geom.LineString([[30, 40], [50, 60]])
]);
var geojson = parser.write(collection);
// surprised to see read return an Array of geometries instead of
// a true ol.geom.GeometryCollection, so compare collection.components
expect(collection.components).to.eql(parser.read(geojson));
var got = parser.read(geojson);
expect(collection.components.length).to.equal(got.length);
for (var i = 0, ii = collection.components.length; i < ii; ++i) {
expect(collection.components[i].getCoordinates()).to.eql(
got[i].getCoordinates());
}
});
it('encodes feature collection', function() {
@@ -107,9 +113,18 @@ describe('ol.parser.GeoJSON', function() {
array = parser.read(str);
var geojson = parser.write(array);
var result = parser.read(geojson);
expect(array.length).to.equal(result.length);
var got, exp, gotAttr, expAttr;
for (var i = 0, ii = array.length; i < ii; ++i) {
expect(array[i].getGeometry()).to.eql(result[i].getGeometry());
expect(array[i].getAttributes()).to.eql(result[i].getAttributes());
got = array[i];
exp = result[i];
expect(got.getGeometry().getCoordinates()).to.eql(
exp.getGeometry().getCoordinates());
gotAttr = got.getAttributes();
delete gotAttr.geometry;
expAttr = exp.getAttributes();
delete expAttr.geometry;
expect(gotAttr).to.eql(expAttr);
}
});