This removes geometry specific change events. Since geometries are mere observables, we only get generic change events. To minimize changes in other places, as a workaround, we cache geometry bounds on features. This is not the way things should be long term, but the objective is to remove the geometry specific event.
92 lines
2.5 KiB
JavaScript
92 lines
2.5 KiB
JavaScript
goog.provide('ol.test.geom.Point');
|
|
|
|
describe('ol.geom.Point', function() {
|
|
|
|
describe('constructor', function() {
|
|
|
|
it('creates a point from an array', function() {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
expect(point).to.be.a(ol.geom.Point);
|
|
expect(point).to.be.a(ol.geom.Geometry);
|
|
});
|
|
|
|
});
|
|
|
|
describe('#getBounds()', function() {
|
|
|
|
it('returns the bounding extent', function() {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
var bounds = point.getBounds();
|
|
expect(bounds[0]).to.be(10);
|
|
expect(bounds[2]).to.be(10);
|
|
expect(bounds[1]).to.be(20);
|
|
expect(bounds[3]).to.be(20);
|
|
});
|
|
|
|
});
|
|
|
|
describe('#getCoordinates()', function() {
|
|
|
|
it('returns an array', function() {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
expect(point.getCoordinates()).to.eql([10, 20]);
|
|
});
|
|
|
|
});
|
|
|
|
describe('#setCoordinates()', function() {
|
|
|
|
it('updates the coordinates', function() {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
point.setCoordinates([30, 40]);
|
|
expect(point.getCoordinates()).to.eql([30, 40]);
|
|
});
|
|
|
|
it('invalidates bounds', function() {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
point.setCoordinates([30, 40]);
|
|
expect(point.getBounds()).to.eql([30, 40, 30, 40]);
|
|
});
|
|
|
|
it('triggers a change event', function(done) {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
expect(point.getBounds()).to.eql([10, 20, 10, 20]);
|
|
goog.events.listen(point, 'change', function(evt) {
|
|
expect(evt.target).to.equal(point);
|
|
expect(evt.target.getBounds()).to.eql([30, 40, 30, 40]);
|
|
expect(evt.target.getCoordinates()).to.eql([30, 40]);
|
|
done();
|
|
});
|
|
point.setCoordinates([30, 40]);
|
|
});
|
|
|
|
});
|
|
|
|
describe('#transform()', function() {
|
|
|
|
var forward = ol.proj.getTransform('EPSG:4326', 'EPSG:3857');
|
|
var inverse = ol.proj.getTransform('EPSG:3857', 'EPSG:4326');
|
|
|
|
it('forward transforms a point in place', function() {
|
|
var point = new ol.geom.Point([10, 20]);
|
|
point.transform(forward);
|
|
expect(point.get(0)).to.roughlyEqual(1113195, 1);
|
|
expect(point.get(1)).to.roughlyEqual(2273031, 1);
|
|
});
|
|
|
|
it('inverse transforms a point in place', function() {
|
|
var point = new ol.geom.Point([1113195, 2273031]);
|
|
point.transform(inverse);
|
|
expect(point.get(0)).to.roughlyEqual(10, 0.001);
|
|
expect(point.get(1)).to.roughlyEqual(20, 0.001);
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
goog.require('goog.events');
|
|
goog.require('ol.geom.Geometry');
|
|
goog.require('ol.geom.Point');
|
|
goog.require('ol.proj');
|