EventDispatcher.tests.js 2.8 KB

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