Move vector code out of the way
This commit is contained in:
@@ -1,183 +0,0 @@
|
||||
goog.provide('ol.test.geom.Polygon');
|
||||
|
||||
describe('ol.geom.Polygon', function() {
|
||||
|
||||
var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]],
|
||||
inner1 = [[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]],
|
||||
inner2 = [[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]];
|
||||
|
||||
describe('constructor', function() {
|
||||
|
||||
it('creates a polygon from an array', function() {
|
||||
var poly = new ol.geom.Polygon([outer, inner1, inner2]);
|
||||
expect(poly).to.be.a(ol.geom.Polygon);
|
||||
expect(poly).to.be.a(ol.geom.Geometry);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('#getRings()', function() {
|
||||
|
||||
it('returns an array of LinearRing', function() {
|
||||
var poly = new ol.geom.Polygon([outer, inner1, inner2]);
|
||||
var rings = poly.getRings();
|
||||
expect(rings.length).to.be(3);
|
||||
expect(rings[0]).to.be.a(ol.geom.LinearRing);
|
||||
expect(rings[1]).to.be.a(ol.geom.LinearRing);
|
||||
expect(rings[2]).to.be.a(ol.geom.LinearRing);
|
||||
});
|
||||
|
||||
var isClockwise = ol.geom.LinearRing.isClockwise;
|
||||
|
||||
it('forces exterior ring to be clockwise', function() {
|
||||
var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]];
|
||||
expect(isClockwise(outer)).to.be(false);
|
||||
|
||||
var poly = new ol.geom.Polygon([outer]);
|
||||
var ring = poly.getRings()[0];
|
||||
expect(isClockwise(ring.getCoordinates())).to.be(true);
|
||||
});
|
||||
|
||||
it('forces interior ring to be counter-clockwise', function() {
|
||||
var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]];
|
||||
var inner = [[2, 2], [2, 8], [8, 8], [8, 2], [2, 2]];
|
||||
expect(isClockwise(inner)).to.be(true);
|
||||
|
||||
var poly = new ol.geom.Polygon([outer, inner]);
|
||||
var ring = poly.getRings()[1];
|
||||
expect(isClockwise(ring.getCoordinates())).to.be(false);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
describe('#getBounds()', function() {
|
||||
|
||||
it('returns the bounding extent', function() {
|
||||
var poly = new ol.geom.Polygon([outer, inner1, inner2]);
|
||||
var bounds = poly.getBounds();
|
||||
expect(bounds[0]).to.be(0);
|
||||
expect(bounds[2]).to.be(10);
|
||||
expect(bounds[1]).to.be(0);
|
||||
expect(bounds[3]).to.be(10);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('#getCoordinates()', function() {
|
||||
|
||||
it('returns an array', function() {
|
||||
var poly = new ol.geom.Polygon([outer, inner1, inner2]);
|
||||
expect(poly.getCoordinates()).to.eql([outer, inner1, inner2]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('#transform()', function() {
|
||||
|
||||
var forward = ol.proj.getTransform('EPSG:4326', 'EPSG:3857');
|
||||
var inverse = ol.proj.getTransform('EPSG:3857', 'EPSG:4326');
|
||||
|
||||
var gg, sm;
|
||||
beforeEach(function() {
|
||||
gg = [
|
||||
[[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]],
|
||||
[[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]],
|
||||
[[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]]
|
||||
];
|
||||
|
||||
sm = [[
|
||||
[0, 0], [0, 1118890], [1113195, 1118890], [1113195, 0], [0, 0]
|
||||
], [
|
||||
[111319, 111325], [222639, 111325], [222639, 222684],
|
||||
[111319, 222684], [111319, 111325]
|
||||
], [
|
||||
[890556, 893464], [1001875, 893464], [1001875, 1006021],
|
||||
[890556, 1006021], [890556, 893464]
|
||||
]];
|
||||
|
||||
});
|
||||
|
||||
it('forward transforms a polygon in place', function() {
|
||||
|
||||
var poly = new ol.geom.Polygon(gg);
|
||||
poly.transform(forward);
|
||||
var coordinates = poly.getCoordinates();
|
||||
var ring;
|
||||
for (var i = 0, ii = coordinates.length; i < ii; ++i) {
|
||||
var ring = coordinates[i];
|
||||
for (var j = 0, jj = ring.length; j < jj; ++j) {
|
||||
expect(ring[j][0]).to.roughlyEqual(sm[i][j][0], 1);
|
||||
expect(ring[j][1]).to.roughlyEqual(sm[i][j][1], 1);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
it('inverse transforms a polygon in place', function() {
|
||||
|
||||
var poly = new ol.geom.Polygon(sm);
|
||||
poly.transform(inverse);
|
||||
var coordinates = poly.getCoordinates();
|
||||
var ring;
|
||||
for (var i = 0, ii = coordinates.length; i < ii; ++i) {
|
||||
var ring = coordinates[i];
|
||||
for (var j = 0, jj = ring.length; j < jj; ++j) {
|
||||
expect(ring[j][0]).to.roughlyEqual(gg[i][j][0], 0.001);
|
||||
expect(ring[j][1]).to.roughlyEqual(gg[i][j][1], 0.001);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('change event', function() {
|
||||
|
||||
var outer, inner;
|
||||
beforeEach(function() {
|
||||
outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]];
|
||||
inner = [[2, 2], [2, 8], [8, 8], [8, 2], [2, 2]];
|
||||
});
|
||||
|
||||
it('is fired when outer ring is modified', function(done) {
|
||||
var poly = new ol.geom.Polygon([outer, inner]);
|
||||
var rings = poly.getRings();
|
||||
var bounds = poly.getBounds();
|
||||
goog.events.listen(poly, 'change', function(evt) {
|
||||
expect(evt.target).to.be(poly);
|
||||
expect(evt.oldExtent).to.eql(bounds);
|
||||
expect(evt.target.getBounds()).to.eql([0, 0, 11, 10]);
|
||||
done();
|
||||
});
|
||||
|
||||
var outerCoords = rings[0].getCoordinates();
|
||||
outerCoords[1][0] = 11;
|
||||
rings[0].setCoordinates(outerCoords);
|
||||
});
|
||||
|
||||
it('is fired when inner ring is modified', function(done) {
|
||||
var poly = new ol.geom.Polygon([outer, inner]);
|
||||
var rings = poly.getRings();
|
||||
var bounds = poly.getBounds();
|
||||
goog.events.listen(poly, 'change', function(evt) {
|
||||
expect(evt.target).to.be(poly);
|
||||
expect(evt.oldExtent).to.eql(bounds);
|
||||
expect(evt.target.getBounds()).to.eql([0, 0, 10, 10]);
|
||||
done();
|
||||
});
|
||||
|
||||
var innerCoords = rings[1].getCoordinates();
|
||||
innerCoords[1][0] = 3;
|
||||
rings[1].setCoordinates(innerCoords);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
goog.require('goog.events');
|
||||
goog.require('ol.geom.Geometry');
|
||||
goog.require('ol.geom.LinearRing');
|
||||
goog.require('ol.geom.Polygon');
|
||||
goog.require('ol.proj');
|
||||
Reference in New Issue
Block a user