EventDispatcher.tests.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /**
  2. * @author simonThiele / https://github.com/simonThiele
  3. * @author TristanVALCKE / https://github.com/Itee
  4. */
  5. /* global QUnit */
  6. import { EventDispatcher } from '../../../../src/core/EventDispatcher';
  7. export default QUnit.module( 'Core', () => {
  8. QUnit.module( 'EventDispatcher', () => {
  9. // INSTANCING
  10. QUnit.todo( "Instancing", ( assert ) => {
  11. assert.ok( false, "everything's gonna be alright" );
  12. } );
  13. // PUBLIC STUFF
  14. QUnit.test( "addEventListener", ( assert ) => {
  15. var eventDispatcher = new EventDispatcher();
  16. var listener = {};
  17. eventDispatcher.addEventListener( 'anyType', listener );
  18. assert.ok( eventDispatcher._listeners.anyType.length === 1, "listener with unknown type was added" );
  19. assert.ok( eventDispatcher._listeners.anyType[ 0 ] === listener, "listener with unknown type was added" );
  20. eventDispatcher.addEventListener( 'anyType', listener );
  21. assert.ok( eventDispatcher._listeners.anyType.length === 1, "can't add one listener twice to same type" );
  22. assert.ok( eventDispatcher._listeners.anyType[ 0 ] === listener, "listener is still there" );
  23. } );
  24. QUnit.test( "hasEventListener", ( assert ) => {
  25. var eventDispatcher = new EventDispatcher();
  26. var listener = {};
  27. eventDispatcher.addEventListener( 'anyType', listener );
  28. assert.ok( eventDispatcher.hasEventListener( 'anyType', listener ), "listener was found" );
  29. assert.ok( ! eventDispatcher.hasEventListener( 'anotherType', listener ), "listener was not found which is good" );
  30. } );
  31. QUnit.test( "removeEventListener", ( assert ) => {
  32. var eventDispatcher = new EventDispatcher();
  33. var listener = {};
  34. assert.ok( eventDispatcher._listeners === undefined, "there are no listeners by default" );
  35. eventDispatcher.addEventListener( 'anyType', listener );
  36. assert.ok( Object.keys( eventDispatcher._listeners ).length === 1 &&
  37. eventDispatcher._listeners.anyType.length === 1, "if a listener was added, there is a new key" );
  38. eventDispatcher.removeEventListener( 'anyType', listener );
  39. assert.ok( eventDispatcher._listeners.anyType.length === 0, "listener was deleted" );
  40. eventDispatcher.removeEventListener( 'unknownType', listener );
  41. assert.ok( eventDispatcher._listeners.unknownType === undefined, "unknown types will be ignored" );
  42. eventDispatcher.removeEventListener( 'anyType', undefined );
  43. assert.ok( eventDispatcher._listeners.anyType.length === 0, "undefined listeners are ignored" );
  44. } );
  45. QUnit.test( "dispatchEvent", ( assert ) => {
  46. var eventDispatcher = new EventDispatcher();
  47. var callCount = 0;
  48. var listener = function () {
  49. callCount ++;
  50. };
  51. eventDispatcher.addEventListener( 'anyType', listener );
  52. assert.ok( callCount === 0, "no event, no call" );
  53. eventDispatcher.dispatchEvent( { type: 'anyType' } );
  54. assert.ok( callCount === 1, "one event, one call" );
  55. eventDispatcher.dispatchEvent( { type: 'anyType' } );
  56. assert.ok( callCount === 2, "two events, two calls" );
  57. } );
  58. } );
  59. } );
粤ICP备19079148号