Change hit detection test to reflect fix for #9395 CircleStyle inconsistency Update ol/style/Circle and ol/style/RegularShapen tests Revise test for no fill Add test for transparent fill Update Upgrade notes Changes to hit detection with unfilled styles
126 lines
4.4 KiB
JavaScript
126 lines
4.4 KiB
JavaScript
import CircleStyle from '../../../../src/ol/style/Circle.js';
|
|
import Fill from '../../../../src/ol/style/Fill.js';
|
|
import Stroke from '../../../../src/ol/style/Stroke.js';
|
|
|
|
|
|
describe('ol.style.Circle', function() {
|
|
|
|
describe('#constructor', function() {
|
|
|
|
it('creates a canvas (no fill-style)', function() {
|
|
const style = new CircleStyle({radius: 10});
|
|
expect(style.getImage()).to.be.an(HTMLCanvasElement);
|
|
expect(style.getSize()).to.eql([21, 21]);
|
|
expect(style.getImageSize()).to.eql([21, 21]);
|
|
expect(style.getOrigin()).to.eql([0, 0]);
|
|
expect(style.getAnchor()).to.eql([10.5, 10.5]);
|
|
// no hit-detection image is created, because no fill style is set
|
|
expect(style.getImage()).to.be(style.getHitDetectionImage());
|
|
expect(style.getHitDetectionImage()).to.be.an(HTMLCanvasElement);
|
|
expect(style.getHitDetectionImageSize()).to.eql([21, 21]);
|
|
});
|
|
|
|
it('creates a canvas (transparent fill-style)', function() {
|
|
const style = new CircleStyle({
|
|
radius: 10,
|
|
fill: new Fill({
|
|
color: 'transparent'
|
|
})
|
|
});
|
|
expect(style.getImage()).to.be.an(HTMLCanvasElement);
|
|
expect(style.getSize()).to.eql([21, 21]);
|
|
expect(style.getImageSize()).to.eql([21, 21]);
|
|
expect(style.getOrigin()).to.eql([0, 0]);
|
|
expect(style.getAnchor()).to.eql([10.5, 10.5]);
|
|
// hit-detection image is created, because transparent fill style is set
|
|
expect(style.getImage()).to.not.be(style.getHitDetectionImage());
|
|
expect(style.getHitDetectionImage()).to.be.an(HTMLCanvasElement);
|
|
expect(style.getHitDetectionImageSize()).to.eql([21, 21]);
|
|
});
|
|
|
|
it('creates a canvas (non-transparent fill-style)', function() {
|
|
const style = new CircleStyle({
|
|
radius: 10,
|
|
fill: new Fill({
|
|
color: '#FFFF00'
|
|
})
|
|
});
|
|
expect(style.getImage()).to.be.an(HTMLCanvasElement);
|
|
expect(style.getSize()).to.eql([21, 21]);
|
|
expect(style.getImageSize()).to.eql([21, 21]);
|
|
expect(style.getOrigin()).to.eql([0, 0]);
|
|
expect(style.getAnchor()).to.eql([10.5, 10.5]);
|
|
// no hit-detection image is created, because non-transparent fill style is set
|
|
expect(style.getImage()).to.be(style.getHitDetectionImage());
|
|
expect(style.getHitDetectionImage()).to.be.an(HTMLCanvasElement);
|
|
expect(style.getHitDetectionImageSize()).to.eql([21, 21]);
|
|
});
|
|
|
|
});
|
|
|
|
describe('#clone', function() {
|
|
|
|
it('creates a new ol.style.Circle', function() {
|
|
const original = new CircleStyle();
|
|
const clone = original.clone();
|
|
expect(clone).to.be.an(CircleStyle);
|
|
expect(clone).to.not.be(original);
|
|
});
|
|
|
|
it('copies all values', function() {
|
|
const original = new CircleStyle({
|
|
fill: new Fill({
|
|
color: '#319FD3'
|
|
}),
|
|
stroke: new Stroke({
|
|
color: '#319FD3'
|
|
}),
|
|
radius: 5
|
|
});
|
|
original.setOpacity(0.5);
|
|
original.setScale(1.5);
|
|
const clone = original.clone();
|
|
expect(original.getFill().getColor()).to.eql(clone.getFill().getColor());
|
|
expect(original.getOpacity()).to.eql(clone.getOpacity());
|
|
expect(original.getRadius()).to.eql(clone.getRadius());
|
|
expect(original.getScale()).to.eql(clone.getScale());
|
|
expect(original.getStroke().getColor()).to.eql(clone.getStroke().getColor());
|
|
});
|
|
|
|
it('the clone does not reference the same objects as the original', function() {
|
|
const original = new CircleStyle({
|
|
fill: new Fill({
|
|
color: '#319FD3'
|
|
}),
|
|
stroke: new Stroke({
|
|
color: '#319FD3'
|
|
})
|
|
});
|
|
const clone = original.clone();
|
|
expect(original.getFill()).to.not.be(clone.getFill());
|
|
expect(original.getStroke()).to.not.be(clone.getStroke());
|
|
|
|
clone.getFill().setColor('#012345');
|
|
clone.getStroke().setColor('#012345');
|
|
expect(original.getFill().getColor()).to.not.eql(clone.getFill().getColor());
|
|
expect(original.getStroke().getColor()).to.not.eql(clone.getStroke().getColor());
|
|
});
|
|
|
|
});
|
|
|
|
describe('#setRadius', function() {
|
|
it('changes the circle radius', function() {
|
|
const style = new CircleStyle({
|
|
radius: 10,
|
|
fill: new Fill({
|
|
color: '#FFFF00'
|
|
})
|
|
});
|
|
expect(style.getRadius()).to.eql(10);
|
|
style.setRadius(20);
|
|
expect(style.getRadius()).to.eql(20);
|
|
});
|
|
});
|
|
|
|
});
|