/as3/test/ember/core/NodesFactoryTests.as

https://github.com/alecmce/xember
ActionScript | 144 lines | 119 code | 25 blank | 0 comment | 1 complexity | b0d90bf38816155a6593be3ee5b265aa MD5 | raw file
  1. package ember.core
  2. {
  3. import flash.display.Sprite;
  4. import mocks.MockComponent;
  5. import mocks.MockIgnoredComponent;
  6. import mocks.MockNode;
  7. import mocks.MockOptionalComponent;
  8. import mocks.MockOptionalNode;
  9. import org.hamcrest.assertThat;
  10. import org.hamcrest.core.throws;
  11. import org.hamcrest.object.equalTo;
  12. import org.hamcrest.object.isFalse;
  13. import org.hamcrest.object.isTrue;
  14. import org.hamcrest.object.notNullValue;
  15. import org.hamcrest.object.sameInstance;
  16. public class NodesFactoryTests
  17. {
  18. private var _entities:Entities;
  19. private var _factory:NodesFactory;
  20. [Before]
  21. public function before():void
  22. {
  23. _entities = new Entities();
  24. _factory = new NodesFactory();
  25. }
  26. [After]
  27. public function after():void
  28. {
  29. _entities = null;
  30. _factory = null;
  31. }
  32. [Test]
  33. public function a_factory_can_get_set_config():void
  34. {
  35. assertThat(_factory.getClassConfiguration(MockNode), notNullValue());
  36. }
  37. [Test]
  38. public function a_variable_flagged_as_required_is_required_in_config_definition():void
  39. {
  40. var config:NodesConfig = _factory.getClassConfiguration(MockNode);
  41. assertThat(config.requiredComponents.contains(MockComponent), isTrue());
  42. }
  43. [Test]
  44. public function a_variable_flagged_as_optional_is_optional_in_config_definition():void
  45. {
  46. var config:NodesConfig = _factory.getClassConfiguration(MockOptionalNode);
  47. assertThat(config.optionalComponents.contains(MockOptionalComponent), isTrue());
  48. }
  49. [Test]
  50. public function an_unflagged_variable_is_not_required_in_config_definition():void
  51. {
  52. var config:NodesConfig = _factory.getClassConfiguration(MockOptionalNode);
  53. assertThat(config.requiredComponents.contains(MockIgnoredComponent), isFalse());
  54. }
  55. [Test]
  56. public function an_unflagged_variable_is_not_optional_in_config_definition():void
  57. {
  58. var config:NodesConfig = _factory.getClassConfiguration(MockOptionalNode);
  59. assertThat(config.optionalComponents.contains(MockIgnoredComponent), isFalse());
  60. }
  61. [Test]
  62. public function config_has_node_class_injected():void
  63. {
  64. var config:NodesConfig = _factory.getClassConfiguration(MockNode);
  65. assertThat(config.nodeClass, sameInstance(MockNode));
  66. }
  67. [Test]
  68. public function required_components_are_injected_when_node_is_generated():void
  69. {
  70. var entity:Entity = _entities.create();
  71. var required:MockComponent = new MockComponent();
  72. entity.addComponent(required);
  73. var config:NodesConfig = _factory.getClassConfiguration(MockNode);
  74. var node:MockNode = config.generateNode(entity);
  75. assertThat(node.required, sameInstance(required));
  76. }
  77. [Test]
  78. public function optional_components_are_injected_when_node_is_generated():void
  79. {
  80. var optional:MockOptionalComponent = new MockOptionalComponent();
  81. var entity:Entity = _entities.create();
  82. entity.addComponent(new MockComponent());
  83. entity.addComponent(optional);
  84. var config:NodesConfig = _factory.getClassConfiguration(MockOptionalNode);
  85. var node:MockOptionalNode = config.generateNode(entity);
  86. assertThat(node.optional, sameInstance(optional));
  87. }
  88. [Test]
  89. public function generateSet_will_generate_one_node_for_each_entity():void
  90. {
  91. for (var i:int = 0; i < 5; i++)
  92. createEntity();
  93. var nodes:Nodes = _factory.generateSet(MockNode, _entities.list);
  94. assertThat(nodes.count, equalTo(5));
  95. }
  96. private function createEntity():Entity
  97. {
  98. var entity:Entity = _entities.create();
  99. entity.addComponent(new MockComponent());
  100. return entity;
  101. }
  102. [Test]
  103. public function a_factory_does_not_include_entities_that_do_not_satisfy_criteria():void
  104. {
  105. _entities.create();
  106. var nodes:Nodes = _factory.generateSet(MockNode, _entities.list);
  107. assertThat(nodes.count, equalTo(0));
  108. }
  109. [Test]
  110. public function config_will_throw_error_if_non_node_is_passed_as_class():void
  111. {
  112. assertThat(throwing_method, throws(Error));
  113. }
  114. private function throwing_method():void
  115. {
  116. _factory.getClassConfiguration(Sprite);
  117. }
  118. }
  119. }