Merge remote-tracking branch 'openlayers/master' into vector-api

This commit is contained in:
Tom Payne
2013-12-13 20:22:06 +01:00
39 changed files with 555 additions and 420 deletions

View File

@@ -212,7 +212,7 @@ describe('ol.layer.Layer', function() {
it('triggers a change event', function() {
var listener = sinon.spy();
layer.on(ol.ObjectEventType.CHANGE, listener);
layer.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
layer.setBrightness(0.5);
expect(listener.calledOnce).to.be(true);
});
@@ -247,7 +247,7 @@ describe('ol.layer.Layer', function() {
it('triggers a change event', function() {
var listener = sinon.spy();
layer.on(ol.ObjectEventType.CHANGE, listener);
layer.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
layer.setContrast(43);
expect(listener.calledOnce).to.be(true);
});
@@ -293,7 +293,7 @@ describe('ol.layer.Layer', function() {
it('triggers a change event', function() {
var listener = sinon.spy();
layer.on(ol.ObjectEventType.CHANGE, listener);
layer.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
layer.setHue(0.5);
expect(listener.calledOnce).to.be(true);
});
@@ -324,7 +324,7 @@ describe('ol.layer.Layer', function() {
it('triggers a change event', function() {
var listener = sinon.spy();
layer.on(ol.ObjectEventType.CHANGE, listener);
layer.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
layer.setOpacity(0.4);
expect(listener.calledOnce).to.be(true);
});
@@ -360,7 +360,7 @@ describe('ol.layer.Layer', function() {
it('triggers a change event', function() {
var listener = sinon.spy();
layer.on(ol.ObjectEventType.CHANGE, listener);
layer.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
layer.setSaturation(42);
expect(listener.calledOnce).to.be(true);
});
@@ -393,7 +393,7 @@ describe('ol.layer.Layer', function() {
it('fires a change event', function() {
var listener = sinon.spy();
layer.on(ol.ObjectEventType.CHANGE, listener);
layer.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
layer.setVisible(false);
expect(listener.callCount).to.be(1);

View File

@@ -63,7 +63,7 @@ describe('ol.layer.Group', function() {
});
describe('change event', function() {
describe('generic change event', function() {
var layer, group, listener;
beforeEach(function() {
@@ -84,14 +84,14 @@ describe('ol.layer.Group', function() {
});
it('is dispatched by the group when layer opacity changes', function() {
group.on(ol.ObjectEventType.CHANGE, listener);
group.on(goog.events.EventType.CHANGE, listener);
layer.setOpacity(0.5);
expect(listener.calledOnce).to.be(true);
});
it('is dispatched by the group when layer visibility changes', function() {
group.on(ol.ObjectEventType.CHANGE, listener);
group.on(goog.events.EventType.CHANGE, listener);
layer.setVisible(false);
expect(listener.callCount).to.be(1);
@@ -102,6 +102,45 @@ describe('ol.layer.Group', function() {
});
describe('property change event', function() {
var layer, group, listener;
beforeEach(function() {
layer = new ol.layer.Layer({
source: new ol.source.Source({
projection: 'EPSG:4326'
})
});
group = new ol.layer.Group({
layers: [layer]
});
listener = sinon.spy();
});
afterEach(function() {
goog.dispose(group);
goog.dispose(layer);
});
it('is dispatched by the group when group opacity changes', function() {
group.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
group.setOpacity(0.5);
expect(listener.calledOnce).to.be(true);
});
it('is dispatched by the group when group visibility changes', function() {
group.on(ol.ObjectEventType.PROPERTYCHANGE, listener);
group.setVisible(false);
expect(listener.callCount).to.be(1);
group.setVisible(true);
expect(listener.callCount).to.be(2);
});
});
describe('constructor (options)', function() {
it('accepts options', function() {
@@ -352,6 +391,7 @@ describe('ol.layer.Group', function() {
});
goog.require('goog.dispose');
goog.require('goog.events.EventType');
goog.require('ol.ObjectEventType');
goog.require('ol.layer.Layer');
goog.require('ol.layer.Group');

View File

@@ -106,7 +106,7 @@ describe('ol.Object', function() {
goog.events.listen(o, 'change:k', listener1);
listener2 = sinon.spy();
goog.events.listen(o, 'change', listener2);
goog.events.listen(o, ol.ObjectEventType.PROPERTYCHANGE, listener2);
var o2 = new ol.Object();
o2.bindTo('k', o);
@@ -121,7 +121,11 @@ describe('ol.Object', function() {
it('dispatches generic change events to bound objects', function() {
o.notify('k');
expect(listener2).to.be.called();
expect(listener2.calledOnce).to.be(true);
var args = listener2.firstCall.args;
expect(args).to.have.length(1);
var event = args[0];
expect(event.getKey()).to.be('k');
});
it('dispatches events to bound objects', function() {
@@ -139,7 +143,7 @@ describe('ol.Object', function() {
goog.events.listen(o, 'change:k', listener1);
listener2 = sinon.spy();
goog.events.listen(o, 'change', listener2);
goog.events.listen(o, ol.ObjectEventType.PROPERTYCHANGE, listener2);
o2 = new ol.Object();
o2.bindTo('k', o);
@@ -157,7 +161,25 @@ describe('ol.Object', function() {
it('dispatches generic change events to object', function() {
o.set('k', 1);
expect(listener2).to.be.called();
expect(listener2.calledOnce).to.be(true);
var args = listener2.firstCall.args;
expect(args).to.have.length(1);
var event = args[0];
expect(event.getKey()).to.be('k');
});
it('dispatches beforechange events to object', function() {
o.set('k', 1);
var oldValue;
var beforeListener = sinon.spy(function(event) {
oldValue = o2.get(event.getKey());
});
o.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener);
o.set('k', 2);
expect(beforeListener.calledOnce).to.be(true);
expect(oldValue).to.be(1);
});
it('dispatches events to bound object', function() {
@@ -175,8 +197,80 @@ describe('ol.Object', function() {
it('dispatches generic change events to object bound to', function() {
o2.set('k', 2);
expect(listener2).to.be.called();
expect(listener2.calledOnce).to.be(true);
var args = listener2.firstCall.args;
expect(args).to.have.length(1);
var event = args[0];
expect(event.getKey()).to.be('k');
});
it('dispatches beforechange before changing bound objects', function() {
o2.set('k', 1);
var oldValue;
var beforeListener = sinon.spy(function(event) {
oldValue = o2.get(event.getKey());
});
o.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener);
o2.set('k', 2);
expect(beforeListener.calledOnce).to.be(true);
var args = beforeListener.firstCall.args;
expect(args).to.have.length(1);
var event = args[0];
expect(event.getKey()).to.be('k');
expect(oldValue).to.be(1);
});
it('relays beforechange events from bound objects', function() {
var target = new ol.Object({
foo: 'original value'
});
var object = new ol.Object();
object.bindTo('foo', target);
var oldValue;
var beforeListener = sinon.spy(function(event) {
oldValue = object.get(event.getKey());
});
object.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener);
target.set('foo', 'new value');
expect(beforeListener.calledOnce).to.be(true);
var args = beforeListener.firstCall.args;
expect(args).to.have.length(1);
var event = args[0];
expect(event.getKey()).to.be('foo');
expect(oldValue).to.be('original value');
expect(object.get('foo')).to.be('new value');
});
it('relays beforechange events when bound with a new key', function() {
var target = new ol.Object({
foo: 'original value'
});
var object = new ol.Object();
object.bindTo('bar', target, 'foo');
var oldValue;
var beforeListener = sinon.spy(function(event) {
oldValue = object.get(event.getKey());
});
object.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener);
target.set('foo', 'new value');
expect(beforeListener.calledOnce).to.be(true);
var args = beforeListener.firstCall.args;
expect(args).to.have.length(1);
var event = args[0];
expect(event.getKey()).to.be('bar');
expect(oldValue).to.be('original value');
expect(object.get('bar')).to.be('new value');
});
});
describe('bind', function() {
@@ -256,6 +350,59 @@ describe('ol.Object', function() {
expect(o.get('k')).to.eql(1);
expect(o2.get('k')).to.eql(2);
});
it('stops relaying beforechange events', function() {
var target = new ol.Object({
foo: 'original value'
});
var object = new ol.Object();
object.bindTo('foo', target);
var listener = sinon.spy();
object.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, listener);
target.set('foo', 'new value');
expect(listener.calledOnce).to.be(true);
var call = listener.firstCall;
expect(call.args).to.have.length(1);
expect(call.args[0].getKey()).to.be('foo');
object.unbind('foo');
target.set('foo', 'another new value');
expect(listener.calledOnce).to.be(true);
expect(object.get('foo')).to.be('new value');
});
it('selectively stops relaying beforechange events', function() {
var target = new ol.Object({
foo: 'original foo',
bar: 'original bar'
});
var object = new ol.Object();
object.bindTo('foo', target);
object.bindTo('bar', target);
var listener = sinon.spy();
object.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, listener);
target.set('foo', 'new foo');
expect(listener.calledOnce).to.be(true);
target.set('bar', 'new bar');
expect(listener.callCount).to.be(2);
object.unbind('foo');
target.set('foo', 'another new foo');
expect(listener.callCount).to.be(2);
target.set('bar', 'another new bar');
expect(listener.callCount).to.be(3);
var lastCall = listener.getCall(2);
expect(lastCall.args).to.have.length(1);
expect(lastCall.args[0].getKey()).to.be('bar');
});
});
describe('unbindAll', function() {
@@ -567,3 +714,4 @@ describe('ol.Object', function() {
goog.require('goog.events');
goog.require('ol.Object');
goog.require('ol.ObjectEventType');