Files
openlayers/test/spec/ol/style/circle.test.js
2018-12-14 13:00:35 +01:00

108 lines
3.6 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]);
// hit-detection image is created, because no 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 (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 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);
});
});
});