Add dedicated tests for appendCoordinates
This commit is contained in:
committed by
Olivier Guyot
parent
bc79d59811
commit
0b3bd0721e
@@ -1399,4 +1399,129 @@ describe('ol.interaction.Draw', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('append coordinates when drawing a Polygon feature', function() {
|
||||||
|
let draw;
|
||||||
|
let coordinates;
|
||||||
|
let coordinates2;
|
||||||
|
|
||||||
|
beforeEach(function() {
|
||||||
|
draw = new Draw({
|
||||||
|
source: source,
|
||||||
|
type: 'Polygon'
|
||||||
|
});
|
||||||
|
map.addInteraction(draw);
|
||||||
|
coordinates = [[0, 0], [1, 1], [2, 0], [0, 3], [3, 2], [4, 4]];
|
||||||
|
coordinates2 = [[10, 10], [11, 11], [12, 10], [10, 13], [13, 12], [14, 14]];
|
||||||
|
});
|
||||||
|
|
||||||
|
function isClosed(polygon) {
|
||||||
|
const first = polygon.getFirstCoordinate();
|
||||||
|
const last = polygon.getLastCoordinate();
|
||||||
|
expect(first).to.eql(last);
|
||||||
|
}
|
||||||
|
|
||||||
|
it('draws polygon with clicks, adds coordinates to drawing, finishing on first point', function() {
|
||||||
|
// first point
|
||||||
|
simulateEvent('pointermove', 10, 20);
|
||||||
|
simulateEvent('pointerdown', 10, 20);
|
||||||
|
simulateEvent('pointerup', 10, 20);
|
||||||
|
isClosed(draw.sketchFeature_.getGeometry());
|
||||||
|
|
||||||
|
// add coordinates
|
||||||
|
draw.appendCoordinates(coordinates);
|
||||||
|
|
||||||
|
// finish on first point
|
||||||
|
simulateEvent('pointermove', 10, 20);
|
||||||
|
simulateEvent('pointerdown', 10, 20);
|
||||||
|
simulateEvent('pointerup', 10, 20);
|
||||||
|
|
||||||
|
const features = source.getFeatures();
|
||||||
|
expect(features).to.have.length(1);
|
||||||
|
const geometry = features[0].getGeometry();
|
||||||
|
expect(geometry).to.be.a(Polygon);
|
||||||
|
|
||||||
|
expect(geometry.getCoordinates()).to.eql([
|
||||||
|
[[10, -20], [0, 0], [1, 1], [2, 0], [0, 3], [3, 2], [4, 4], [10, -20]]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('adds coordinates to empty drawing', function() {
|
||||||
|
// first point
|
||||||
|
simulateEvent('pointermove', 0, 0);
|
||||||
|
simulateEvent('pointerdown', 0, 0);
|
||||||
|
simulateEvent('pointerup', 0, 0);
|
||||||
|
draw.removeLastPoint();
|
||||||
|
draw.appendCoordinates(coordinates);
|
||||||
|
isClosed(draw.sketchFeature_.getGeometry());
|
||||||
|
|
||||||
|
// finish drawing
|
||||||
|
simulateEvent('pointerdown', 0, 0);
|
||||||
|
simulateEvent('pointerup', 0, 0);
|
||||||
|
|
||||||
|
const features = source.getFeatures();
|
||||||
|
expect(features).to.have.length(1);
|
||||||
|
const geometry = features[0].getGeometry();
|
||||||
|
expect(geometry).to.be.a(Polygon);
|
||||||
|
|
||||||
|
expect(geometry.getCoordinates()).to.eql([
|
||||||
|
[[0, 0], [1, 1], [2, 0], [0, 3], [3, 2], [4, 4], [0, 0]]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('keeps updating the sketch feature after appending coordinates', function() {
|
||||||
|
// first point
|
||||||
|
simulateEvent('pointermove', 10, 20);
|
||||||
|
simulateEvent('pointerdown', 10, 20);
|
||||||
|
simulateEvent('pointerup', 10, 20);
|
||||||
|
isClosed(draw.sketchFeature_.getGeometry());
|
||||||
|
|
||||||
|
// add coordinates
|
||||||
|
draw.appendCoordinates(coordinates);
|
||||||
|
|
||||||
|
// add another point
|
||||||
|
simulateEvent('pointermove', 30, 20);
|
||||||
|
simulateEvent('pointerdown', 30, 20);
|
||||||
|
simulateEvent('pointerup', 30, 20);
|
||||||
|
|
||||||
|
// sketchGeom should have a complete ring, with a double coordinate for cursor
|
||||||
|
const sketchGeom = draw.sketchFeature_.getGeometry();
|
||||||
|
expect(sketchGeom.getCoordinates()).to.eql([
|
||||||
|
[[10, -20], [0, 0], [1, 1], [2, 0], [0, 3], [3, 2], [4, 4], [30, -20], [30, -20], [10, -20]]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('keeps updating the sketch feature after multiple appendiges', function() {
|
||||||
|
// first point
|
||||||
|
simulateEvent('pointermove', 10, 20);
|
||||||
|
simulateEvent('pointerdown', 10, 20);
|
||||||
|
simulateEvent('pointerup', 10, 20);
|
||||||
|
isClosed(draw.sketchFeature_.getGeometry());
|
||||||
|
|
||||||
|
// add coordinates
|
||||||
|
draw.appendCoordinates(coordinates);
|
||||||
|
|
||||||
|
// another point
|
||||||
|
simulateEvent('pointermove', 100, 100);
|
||||||
|
simulateEvent('pointerdown', 100, 100);
|
||||||
|
simulateEvent('pointerup', 100, 100);
|
||||||
|
|
||||||
|
// add another array of coordinates
|
||||||
|
draw.appendCoordinates(coordinates2);
|
||||||
|
|
||||||
|
// finish on first point
|
||||||
|
simulateEvent('pointermove', 10, 20);
|
||||||
|
simulateEvent('pointerdown', 10, 20);
|
||||||
|
simulateEvent('pointerup', 10, 20);
|
||||||
|
|
||||||
|
const features = source.getFeatures();
|
||||||
|
expect(features).to.have.length(1);
|
||||||
|
const geometry = features[0].getGeometry();
|
||||||
|
expect(geometry).to.be.a(Polygon);
|
||||||
|
|
||||||
|
expect(geometry.getCoordinates()).to.eql([
|
||||||
|
[[10, -20], [0, 0], [1, 1], [2, 0], [0, 3], [3, 2], [4, 4], [100, -100], [10, 10], [11, 11], [12, 10], [10, 13], [13, 12], [14, 14], [10, -20]]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user