mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
emitter tests
This commit is contained in:
parent
8b24a33b17
commit
33046fff47
2 changed files with 96 additions and 0 deletions
94
test/tests/Emitter.js
Normal file
94
test/tests/Emitter.js
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
* Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
|
||||||
|
* http://paperjs.org/
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011 - 2014, Juerg Lehni & Jonathan Puckey
|
||||||
|
* http://scratchdisk.com/ & http://jonathanpuckey.com/
|
||||||
|
*
|
||||||
|
* Distributed under the MIT license. See LICENSE file for details.
|
||||||
|
*
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module('Emitter');
|
||||||
|
|
||||||
|
function emitterFactory() {
|
||||||
|
var emitter = {};
|
||||||
|
paper.Base.each(Emitter, function (f, k) {emitter[k] = f});
|
||||||
|
return emitter;
|
||||||
|
}
|
||||||
|
|
||||||
|
test('on()', function() {
|
||||||
|
var emitter = emitterFactory(),
|
||||||
|
installed;
|
||||||
|
// fake event type registration
|
||||||
|
emitter._eventTypes = {mouseMove: {install: function(){ installed = true;} } };
|
||||||
|
equals(function() {
|
||||||
|
return !emitter.responds('mouseMove');
|
||||||
|
}, true);
|
||||||
|
emitter.on('mouseMove', function() {});
|
||||||
|
equals(function() {
|
||||||
|
return emitter.responds('mouseMove')
|
||||||
|
}, true);
|
||||||
|
equals(function() { return installed; }, true);
|
||||||
|
// one time installation only
|
||||||
|
installed = false;
|
||||||
|
emitter.on('mouseMove', function() {});
|
||||||
|
equals(function() { return !installed; }, true);
|
||||||
|
|
||||||
|
emitter.on('customUnregistered', function() {});
|
||||||
|
equals(function() {
|
||||||
|
return emitter.responds('customUnregistered')
|
||||||
|
}, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('off()', function() {
|
||||||
|
var emitter = emitterFactory(),
|
||||||
|
uninstalled, called = 0,
|
||||||
|
handler = function () {called++},
|
||||||
|
handler2 = function () {};
|
||||||
|
emitter._eventTypes = {mouseMove: {uninstall: function(){ uninstalled = true;} } };
|
||||||
|
|
||||||
|
emitter.on('mouseMove', handler);
|
||||||
|
emitter.on('mouseMove', handler2);
|
||||||
|
emitter.on('custom', handler);
|
||||||
|
emitter.emit('mouseMove');
|
||||||
|
equals(function() { return called == 1; }, true);
|
||||||
|
|
||||||
|
emitter.off('mouseMove', handler2);
|
||||||
|
emitter.emit('mouseMove');
|
||||||
|
equals(function() { return called == 2; }, true);
|
||||||
|
equals(function() { return !uninstalled }, true);
|
||||||
|
|
||||||
|
emitter.off('mouseMove', handler);
|
||||||
|
emitter.emit('mouseMove');
|
||||||
|
equals(function() { return called == 2; }, true);
|
||||||
|
equals(function() { return uninstalled }, true);
|
||||||
|
|
||||||
|
called = 0;
|
||||||
|
emitter.emit('custom');
|
||||||
|
equals(function() { return called == 1; }, true);
|
||||||
|
emitter.off('custom', handler);
|
||||||
|
emitter.emit('custom');
|
||||||
|
equals(function() { return called == 1; }, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('emit()', function() {
|
||||||
|
var emitter = emitterFactory(),
|
||||||
|
called,
|
||||||
|
handler = function (e) {called = e};
|
||||||
|
// fake event type registration
|
||||||
|
emitter._eventTypes = {mouseMove: {} };
|
||||||
|
emitter.on('mouseMove', handler);
|
||||||
|
emitter.on('custom', handler);
|
||||||
|
|
||||||
|
emitter.emit('mouseMove', 'mouseMove');
|
||||||
|
equals(function() {
|
||||||
|
return called == 'mouseMove';
|
||||||
|
}, true);
|
||||||
|
|
||||||
|
emitter.emit('custom', 'custom');
|
||||||
|
equals(function() {
|
||||||
|
return called == 'custom';
|
||||||
|
}, true);
|
||||||
|
});
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
/*#*/ include('Color.js');
|
/*#*/ include('Color.js');
|
||||||
|
|
||||||
|
/*#*/ include('Emitter.js');
|
||||||
|
|
||||||
/*#*/ include('Project.js');
|
/*#*/ include('Project.js');
|
||||||
|
|
||||||
/*#*/ include('Item.js');
|
/*#*/ include('Item.js');
|
||||||
|
|
Loading…
Reference in a new issue