Added remaining tests

This commit is contained in:
Simon Seyock
2016-09-10 22:34:04 +02:00
parent 9f32e8d566
commit b86a12e121
9 changed files with 298 additions and 26 deletions

View File

@@ -163,9 +163,8 @@ ol.style.RegularShape.prototype.clone = function() {
rotateWithView: this.getRotateWithView(),
atlasManager: this.atlasManager_
});
this.setOpacity(this.getOpacity());
this.setScale(this.getScale());
style.setOpacity(this.getOpacity());
style.setScale(this.getScale());
return style;
};
@@ -432,11 +431,12 @@ ol.style.RegularShape.prototype.draw_ = function(renderOptions, context, x, y) {
context.translate(x, y);
context.beginPath();
var points = this.points_;
if (this.radius2_ !== this.radius_) {
this.points_ = 2 * this.points_;
points = 2 * points;
}
for (i = 0; i <= this.points_; i++) {
angle0 = i * 2 * Math.PI / this.points_ - Math.PI / 2 + this.angle_;
for (i = 0; i <= points; i++) {
angle0 = i * 2 * Math.PI / points - Math.PI / 2 + this.angle_;
radiusC = i % 2 === 0 ? this.radius_ : this.radius2_;
context.lineTo(renderOptions.size / 2 + radiusC * Math.cos(angle0),
renderOptions.size / 2 + radiusC * Math.sin(angle0));
@@ -496,12 +496,13 @@ ol.style.RegularShape.prototype.drawHitDetectionCanvas_ = function(renderOptions
context.translate(x, y);
context.beginPath();
var points = this.points_;
if (this.radius2_ !== this.radius_) {
this.points_ = 2 * this.points_;
points = 2 * points;
}
var i, radiusC, angle0;
for (i = 0; i <= this.points_; i++) {
angle0 = i * 2 * Math.PI / this.points_ - Math.PI / 2 + this.angle_;
for (i = 0; i <= points; i++) {
angle0 = i * 2 * Math.PI / points - Math.PI / 2 + this.angle_;
radiusC = i % 2 === 0 ? this.radius_ : this.radius2_;
context.lineTo(renderOptions.size / 2 + radiusC * Math.cos(angle0),
renderOptions.size / 2 + radiusC * Math.sin(angle0));

View File

@@ -84,6 +84,7 @@ ol.style.Style.prototype.clone = function() {
return new ol.style.Style({
geometry: geometry,
fill: this.getFill() ? this.getFill().clone() : undefined,
image: this.getImage() ? this.getImage().clone() : undefined,
stroke: this.getStroke() ? this.getStroke().clone() : undefined,
text: this.getText() ? this.getText().clone() : undefined,
zIndex: this.getZIndex()

View File

@@ -81,11 +81,11 @@ describe('ol.style.Circle', function() {
it('creates a new ol.style.Circle', function() {
var original = new ol.style.Circle();
var clone = original.clone();
expect(clone instanceof ol.style.Circle).to.eql(true);
expect(clone).to.be.an(ol.style.Circle);
expect(clone).to.not.be(original);
});
it('clones all values', function() {
it('copies all values', function() {
var original = new ol.style.Circle({
fill: new ol.style.Fill({
color: '#319FD3'
@@ -99,15 +99,33 @@ describe('ol.style.Circle', function() {
original.setOpacity(0.5);
original.setScale(1.5);
var clone = original.clone();
expect(original.getFill()).to.not.be(clone.getFill());
expect(original.getFill().getColor()).to.eql(clone.getFill().getColor());
expect(original.getOpacity()).to.be(clone.getOpacity());
expect(original.getRadius()).to.be(clone.getRadius());
expect(original.getScale()).to.be(clone.getScale());
expect(original.getSnapToPixel()).to.be(clone.getSnapToPixel());
expect(original.getStroke()).to.not.be(clone.getStroke());
expect(original.getStroke().getColor()).to.eql(clone.getStroke().getColor());
});
it('the clone does not reference the same objects as the original', function() {
var original = new ol.style.Circle({
fill: new ol.style.Fill({
color: '#319FD3'
}),
stroke: new ol.style.Stroke({
color: '#319FD3'
})
});
var 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('#getChecksum', function() {

View File

@@ -9,16 +9,28 @@ describe('ol.style.Fill', function() {
it('creates a new ol.style.Fill', function() {
var original = new ol.style.Fill();
var clone = original.clone();
expect(clone instanceof ol.style.Fill).to.eql(true);
expect(clone).to.be.an(ol.style.Fill);
expect(clone).to.not.be(original);
});
it('clones all values', function() {
it('copies all values', function() {
var original = new ol.style.Fill({
color: '#319FD3'
});
var clone = original.clone();
expect(original.getColor()).to.eql(clone.getColor());
});
it('the clone does not reference the same objects as the original', function() {
var original = new ol.style.Fill({
color: [63, 255, 127, 0.7]
});
var clone = original.clone();
expect(original.getColor()).to.not.be(clone.getColor());
clone.getColor()[2] = 0;
expect(original.getColor()).to.not.eql(clone.getColor());
});
});
});

View File

@@ -45,11 +45,11 @@ describe('ol.style.Icon', function() {
src: src
});
var clone = original.clone();
expect(clone instanceof ol.style.Icon).to.be(true);
expect(clone).to.be.an(ol.style.Icon);
expect(clone).to.not.be(original);
});
it('clones all values ', function() {
it('copies all values ', function() {
var canvas = document.createElement('canvas');
var original = new ol.style.Icon({
anchor: [1, 0],
@@ -70,23 +70,18 @@ describe('ol.style.Icon', function() {
});
var clone = original.clone();
expect(original.getAnchor()).to.not.be(clone.getAnchor());
expect(original.getAnchor()).to.eql(clone.getAnchor());
expect(original.anchorOrigin_).to.be(clone.anchorOrigin_);
expect(original.anchorXUnits_).to.be(clone.anchorXUnits_);
expect(original.anchorYUnits_).to.be(clone.anchorYUnits_);
expect(original.crossOrigin_).to.be(clone.crossOrigin_);
expect(original.color_).to.not.be(clone.color_);
expect(original.color_).to.eql(clone.color_);
expect(original.getImage(1)).not.to.be(clone.getImage(1));
expect(original.getImage(1).src).to.be(clone.getImage(1).src);
expect(original.getImage(1).toDataURL()).to.be(original.getImage(1).toDataURL());
expect(original.offset_).to.not.be(clone.offset_);
expect(original.offset_).to.eql(clone.offset_);
expect(original.offsetOrigin_).to.be(clone.offsetOrigin_);
expect(original.getSize()).not.to.be(clone.getSize());
expect(original.getSize()).to.eql(clone.getSize());
expect(original.getSrc()).to.not.eql(clone.getSrc());
expect(original.getSrc()).not.to.eql(clone.getSrc());
expect(original.getOpacity()).to.be(clone.getOpacity());
expect(original.getRotation()).to.be(clone.getRotation());
expect(original.getRotateWithView()).to.be(clone.getRotateWithView());
@@ -98,6 +93,35 @@ describe('ol.style.Icon', function() {
var clone2 = original2.clone();
expect(original2.getSrc()).to.be(clone2.getSrc());
});
it('the clone does not reference the same objects as the original', function() {
var canvas = document.createElement('canvas');
var original = new ol.style.Icon({
anchor: [1, 0],
color: [1, 2, 3, 0.4],
img: canvas,
imgSize: size,
offset: [1, 2],
size: [10, 12]
});
var clone = original.clone();
expect(original.getAnchor()).not.to.be(clone.getAnchor());
expect(original.getImage(1)).not.to.be(clone.getImage(1));
expect(original.offset_).not.to.be(clone.offset_);
expect(original.color_).not.to.be(clone.color_);
expect(original.getSize()).not.to.be(clone.getSize());
clone.anchor_[0] = 0;
clone.getImage(1).width = 50;
clone.offset_[0] = 0;
clone.color_[0] = 0;
clone.size_[0] = 5;
expect(original.anchor_).not.to.eql(clone.anchor_);
expect(original.getImage(1).width).not.to.eql(clone.getImage(1).width);
expect(original.offset_).not.to.eql(clone.offset_);
expect(original.color_).not.to.eql(clone.color_);
expect(original.size_).not.to.eql(clone.size_);
});
});
describe('#getAnchor', function() {

View File

@@ -119,6 +119,69 @@ describe('ol.style.RegularShape', function() {
});
});
describe('#clone', function() {
it('creates a new ol.style.RegularShape', function() {
var original = new ol.style.RegularShape({
points: 5
});
var clone = original.clone();
expect(clone).to.be.an(ol.style.RegularShape);
expect(clone).to.not.be(original);
});
it('copies all values', function() {
var original = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: '#319FD3'
}),
points: 5,
radius: 4,
radius2: 6,
angle: 1,
snapToPixel: false,
stroke: new ol.style.Stroke({
color: '#319FD3'
}),
rotation: 2,
rotateWithView: true
});
original.setOpacity(0.5);
original.setScale(1.5);
var clone = original.clone();
expect(original.getAngle()).to.eql(clone.getAngle());
expect(original.getFill().getColor()).to.eql(clone.getFill().getColor());
expect(original.getOpacity()).to.eql(clone.getOpacity());
expect(original.getPoints()).to.eql(clone.getPoints());
expect(original.getRadius()).to.eql(clone.getRadius());
expect(original.getRadius2()).to.eql(clone.getRadius2());
expect(original.getRotation()).to.eql(clone.getRotation());
expect(original.getRotateWithView()).to.eql(clone.getRotateWithView());
expect(original.getScale()).to.eql(clone.getScale());
expect(original.getSnapToPixel()).to.eql(clone.getSnapToPixel());
expect(original.getStroke().getColor()).to.eql(clone.getStroke().getColor());
});
it('the clone does not reference the same objects as the original', function() {
var original = new ol.style.RegularShape({
fill: new ol.style.Fill({
color: '#319FD3'
}),
stroke: new ol.style.Stroke({
color: '#319FD3'
})
});
var 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('#getChecksum', function() {

View File

@@ -9,16 +9,16 @@ describe('ol.style.Stroke', function() {
it('creates a new ol.style.Stroke', function() {
var original = new ol.style.Stroke();
var clone = original.clone();
expect(clone instanceof ol.style.Stroke).to.eql(true);
expect(clone).to.be.an(ol.style.Stroke);
expect(clone).to.not.be(original);
});
it('clones all values', function() {
it('copies all values', function() {
var original = new ol.style.Stroke({
color: '#319FD3',
lineCap: 'square',
lineJoin: 'miter',
lineDash: [1,2,3],
lineDash: [1, 2, 3],
miterLimit: 20,
width: 5
});
@@ -31,5 +31,21 @@ describe('ol.style.Stroke', function() {
expect(original.getMiterLimit()).to.be(clone.getMiterLimit());
expect(original.getWidth()).to.be(clone.getWidth());
});
it('the clone does not reference the same objects as the original', function() {
var original = new ol.style.Stroke({
color: [1, 2, 3, 0.4],
lineDash: [1, 2, 3]
});
var clone = original.clone();
expect(original.getColor()).to.not.be(clone.getColor());
expect(original.getLineDash()).to.not.be(clone.getLineDash());
clone.getColor()[0] = 0;
clone.getLineDash()[0] = 0;
expect(original.getColor()).to.not.eql(clone.getColor());
expect(original.getLineDash()).to.not.eql(clone.getLineDash());
});
});
});

View File

@@ -3,10 +3,85 @@ goog.provide('ol.test.style.Style');
goog.require('ol.Feature');
goog.require('ol.geom.Point');
goog.require('ol.style.Style');
goog.require('ol.style.Fill');
goog.require('ol.style.Circle');
goog.require('ol.style.Stroke');
goog.require('ol.style.Text');
describe('ol.style.Style', function() {
describe('#clone', function() {
it('creates a new ol.style.Style', function() {
var original = new ol.style.Style();
var clone = original.clone();
expect(clone).to.be.an(ol.style.Style);
expect(clone).to.not.be(original);
});
it('copies all values', function() {
var original = new ol.style.Style({
geometry: new ol.geom.Point([0,0,0]),
fill: new ol.style.Fill({
color: '#319FD3'
}),
image: new ol.style.Circle({
radius: 5
}),
stroke: new ol.style.Stroke({
color: '#319FD3'
}),
text: new ol.style.Text({
text: 'test'
}),
zIndex: 2
});
var clone = original.clone();
expect(original.getGeometry().getCoordinates()).to.eql(clone.getGeometry().getCoordinates());
expect(original.getFill().getColor()).to.eql(clone.getFill().getColor());
expect(original.getImage().getRadius()).to.eql(clone.getImage().getRadius());
expect(original.getStroke().getColor()).to.eql(clone.getStroke().getColor());
expect(original.getText().getText()).to.eql(clone.getText().getText());
expect(original.getZIndex()).to.eql(clone.getZIndex());
});
it('the clone does not reference the same objects as the original', function() {
var original = new ol.style.Style({
geometry: new ol.geom .Point([0,0,0]),
fill: new ol.style.Fill({
color: '#319FD3'
}),
image: new ol.style.Circle({
radius: 5
}),
stroke: new ol.style.Stroke({
color: '#319FD3'
}),
text: new ol.style.Text({
text: 'test'
})
});
var clone = original.clone();
expect(original.getGeometry()).not.to.be(clone.getGeometry());
expect(original.getFill()).not.to.be(clone.getFill());
expect(original.getImage()).not.to.be(clone.getImage());
expect(original.getStroke()).not.to.be(clone.getStroke());
expect(original.getText()).not.to.be(clone.getText());
clone.getGeometry().setCoordinates([1,1,1]);
clone.getFill().setColor('#012345');
clone.getImage().setScale(2);
clone.getStroke().setColor('#012345');
clone.getText().setText('other');
expect(original.getGeometry().getCoordinates()).not.to.eql(clone.getGeometry().getCoordinates());
expect(original.getFill().getColor()).not.to.eql(clone.getFill().getColor());
expect(original.getImage().getScale()).not.to.eql(clone.getImage().getScale());
expect(original.getStroke().getColor()).not.to.eql(clone.getStroke().getColor());
expect(original.getText().getText()).not.to.eql(clone.getText().getText());
});
});
describe('#setZIndex', function() {
it('sets the zIndex', function() {

View File

@@ -28,4 +28,66 @@ describe('ol.style.Text', function() {
});
describe('#clone', function() {
it('creates a new ol.style.Text', function() {
var original = new ol.style.Text();
var clone = original.clone();
expect(clone).to.be.an(ol.style.Text);
expect(clone).to.not.be(original);
});
it('copies all values', function() {
var original = new ol.style.Text({
font: '12px serif',
offsetX: 4,
offsetY: 10,
scale: 2,
rotateWithView: true,
rotation: 1.5,
text: 'test',
textAlign: 'center',
textBaseline: 'top',
fill: new ol.style.Fill({
color: '#319FD3'
}),
stroke: new ol.style.Stroke({
color: '#319FD3'
})
});
var clone = original.clone();
expect(original.getFont()).to.eql(clone.getFont());
expect(original.getOffsetX()).to.be(clone.getOffsetX());
expect(original.getOffsetY()).to.be(clone.getOffsetY());
expect(original.getScale()).to.be(clone.getScale());
expect(original.getRotateWithView()).to.be(clone.getRotateWithView());
expect(original.getRotation()).to.be(clone.getRotation());
expect(original.getText()).to.be(clone.getText());
expect(original.getTextAlign()).to.be(clone.getTextAlign());
expect(original.getTextBaseline()).to.be(clone.getTextBaseline());
expect(original.getStroke().getColor()).to.eql(clone.getStroke().getColor());
expect(original.getFill().getColor()).to.eql(clone.getFill().getColor());
});
it('the clone does not reference the same objects as the original', function() {
var original = new ol.style.Text({
fill: new ol.style.Fill({
color: '#319FD3'
}),
stroke: new ol.style.Stroke({
color: '#319FD3'
})
});
var 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());
});
});
});