diff --git a/test/spec/ol/events/eventtarget.test.js b/test/spec/ol/events/eventtarget.test.js index af5cbc3add..2d0cd19653 100644 --- a/test/spec/ol/events/eventtarget.test.js +++ b/test/spec/ol/events/eventtarget.test.js @@ -130,6 +130,23 @@ describe('ol.events.EventTarget', function() { expect(called).to.eql([3]); expect(eventTarget.getListeners('foo')).to.have.length(1); }); + it('is safe to do weird things in listeners', function() { + eventTarget.addEventListener('foo', spy2); + eventTarget.addEventListener('foo', function weird(evt) { + eventTarget.removeEventListener('foo', weird); + eventTarget.removeEventListener('foo', spy1); + eventTarget.dispatchEvent('foo'); + eventTarget.removeEventListener('foo', spy2); + eventTarget.dispatchEvent('foo'); + evt.preventDefault(); + }); + eventTarget.addEventListener('foo', spy1); + expect(function() { + eventTarget.dispatchEvent('foo'); + }).not.to.throwException(); + expect(called).to.eql([2, 2]); + expect(eventTarget.getListeners('foo')).to.be(undefined); + }); }); describe('#dispose()', function() {