diff --git a/test/unit/core/EventDispatcher.js b/test/unit/core/EventDispatcher.js new file mode 100644 index 0000000000000000000000000000000000000000..1d9250c3a7cdac8c1709b606834e5ee4978deaa0 --- /dev/null +++ b/test/unit/core/EventDispatcher.js @@ -0,0 +1,88 @@ +/** + * @author simonThiele / https://github.com/simonThiele + */ + +module( "EventDispatcher" ); + +test( "apply", function() { + var innocentObject = {}; + var eventDispatcher = new THREE.EventDispatcher(); + + eventDispatcher.apply( innocentObject ); + + ok( innocentObject.addEventListener !== undefined && + innocentObject.hasEventListener !== undefined && + innocentObject.removeEventListener !== undefined && + innocentObject.dispatchEvent !== undefined, "events where added to object" ); +}); + +test( "addEventListener", function() { + var eventDispatcher = new THREE.EventDispatcher(); + + var listener = {}; + eventDispatcher.addEventListener( 'anyType', listener ); + + ok( eventDispatcher._listeners.anyType.length === 1, "listener with unknown type was added" ); + ok( eventDispatcher._listeners.anyType[0] === listener, "listener with unknown type was added" ); + + eventDispatcher.addEventListener( 'anyType', listener ); + + ok( eventDispatcher._listeners.anyType.length === 1, "can't add one listener twice to same type" ); + ok( eventDispatcher._listeners.anyType[0] === listener, "listener is still there" ); +}); + +test( "hasEventListener", function() { + var eventDispatcher = new THREE.EventDispatcher(); + + var listener = {}; + eventDispatcher.addEventListener( 'anyType', listener ); + + ok( eventDispatcher.hasEventListener( 'anyType', listener ), "listener was found" ); + ok( !eventDispatcher.hasEventListener( 'anotherType', listener ), "listener was not found which is good" ); +}); + +test( "removeEventListener", function() { + var eventDispatcher = new THREE.EventDispatcher(); + + var listener = {}; + + ok ( eventDispatcher._listeners === undefined, "there are no listeners by default" ); + + eventDispatcher.addEventListener( 'anyType', listener ); + ok ( Object.keys( eventDispatcher._listeners ).length === 1 && + eventDispatcher._listeners.anyType.length === 1, "if a listener was added, there is a new key" ); + + eventDispatcher.removeEventListener( 'anyType', listener ); + ok ( eventDispatcher._listeners.anyType.length === 0, "listener was deleted" ); + + eventDispatcher.removeEventListener( 'unknownType', listener ); + ok ( eventDispatcher._listeners.unknownType === undefined, "unknown types will be ignored" ); + + eventDispatcher.removeEventListener( 'anyType', undefined ); + ok ( eventDispatcher._listeners.anyType.length === 0, "undefined listeners are ignored" ); +}); + +test( "dispatchEvent", function() { + var eventDispatcher = new THREE.EventDispatcher(); + + var callCount = 0; + var listener = function() { callCount++; }; + + eventDispatcher.addEventListener( 'anyType', listener ); + ok( callCount === 0, "no event, no call" ); + + eventDispatcher.dispatchEvent( { type: 'anyType' } ); + ok( callCount === 1, "one event, one call" ); + + eventDispatcher.dispatchEvent( { type: 'anyType' } ); + ok( callCount === 2, "two events, two calls" ); +}); + + + + + + + + +// diff --git a/test/unit/unittests_three.html b/test/unit/unittests_three.html index 5ce51592763eb7ab8387a7ec5baa16a37e08eff6..4a46509d706506c9abecf752ce0ab157abf1fcbb 100644 --- a/test/unit/unittests_three.html +++ b/test/unit/unittests_three.html @@ -25,6 +25,7 @@ +