/test/org/robotlegs/v2/extensions/viewHookMap/ViewHookMapTest.as

https://github.com/justinjmoses/robotlegs-framework · ActionScript · 129 lines · 102 code · 21 blank · 6 comment · 0 complexity · a03b54a004bdbefa9360d13c952d0216 MD5 · raw file

  1. //------------------------------------------------------------------------------
  2. // Copyright (c) 2011 the original author or authors. All Rights Reserved.
  3. //
  4. // NOTICE: You are permitted to use, modify, and distribute this file
  5. // in accordance with the terms of the license agreement accompanying it.
  6. //------------------------------------------------------------------------------
  7. package org.robotlegs.v2.extensions.viewHookMap
  8. {
  9. import flash.display.DisplayObject;
  10. import flash.display.MovieClip;
  11. import flash.display.Sprite;
  12. import org.flexunit.asserts.*;
  13. import org.robotlegs.v2.core.impl.TypeMatcher;
  14. import org.robotlegs.v2.extensions.guardsAndHooks.impl.GuardsProcessor;
  15. import org.robotlegs.v2.extensions.guardsAndHooks.impl.HooksProcessor;
  16. import org.robotlegs.v2.extensions.guardsAndHooks.support.HookTracker;
  17. import org.robotlegs.v2.extensions.guardsAndHooks.support.TrackableHook1;
  18. import org.robotlegs.v2.extensions.guardsAndHooks.support.TrackableHook2;
  19. import org.robotlegs.v2.extensions.viewManager.api.IViewHandler;
  20. import org.swiftsuspenders.DescribeTypeJSONReflector;
  21. import org.swiftsuspenders.Injector;
  22. import org.swiftsuspenders.Reflector;
  23. public class ViewHookMapTest
  24. {
  25. private var hookTracker:HookTracker;
  26. private var injector:Injector;
  27. private var instance:ViewHookMap;
  28. [Before]
  29. public function setUp():void
  30. {
  31. instance = new ViewHookMap();
  32. injector = new Injector();
  33. hookTracker = new HookTracker();
  34. instance.hookMap = new HookMap();
  35. instance.hookMap.injector = injector;
  36. instance.hookMap.reflector = new DescribeTypeJSONReflector();
  37. instance.hookMap.hooksProcessor = new HooksProcessor();
  38. instance.hookMap.guardsProcessor = new GuardsProcessor();
  39. injector.map(HookTracker).toValue(hookTracker);
  40. }
  41. [After]
  42. public function tearDown():void
  43. {
  44. instance = null;
  45. }
  46. [Test]
  47. public function can_be_instantiated():void
  48. {
  49. assertTrue("instance is ViewHookMap", instance is ViewHookMap);
  50. }
  51. [Test]
  52. public function handleViewAdded_returns_0_if_not_interested():void
  53. {
  54. instance.mapMatcher(new TypeMatcher().allOf(MovieClip)).withHooks(TrackableHook1, TrackableHook2);
  55. const returned:uint = instance.processView(new Sprite(), null);
  56. assertEquals(0, returned);
  57. }
  58. [Test]
  59. public function handleViewAdded_returns_1_if_interested():void
  60. {
  61. instance.mapMatcher(new TypeMatcher().allOf(DisplayObject)).withHooks(TrackableHook1, TrackableHook2);
  62. const returned:uint = instance.processView(new Sprite(), null);
  63. assertEquals(1, returned);
  64. }
  65. [Test]
  66. public function implements_IViewHandler():void
  67. {
  68. assertTrue("instance is IViewHandler", instance is IViewHandler);
  69. }
  70. [Test]
  71. public function running_handler_with_view_that_doesnt_match_mapping_doesnt_make_hooks_run():void
  72. {
  73. instance.map(MovieClip).withHooks(TrackableHook1, TrackableHook2);
  74. instance.processView(new Sprite(), null);
  75. var expectedHooksConfirmed:Vector.<String> = new <String>[];
  76. assertEqualsVectorsIgnoringOrder(expectedHooksConfirmed, hookTracker.hooksConfirmed);
  77. }
  78. [Test]
  79. public function running_handler_with_view_that_doesnt_match_matcher_mapping_doesnt_make_hooks_run():void
  80. {
  81. instance.mapMatcher(new TypeMatcher().allOf(MovieClip)).withHooks(TrackableHook1, TrackableHook2);
  82. instance.processView(new Sprite(), null);
  83. var expectedHooksConfirmed:Vector.<String> = new <String>[];
  84. assertEqualsVectorsIgnoringOrder(expectedHooksConfirmed, hookTracker.hooksConfirmed);
  85. }
  86. [Test]
  87. public function running_handler_with_view_that_matches_mapping_makes_hooks_run():void
  88. {
  89. instance.map(Sprite).withHooks(TrackableHook1, TrackableHook2);
  90. instance.processView(new Sprite(), null);
  91. var expectedHooksConfirmed:Vector.<String> = new <String>['TrackableHook1', 'TrackableHook2'];
  92. assertEqualsVectorsIgnoringOrder('both hooks have run', expectedHooksConfirmed, hookTracker.hooksConfirmed);
  93. }
  94. [Test]
  95. public function running_handler_with_view_that_matches_matcher_mapping_makes_hooks_run():void
  96. {
  97. instance.mapMatcher(new TypeMatcher().allOf(DisplayObject)).withHooks(TrackableHook1, TrackableHook2);
  98. instance.processView(new Sprite(), null);
  99. var expectedHooksConfirmed:Vector.<String> = new <String>['TrackableHook1', 'TrackableHook2'];
  100. assertEqualsVectorsIgnoringOrder(expectedHooksConfirmed, hookTracker.hooksConfirmed);
  101. }
  102. [Test]
  103. public function test_failure_seen():void
  104. {
  105. assertTrue("Failing test", true);
  106. }
  107. }
  108. }