Add more tests fr ol.renderer.vector
This commit is contained in:
@@ -3,37 +3,40 @@ goog.provide('ol.test.renderer.vector');
|
||||
describe('ol.renderer.vector', function() {
|
||||
describe('#renderFeature', function() {
|
||||
var replayGroup;
|
||||
var feature, iconStyle, style, squaredTolerance, listener, listenerThis;
|
||||
var iconStyleLoadSpy;
|
||||
|
||||
beforeEach(function() {
|
||||
replayGroup = new ol.render.canvas.ReplayGroup(1);
|
||||
feature = new ol.Feature();
|
||||
iconStyle = new ol.style.Icon({
|
||||
src: 'http://example.com/icon.png'
|
||||
});
|
||||
style = new ol.style.Style({
|
||||
image: iconStyle,
|
||||
fill: new ol.style.Fill({}),
|
||||
stroke: new ol.style.Stroke({})
|
||||
});
|
||||
squaredTolerance = 1;
|
||||
listener = function() {};
|
||||
listenerThis = {};
|
||||
iconStyleLoadSpy = sinon.stub(iconStyle, 'load', function() {
|
||||
iconStyle.iconImage_.imageState_ = ol.style.ImageState.LOADING;
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
iconStyleLoadSpy.restore();
|
||||
});
|
||||
|
||||
describe('call multiple times', function() {
|
||||
|
||||
it('does not set multiple listeners', function() {
|
||||
var iconStyle = new ol.style.Icon({
|
||||
src: 'http://example.com/icon.png'
|
||||
});
|
||||
|
||||
var iconImage = iconStyle.iconImage_;
|
||||
|
||||
var iconStyleLoadSpy = sinon.stub(iconStyle, 'load', function() {
|
||||
iconImage.imageState_ = ol.style.ImageState.LOADING;
|
||||
});
|
||||
|
||||
var style = new ol.style.Style({
|
||||
image: iconStyle
|
||||
});
|
||||
|
||||
var feature = new ol.Feature();
|
||||
|
||||
var listener = function() {};
|
||||
var listenerThis = {};
|
||||
var listeners;
|
||||
|
||||
// call #1
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, 1, listener, listenerThis);
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
|
||||
expect(iconStyleLoadSpy.calledOnce).to.be.ok();
|
||||
listeners = goog.events.getListeners(
|
||||
@@ -42,7 +45,7 @@ describe('ol.renderer.vector', function() {
|
||||
|
||||
// call #2
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, 1, listener, listenerThis);
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
|
||||
expect(iconStyleLoadSpy.calledOnce).to.be.ok();
|
||||
listeners = goog.events.getListeners(
|
||||
@@ -52,14 +55,119 @@ describe('ol.renderer.vector', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('call renderFeature with a loading icon', function() {
|
||||
|
||||
it('does not render the point', function() {
|
||||
feature.setGeometry(new ol.geom.Point([0, 0]));
|
||||
var imageReplay = replayGroup.getReplay(
|
||||
style.getZIndex(), ol.render.ReplayType.IMAGE);
|
||||
var setImageStyleSpy = sinon.spy(imageReplay, 'setImageStyle');
|
||||
var drawPointGeometrySpy = sinon.stub(imageReplay,
|
||||
'drawPointGeometry', goog.nullFunction);
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
expect(setImageStyleSpy.called).to.be(false);
|
||||
setImageStyleSpy.restore();
|
||||
drawPointGeometrySpy.restore();
|
||||
});
|
||||
|
||||
it('does not render the multipoint', function() {
|
||||
feature.setGeometry(new ol.geom.MultiPoint([[0, 0], [1, 1]]));
|
||||
var imageReplay = replayGroup.getReplay(
|
||||
style.getZIndex(), ol.render.ReplayType.IMAGE);
|
||||
var setImageStyleSpy = sinon.spy(imageReplay, 'setImageStyle');
|
||||
var drawMultiPointGeometrySpy = sinon.stub(imageReplay,
|
||||
'drawMultiPointGeometry', goog.nullFunction);
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
expect(setImageStyleSpy.called).to.be(false);
|
||||
setImageStyleSpy.restore();
|
||||
drawMultiPointGeometrySpy.restore();
|
||||
});
|
||||
|
||||
it('does render the linestring', function() {
|
||||
feature.setGeometry(new ol.geom.LineString([[0, 0], [1, 1]]));
|
||||
var lineStringReplay = replayGroup.getReplay(
|
||||
style.getZIndex(), ol.render.ReplayType.LINE_STRING);
|
||||
var setFillStrokeStyleSpy = sinon.spy(lineStringReplay,
|
||||
'setFillStrokeStyle');
|
||||
var drawLineStringGeometrySpy = sinon.stub(lineStringReplay,
|
||||
'drawLineStringGeometry', goog.nullFunction);
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
expect(setFillStrokeStyleSpy.called).to.be(true);
|
||||
expect(drawLineStringGeometrySpy.called).to.be(true);
|
||||
setFillStrokeStyleSpy.restore();
|
||||
drawLineStringGeometrySpy.restore();
|
||||
});
|
||||
|
||||
it('does render the multilinestring', function() {
|
||||
feature.setGeometry(new ol.geom.MultiLineString([[[0, 0], [1, 1]]]));
|
||||
var lineStringReplay = replayGroup.getReplay(
|
||||
style.getZIndex(), ol.render.ReplayType.LINE_STRING);
|
||||
var setFillStrokeStyleSpy = sinon.spy(lineStringReplay,
|
||||
'setFillStrokeStyle');
|
||||
var drawMultiLineStringGeometrySpy = sinon.stub(lineStringReplay,
|
||||
'drawMultiLineStringGeometry', goog.nullFunction);
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
expect(setFillStrokeStyleSpy.called).to.be(true);
|
||||
expect(drawMultiLineStringGeometrySpy.called).to.be(true);
|
||||
setFillStrokeStyleSpy.restore();
|
||||
drawMultiLineStringGeometrySpy.restore();
|
||||
});
|
||||
|
||||
it('does render the polygon', function() {
|
||||
feature.setGeometry(new ol.geom.Polygon(
|
||||
[[[0, 0], [1, 1], [1, 0], [0, 0]]]));
|
||||
var polygonReplay = replayGroup.getReplay(
|
||||
style.getZIndex(), ol.render.ReplayType.POLYGON);
|
||||
var setFillStrokeStyleSpy = sinon.spy(polygonReplay,
|
||||
'setFillStrokeStyle');
|
||||
var drawPolygonGeometrySpy = sinon.stub(polygonReplay,
|
||||
'drawPolygonGeometry', goog.nullFunction);
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
expect(setFillStrokeStyleSpy.called).to.be(true);
|
||||
expect(drawPolygonGeometrySpy.called).to.be(true);
|
||||
setFillStrokeStyleSpy.restore();
|
||||
drawPolygonGeometrySpy.restore();
|
||||
});
|
||||
|
||||
it('does render the multipolygon', function() {
|
||||
feature.setGeometry(new ol.geom.MultiPolygon(
|
||||
[[[[0, 0], [1, 1], [1, 0], [0, 0]]]]));
|
||||
var polygonReplay = replayGroup.getReplay(
|
||||
style.getZIndex(), ol.render.ReplayType.POLYGON);
|
||||
var setFillStrokeStyleSpy = sinon.spy(polygonReplay,
|
||||
'setFillStrokeStyle');
|
||||
var drawMultiPolygonGeometrySpy = sinon.stub(polygonReplay,
|
||||
'drawMultiPolygonGeometry', goog.nullFunction);
|
||||
ol.renderer.vector.renderFeature(replayGroup, feature,
|
||||
style, squaredTolerance, listener, listenerThis);
|
||||
expect(setFillStrokeStyleSpy.called).to.be(true);
|
||||
expect(drawMultiPolygonGeometrySpy.called).to.be(true);
|
||||
setFillStrokeStyleSpy.restore();
|
||||
drawMultiPolygonGeometrySpy.restore();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('ol.geom.LineString');
|
||||
goog.require('ol.geom.Point');
|
||||
goog.require('ol.geom.Polygon');
|
||||
goog.require('ol.geom.MultiLineString');
|
||||
goog.require('ol.geom.MultiPoint');
|
||||
goog.require('ol.geom.MultiPolygon');
|
||||
goog.require('ol.render.canvas.ReplayGroup');
|
||||
goog.require('ol.renderer.vector');
|
||||
goog.require('ol.style.Fill');
|
||||
goog.require('ol.style.Icon');
|
||||
goog.require('ol.style.ImageState');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
goog.require('ol.Feature');
|
||||
|
||||
Reference in New Issue
Block a user