/tests/org/osflash/signals/natives/sets/NativeSignalSetTest.as

https://github.com/justinjmoses/as3-signals · ActionScript · 274 lines · 181 code · 71 blank · 22 comment · 22 complexity · 4b4d8e42c44dd2aa92e5f65151d0b889 MD5 · raw file

  1. package org.osflash.signals.natives.sets
  2. {
  3. import asunit.asserts.assertNotNull;
  4. import asunit.asserts.assertTrue;
  5. import asunit.framework.IAsync;
  6. import flash.display.Sprite;
  7. import flash.events.Event;
  8. import org.osflash.signals.ISignal;
  9. import org.osflash.signals.natives.NativeSignal;
  10. /**
  11. * @author Simon Richardson - me@simonrichardson.info
  12. */
  13. public class NativeSignalSetTest
  14. {
  15. [Inject]
  16. public var async:IAsync;
  17. private var sprite:Sprite;
  18. private var signalSet:NativeSignalSet;
  19. [Before]
  20. public function setUp():void
  21. {
  22. sprite = new Sprite();
  23. signalSet = new NativeSignalSet(sprite);
  24. }
  25. [After]
  26. public function tearDown():void
  27. {
  28. signalSet.removeAll();
  29. signalSet = null;
  30. sprite = null;
  31. }
  32. protected function newEmptyHandler():Function
  33. {
  34. return function(e:*):void {};
  35. }
  36. //////
  37. [Test]
  38. public function numListeners_should_be_zero():void
  39. {
  40. assertTrue('Number of listeners should be 0.', signalSet.numListeners == 0);
  41. }
  42. //////
  43. [Test]
  44. public function signals_should_be_not_null():void
  45. {
  46. assertNotNull('Signals should not be null.', signalSet.signals);
  47. }
  48. //////
  49. [Test]
  50. public function signals_length_should_be_empty():void
  51. {
  52. assertTrue('Signals length should be 0.', signalSet.signals.length == 0);
  53. }
  54. //////
  55. [Test]
  56. public function signals_length_should_be_zero_after_removeAll():void
  57. {
  58. signalSet.removeAll();
  59. assertTrue('Signals length should be 0.', signalSet.signals.length == 0);
  60. }
  61. //////
  62. [Test]
  63. public function numListeners_should_be_zero_after_removeAll():void
  64. {
  65. signalSet.removeAll();
  66. assertTrue('Number of listeners should be 0.', signalSet.numListeners == 0);
  67. }
  68. //////
  69. [Test]
  70. public function getNativeSignal_should_return_NativeSignal():void
  71. {
  72. const result:NativeSignal = signalSet.getNativeSignal(Event.INIT);
  73. assertTrue('getNativeSignal should return type NativeSignal.', result is NativeSignal);
  74. }
  75. //////
  76. [Test]
  77. public function getNativeSignal_should_not_throw_Error_when_null_is_used_as_classType():void
  78. {
  79. signalSet.getNativeSignal(Event.INIT, null);
  80. }
  81. //////
  82. [Test(expects='ArgumentError')]
  83. public function getNativeSignal_should_throw_Error_when_used_for_event_type():void
  84. {
  85. signalSet.getNativeSignal(null);
  86. }
  87. //////
  88. [Test]
  89. public function getNativeSignal_should_increment_num_signals_to_one():void
  90. {
  91. signalSet.getNativeSignal(Event.INIT);
  92. assertTrue('Number of Signals should be 1', signalSet.signals.length == 1);
  93. }
  94. //////
  95. [Test]
  96. public function getNativeSignal_with_same_event_type_should_have_signal_length_of_one():void
  97. {
  98. signalSet.getNativeSignal(Event.INIT);
  99. signalSet.getNativeSignal(Event.INIT);
  100. assertTrue('Number of Signals should be 1', signalSet.signals.length == 1);
  101. }
  102. //////
  103. [Test]
  104. public function getNativeSignal_with_different_eventType_should_increment_num_signals_to_two():void
  105. {
  106. signalSet.getNativeSignal(Event.INIT);
  107. signalSet.getNativeSignal(Event.ACTIVATE);
  108. assertTrue('Number of Signals should be 2', signalSet.signals.length == 2);
  109. }
  110. //////
  111. [Test]
  112. public function getNativeSignal_with_lots_of_different_eventType_should_increment_num_signals_to_100():void
  113. {
  114. for(var i:int = 0; i<100; i++)
  115. {
  116. signalSet.getNativeSignal("event" + i);
  117. }
  118. assertTrue('Number of Signals should be 100', signalSet.signals.length == 100);
  119. }
  120. //////
  121. [Test]
  122. public function get_lots_of_getNativeSignal_then_removeAll_should_have_zero_signals():void
  123. {
  124. for(var i:int = 0; i<100; i++)
  125. {
  126. signalSet.getNativeSignal("event" + i);
  127. }
  128. signalSet.removeAll();
  129. assertTrue('Number of Signals should be 0', signalSet.signals.length == 0);
  130. }
  131. //////
  132. [Test]
  133. public function getNativeSignal_and_add_listener():void
  134. {
  135. const nativeSignal:NativeSignal = signalSet.getNativeSignal(Event.INIT);
  136. nativeSignal.add(newEmptyHandler());
  137. assertTrue('Number of listeners should be 1.', signalSet.numListeners == 1);
  138. }
  139. //////
  140. [Test]
  141. public function getNativeSignal_and_add_10_listeners():void
  142. {
  143. const nativeSignal:NativeSignal = signalSet.getNativeSignal(Event.INIT);
  144. for(var i:int = 0; i<10; i++)
  145. {
  146. nativeSignal.add(newEmptyHandler());
  147. }
  148. assertTrue('Number of listeners should be 10.', signalSet.numListeners == 10);
  149. }
  150. //////
  151. [Test]
  152. public function getNativeSignal_and_add_10_listeners_and_removeAll():void
  153. {
  154. const nativeSignal:NativeSignal = signalSet.getNativeSignal(Event.INIT);
  155. for(var i:int = 0; i<10; i++)
  156. {
  157. nativeSignal.add(newEmptyHandler());
  158. }
  159. signalSet.removeAll();
  160. assertTrue('Number of listeners should be 0.', signalSet.numListeners == 0);
  161. }
  162. //////
  163. [Test]
  164. public function getNativeSignal_and_add_10_listeners_and_removeAll_from_signal():void
  165. {
  166. const nativeSignal:NativeSignal = signalSet.getNativeSignal(Event.INIT);
  167. for(var i:int = 0; i<10; i++)
  168. {
  169. nativeSignal.add(newEmptyHandler());
  170. }
  171. nativeSignal.removeAll();
  172. assertTrue('Number of listeners should be 0.', signalSet.numListeners == 0);
  173. }
  174. //////
  175. [Test]
  176. public function get_two_getNativeSignal_and_add_10_listeners_to_each():void
  177. {
  178. const nativeSignal0:NativeSignal = signalSet.getNativeSignal(Event.INIT);
  179. var i:int = 0;
  180. for(i = 0; i<10; i++)
  181. {
  182. nativeSignal0.add(newEmptyHandler());
  183. }
  184. const nativeSignal1:NativeSignal = signalSet.getNativeSignal(Event.CHANGE);
  185. for(i = 0; i<10; i++)
  186. {
  187. nativeSignal1.add(newEmptyHandler());
  188. }
  189. assertTrue('Number of listeners should be 20.', signalSet.numListeners == 20);
  190. }
  191. //////
  192. [Test]
  193. public function numListeners_should_be_one_after_removeAll_with_appliedTo_all_else():void
  194. {
  195. const signal:NativeSignal = signalSet.getNativeSignal(Event.CHANGE);
  196. signal.add(newEmptyHandler()).applyTo(this);
  197. signal.add(newEmptyHandler());
  198. signal.add(newEmptyHandler()).applyTo(this);
  199. signalSet.removeAll(this);
  200. assertTrue('Number of listeners should be 1.', signalSet.numListeners == 1);
  201. }
  202. }
  203. }