state_machines 0.5.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1 -1
  3. data/README.md +34 -15
  4. data/lib/state_machines/assertions.rb +2 -0
  5. data/lib/state_machines/branch.rb +85 -81
  6. data/lib/state_machines/callback.rb +24 -21
  7. data/lib/state_machines/core.rb +2 -0
  8. data/lib/state_machines/core_ext/class/state_machine.rb +2 -0
  9. data/lib/state_machines/core_ext.rb +2 -0
  10. data/lib/state_machines/error.rb +2 -0
  11. data/lib/state_machines/eval_helpers.rb +51 -22
  12. data/lib/state_machines/event.rb +35 -30
  13. data/lib/state_machines/event_collection.rb +28 -25
  14. data/lib/state_machines/extensions.rb +3 -1
  15. data/lib/state_machines/helper_module.rb +3 -1
  16. data/lib/state_machines/integrations/base.rb +2 -0
  17. data/lib/state_machines/integrations.rb +10 -8
  18. data/lib/state_machines/machine/class_methods.rb +79 -0
  19. data/lib/state_machines/machine.rb +381 -425
  20. data/lib/state_machines/machine_collection.rb +13 -10
  21. data/lib/state_machines/macro_methods.rb +102 -100
  22. data/lib/state_machines/matcher.rb +26 -23
  23. data/lib/state_machines/matcher_helpers.rb +13 -11
  24. data/lib/state_machines/node_collection.rb +17 -13
  25. data/lib/state_machines/path.rb +58 -55
  26. data/lib/state_machines/path_collection.rb +37 -35
  27. data/lib/state_machines/state.rb +50 -38
  28. data/lib/state_machines/state_collection.rb +22 -19
  29. data/lib/state_machines/state_context.rb +35 -35
  30. data/lib/state_machines/stdio_renderer.rb +74 -0
  31. data/lib/state_machines/transition.rb +182 -178
  32. data/lib/state_machines/transition_collection.rb +172 -168
  33. data/lib/state_machines/version.rb +3 -1
  34. data/lib/state_machines.rb +4 -1
  35. metadata +10 -439
  36. data/.gitignore +0 -21
  37. data/.rspec +0 -3
  38. data/.ruby-gemset +0 -1
  39. data/.ruby-version +0 -1
  40. data/.travis.yml +0 -16
  41. data/Changelog.md +0 -22
  42. data/Contributors.md +0 -39
  43. data/Gemfile +0 -8
  44. data/Rakefile +0 -12
  45. data/Testing.md +0 -0
  46. data/state_machines.gemspec +0 -22
  47. data/test/files/integrations/event_on_failure_integration.rb +0 -10
  48. data/test/files/integrations/vehicle.rb +0 -7
  49. data/test/files/models/auto_shop.rb +0 -31
  50. data/test/files/models/car.rb +0 -21
  51. data/test/files/models/driver.rb +0 -13
  52. data/test/files/models/model_base.rb +0 -6
  53. data/test/files/models/motorcycle.rb +0 -16
  54. data/test/files/models/traffic_light.rb +0 -47
  55. data/test/files/models/vehicle.rb +0 -127
  56. data/test/files/node.rb +0 -5
  57. data/test/files/switch.rb +0 -15
  58. data/test/functional/auto_shop_available_test.rb +0 -20
  59. data/test/functional/auto_shop_busy_test.rb +0 -25
  60. data/test/functional/car_backing_up_test.rb +0 -45
  61. data/test/functional/car_test.rb +0 -49
  62. data/test/functional/driver_default_nonstandard_test.rb +0 -13
  63. data/test/functional/motorcycle_test.rb +0 -52
  64. data/test/functional/traffic_light_caution_test.rb +0 -17
  65. data/test/functional/traffic_light_proceed_test.rb +0 -17
  66. data/test/functional/traffic_light_stop_test.rb +0 -26
  67. data/test/functional/vehicle_first_gear_test.rb +0 -42
  68. data/test/functional/vehicle_idling_test.rb +0 -59
  69. data/test/functional/vehicle_locked_test.rb +0 -29
  70. data/test/functional/vehicle_parked_test.rb +0 -53
  71. data/test/functional/vehicle_repaired_test.rb +0 -20
  72. data/test/functional/vehicle_second_gear_test.rb +0 -42
  73. data/test/functional/vehicle_stalled_test.rb +0 -65
  74. data/test/functional/vehicle_test.rb +0 -20
  75. data/test/functional/vehicle_third_gear_test.rb +0 -42
  76. data/test/functional/vehicle_unsaved_test.rb +0 -181
  77. data/test/functional/vehicle_with_event_attributes_test.rb +0 -30
  78. data/test/functional/vehicle_with_parallel_events_test.rb +0 -36
  79. data/test/test_helper.rb +0 -15
  80. data/test/unit/assertions/assert_exclusive_keys_test.rb +0 -22
  81. data/test/unit/assertions/assert_valid_key_test.rb +0 -12
  82. data/test/unit/branch/branch_test.rb +0 -28
  83. data/test/unit/branch/branch_with_conflicting_conditionals_test.rb +0 -27
  84. data/test/unit/branch/branch_with_conflicting_from_requirements_test.rb +0 -8
  85. data/test/unit/branch/branch_with_conflicting_on_requirements_test.rb +0 -8
  86. data/test/unit/branch/branch_with_conflicting_to_requirements_test.rb +0 -8
  87. data/test/unit/branch/branch_with_different_requirements_test.rb +0 -41
  88. data/test/unit/branch/branch_with_except_from_matcher_requirement_test.rb +0 -8
  89. data/test/unit/branch/branch_with_except_from_requirement_test.rb +0 -36
  90. data/test/unit/branch/branch_with_except_on_matcher_requirement_test.rb +0 -8
  91. data/test/unit/branch/branch_with_except_on_requirement_test.rb +0 -36
  92. data/test/unit/branch/branch_with_except_to_matcher_requirement_test.rb +0 -8
  93. data/test/unit/branch/branch_with_except_to_requirement_test.rb +0 -36
  94. data/test/unit/branch/branch_with_from_matcher_requirement_test.rb +0 -20
  95. data/test/unit/branch/branch_with_from_requirement_test.rb +0 -45
  96. data/test/unit/branch/branch_with_if_conditional_test.rb +0 -27
  97. data/test/unit/branch/branch_with_implicit_and_explicit_requirements_test.rb +0 -23
  98. data/test/unit/branch/branch_with_implicit_from_requirement_matcher_test.rb +0 -20
  99. data/test/unit/branch/branch_with_implicit_requirement_test.rb +0 -20
  100. data/test/unit/branch/branch_with_implicit_to_requirement_matcher_test.rb +0 -16
  101. data/test/unit/branch/branch_with_multiple_except_from_requirements_test.rb +0 -20
  102. data/test/unit/branch/branch_with_multiple_except_on_requirements_test.rb +0 -16
  103. data/test/unit/branch/branch_with_multiple_except_to_requirements_test.rb +0 -20
  104. data/test/unit/branch/branch_with_multiple_from_requirements_test.rb +0 -16
  105. data/test/unit/branch/branch_with_multiple_if_conditionals_test.rb +0 -20
  106. data/test/unit/branch/branch_with_multiple_implicit_requirements_test.rb +0 -53
  107. data/test/unit/branch/branch_with_multiple_to_requirements_test.rb +0 -20
  108. data/test/unit/branch/branch_with_multiple_unless_conditionals_test.rb +0 -20
  109. data/test/unit/branch/branch_with_nil_requirements_test.rb +0 -28
  110. data/test/unit/branch/branch_with_no_requirements_test.rb +0 -36
  111. data/test/unit/branch/branch_with_on_matcher_requirement_test.rb +0 -16
  112. data/test/unit/branch/branch_with_on_requirement_test.rb +0 -45
  113. data/test/unit/branch/branch_with_to_matcher_requirement_test.rb +0 -20
  114. data/test/unit/branch/branch_with_to_requirement_test.rb +0 -45
  115. data/test/unit/branch/branch_with_unless_conditional_test.rb +0 -27
  116. data/test/unit/branch/branch_without_guards_test.rb +0 -27
  117. data/test/unit/callback/callback_by_default_test.rb +0 -25
  118. data/test/unit/callback/callback_test.rb +0 -53
  119. data/test/unit/callback/callback_with_application_bound_object_test.rb +0 -23
  120. data/test/unit/callback/callback_with_application_terminator_test.rb +0 -24
  121. data/test/unit/callback/callback_with_arguments_test.rb +0 -14
  122. data/test/unit/callback/callback_with_around_type_and_arguments_test.rb +0 -25
  123. data/test/unit/callback/callback_with_around_type_and_block_test.rb +0 -44
  124. data/test/unit/callback/callback_with_around_type_and_bound_method_test.rb +0 -23
  125. data/test/unit/callback/callback_with_around_type_and_multiple_methods_test.rb +0 -93
  126. data/test/unit/callback/callback_with_around_type_and_terminator_test.rb +0 -17
  127. data/test/unit/callback/callback_with_block_test.rb +0 -20
  128. data/test/unit/callback/callback_with_bound_method_and_arguments_test.rb +0 -28
  129. data/test/unit/callback/callback_with_bound_method_test.rb +0 -35
  130. data/test/unit/callback/callback_with_do_method_test.rb +0 -18
  131. data/test/unit/callback/callback_with_explicit_requirements_test.rb +0 -32
  132. data/test/unit/callback/callback_with_if_condition_test.rb +0 -17
  133. data/test/unit/callback/callback_with_implicit_requirements_test.rb +0 -32
  134. data/test/unit/callback/callback_with_method_argument_test.rb +0 -18
  135. data/test/unit/callback/callback_with_mixed_methods_test.rb +0 -31
  136. data/test/unit/callback/callback_with_multiple_bound_methods_test.rb +0 -21
  137. data/test/unit/callback/callback_with_multiple_do_methods_test.rb +0 -29
  138. data/test/unit/callback/callback_with_multiple_method_arguments_test.rb +0 -29
  139. data/test/unit/callback/callback_with_terminator_test.rb +0 -22
  140. data/test/unit/callback/callback_with_unbound_method_test.rb +0 -14
  141. data/test/unit/callback/callback_with_unless_condition_test.rb +0 -17
  142. data/test/unit/callback/callback_without_arguments_test.rb +0 -14
  143. data/test/unit/callback/callback_without_terminator_test.rb +0 -12
  144. data/test/unit/error/error_by_default_test.rb +0 -21
  145. data/test/unit/error/error_with_message_test.rb +0 -23
  146. data/test/unit/eval_helper/eval_helpers_base_test.rb +0 -8
  147. data/test/unit/eval_helper/eval_helpers_proc_block_and_explicit_arguments_test.rb +0 -14
  148. data/test/unit/eval_helper/eval_helpers_proc_block_and_implicit_arguments_test.rb +0 -14
  149. data/test/unit/eval_helper/eval_helpers_proc_test.rb +0 -13
  150. data/test/unit/eval_helper/eval_helpers_proc_with_arguments_test.rb +0 -13
  151. data/test/unit/eval_helper/eval_helpers_proc_with_block_test.rb +0 -13
  152. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_arguments_test.rb +0 -18
  153. data/test/unit/eval_helper/eval_helpers_proc_with_block_without_object_test.rb +0 -14
  154. data/test/unit/eval_helper/eval_helpers_proc_without_arguments_test.rb +0 -19
  155. data/test/unit/eval_helper/eval_helpers_string_test.rb +0 -25
  156. data/test/unit/eval_helper/eval_helpers_string_with_block_test.rb +0 -12
  157. data/test/unit/eval_helper/eval_helpers_symbol_method_missing_test.rb +0 -20
  158. data/test/unit/eval_helper/eval_helpers_symbol_private_test.rb +0 -17
  159. data/test/unit/eval_helper/eval_helpers_symbol_protected_test.rb +0 -17
  160. data/test/unit/eval_helper/eval_helpers_symbol_tainted_method_test.rb +0 -18
  161. data/test/unit/eval_helper/eval_helpers_symbol_test.rb +0 -16
  162. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_and_block_test.rb +0 -16
  163. data/test/unit/eval_helper/eval_helpers_symbol_with_arguments_test.rb +0 -16
  164. data/test/unit/eval_helper/eval_helpers_symbol_with_block_test.rb +0 -16
  165. data/test/unit/eval_helper/eval_helpers_test.rb +0 -13
  166. data/test/unit/event/event_after_being_copied_test.rb +0 -17
  167. data/test/unit/event/event_by_default_test.rb +0 -60
  168. data/test/unit/event/event_context_test.rb +0 -16
  169. data/test/unit/event/event_on_failure_test.rb +0 -44
  170. data/test/unit/event/event_test.rb +0 -34
  171. data/test/unit/event/event_transitions_test.rb +0 -62
  172. data/test/unit/event/event_with_conflicting_helpers_after_definition_test.rb +0 -79
  173. data/test/unit/event/event_with_conflicting_helpers_before_definition_test.rb +0 -58
  174. data/test/unit/event/event_with_conflicting_machine_test.rb +0 -48
  175. data/test/unit/event/event_with_dynamic_human_name_test.rb +0 -26
  176. data/test/unit/event/event_with_human_name_test.rb +0 -13
  177. data/test/unit/event/event_with_invalid_current_state_test.rb +0 -30
  178. data/test/unit/event/event_with_machine_action_test.rb +0 -33
  179. data/test/unit/event/event_with_marshalling_test.rb +0 -47
  180. data/test/unit/event/event_with_matching_disabled_transitions_test.rb +0 -115
  181. data/test/unit/event/event_with_matching_enabled_transitions_test.rb +0 -75
  182. data/test/unit/event/event_with_multiple_transitions_test.rb +0 -61
  183. data/test/unit/event/event_with_namespace_test.rb +0 -34
  184. data/test/unit/event/event_with_transition_with_blacklisted_to_state_test.rb +0 -60
  185. data/test/unit/event/event_with_transition_with_loopback_state_test.rb +0 -36
  186. data/test/unit/event/event_with_transition_with_nil_to_state_test.rb +0 -36
  187. data/test/unit/event/event_with_transition_with_whitelisted_to_state_test.rb +0 -51
  188. data/test/unit/event/event_with_transition_without_to_state_test.rb +0 -36
  189. data/test/unit/event/event_with_transitions_test.rb +0 -32
  190. data/test/unit/event/event_without_matching_transitions_test.rb +0 -41
  191. data/test/unit/event/event_without_transitions_test.rb +0 -28
  192. data/test/unit/event/invalid_event_test.rb +0 -20
  193. data/test/unit/event_collection/event_collection_attribute_with_machine_action_test.rb +0 -62
  194. data/test/unit/event_collection/event_collection_attribute_with_namespaced_machine_test.rb +0 -36
  195. data/test/unit/event_collection/event_collection_by_default_test.rb +0 -26
  196. data/test/unit/event_collection/event_collection_test.rb +0 -39
  197. data/test/unit/event_collection/event_collection_with_custom_machine_attribute_test.rb +0 -31
  198. data/test/unit/event_collection/event_collection_with_events_with_transitions_test.rb +0 -76
  199. data/test/unit/event_collection/event_collection_with_multiple_events_test.rb +0 -27
  200. data/test/unit/event_collection/event_collection_with_validations_test.rb +0 -74
  201. data/test/unit/event_collection/event_collection_without_machine_action_test.rb +0 -18
  202. data/test/unit/event_collection/event_string_collection_test.rb +0 -31
  203. data/test/unit/helper_module_test.rb +0 -17
  204. data/test/unit/integrations/integration_finder_test.rb +0 -16
  205. data/test/unit/integrations/integration_matcher_test.rb +0 -29
  206. data/test/unit/invalid_transition/invalid_parallel_transition_test.rb +0 -18
  207. data/test/unit/invalid_transition/invalid_transition_test.rb +0 -47
  208. data/test/unit/invalid_transition/invalid_transition_with_integration_test.rb +0 -45
  209. data/test/unit/invalid_transition/invalid_transition_with_namespace_test.rb +0 -32
  210. data/test/unit/machine/machine_after_being_copied_test.rb +0 -62
  211. data/test/unit/machine/machine_after_changing_initial_state.rb +0 -28
  212. data/test/unit/machine/machine_after_changing_owner_class_test.rb +0 -31
  213. data/test/unit/machine/machine_by_default_test.rb +0 -160
  214. data/test/unit/machine/machine_finder_custom_options_test.rb +0 -17
  215. data/test/unit/machine/machine_finder_with_existing_machine_on_superclass_test.rb +0 -85
  216. data/test/unit/machine/machine_finder_with_existing_on_same_class_test.rb +0 -23
  217. data/test/unit/machine/machine_finder_without_existing_machine_test.rb +0 -25
  218. data/test/unit/machine/machine_persistence_test.rb +0 -52
  219. data/test/unit/machine/machine_state_initialization_test.rb +0 -56
  220. data/test/unit/machine/machine_test.rb +0 -30
  221. data/test/unit/machine/machine_with_action_already_overridden_test.rb +0 -23
  222. data/test/unit/machine/machine_with_action_defined_in_class_test.rb +0 -37
  223. data/test/unit/machine/machine_with_action_defined_in_included_module_test.rb +0 -46
  224. data/test/unit/machine/machine_with_action_defined_in_superclass_test.rb +0 -43
  225. data/test/unit/machine/machine_with_action_undefined_test.rb +0 -33
  226. data/test/unit/machine/machine_with_cached_state_test.rb +0 -20
  227. data/test/unit/machine/machine_with_class_helpers_test.rb +0 -179
  228. data/test/unit/machine/machine_with_conflicting_helpers_after_definition_test.rb +0 -244
  229. data/test/unit/machine/machine_with_conflicting_helpers_before_definition_test.rb +0 -175
  230. data/test/unit/machine/machine_with_custom_action_test.rb +0 -11
  231. data/test/unit/machine/machine_with_custom_attribute_test.rb +0 -103
  232. data/test/unit/machine/machine_with_custom_initialize_test.rb +0 -24
  233. data/test/unit/machine/machine_with_custom_integration_test.rb +0 -72
  234. data/test/unit/machine/machine_with_custom_invalidation_test.rb +0 -39
  235. data/test/unit/machine/machine_with_custom_name_test.rb +0 -57
  236. data/test/unit/machine/machine_with_custom_plural_test.rb +0 -52
  237. data/test/unit/machine/machine_with_dynamic_initial_state_test.rb +0 -65
  238. data/test/unit/machine/machine_with_event_matchers_test.rb +0 -41
  239. data/test/unit/machine/machine_with_events_test.rb +0 -52
  240. data/test/unit/machine/machine_with_events_with_custom_human_names_test.rb +0 -18
  241. data/test/unit/machine/machine_with_events_with_transitions_test.rb +0 -37
  242. data/test/unit/machine/machine_with_existing_event_test.rb +0 -17
  243. data/test/unit/machine/machine_with_existing_machines_on_owner_class_test.rb +0 -20
  244. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_class_test.rb +0 -71
  245. data/test/unit/machine/machine_with_existing_machines_with_same_attributes_on_owner_subclass_test.rb +0 -31
  246. data/test/unit/machine/machine_with_existing_state_test.rb +0 -27
  247. data/test/unit/machine/machine_with_failure_callbacks_test.rb +0 -48
  248. data/test/unit/machine/machine_with_helpers_test.rb +0 -14
  249. data/test/unit/machine/machine_with_initial_state_with_value_and_owner_default.rb +0 -25
  250. data/test/unit/machine/machine_with_initialize_and_super_test.rb +0 -17
  251. data/test/unit/machine/machine_with_initialize_arguments_and_block_test.rb +0 -31
  252. data/test/unit/machine/machine_with_initialize_without_super_test.rb +0 -17
  253. data/test/unit/machine/machine_with_instance_helpers_test.rb +0 -179
  254. data/test/unit/machine/machine_with_integration_test.rb +0 -72
  255. data/test/unit/machine/machine_with_multiple_events_test.rb +0 -32
  256. data/test/unit/machine/machine_with_namespace_test.rb +0 -48
  257. data/test/unit/machine/machine_with_nil_action_test.rb +0 -27
  258. data/test/unit/machine/machine_with_other_states.rb +0 -22
  259. data/test/unit/machine/machine_with_owner_subclass_test.rb +0 -18
  260. data/test/unit/machine/machine_with_paths_test.rb +0 -25
  261. data/test/unit/machine/machine_with_private_action_test.rb +0 -43
  262. data/test/unit/machine/machine_with_state_matchers_test.rb +0 -41
  263. data/test/unit/machine/machine_with_state_with_matchers_test.rb +0 -19
  264. data/test/unit/machine/machine_with_states_test.rb +0 -55
  265. data/test/unit/machine/machine_with_states_with_behaviors_test.rb +0 -23
  266. data/test/unit/machine/machine_with_states_with_custom_human_names_test.rb +0 -18
  267. data/test/unit/machine/machine_with_states_with_custom_values_test.rb +0 -21
  268. data/test/unit/machine/machine_with_states_with_runtime_dependencies_test.rb +0 -19
  269. data/test/unit/machine/machine_with_static_initial_state_test.rb +0 -49
  270. data/test/unit/machine/machine_with_superclass_conflicting_helpers_after_definition_test.rb +0 -36
  271. data/test/unit/machine/machine_with_transition_callbacks_test.rb +0 -144
  272. data/test/unit/machine/machine_with_transitions_test.rb +0 -87
  273. data/test/unit/machine/machine_without_initialization_test.rb +0 -31
  274. data/test/unit/machine/machine_without_initialize_test.rb +0 -14
  275. data/test/unit/machine/machine_without_integration_test.rb +0 -31
  276. data/test/unit/machine_collection/machine_collection_by_default_test.rb +0 -11
  277. data/test/unit/machine_collection/machine_collection_fire_test.rb +0 -80
  278. data/test/unit/machine_collection/machine_collection_fire_with_transactions_test.rb +0 -54
  279. data/test/unit/machine_collection/machine_collection_fire_with_validations_test.rb +0 -76
  280. data/test/unit/machine_collection/machine_collection_state_initialization_test.rb +0 -111
  281. data/test/unit/machine_collection/machine_collection_transitions_with_blank_events_test.rb +0 -25
  282. data/test/unit/machine_collection/machine_collection_transitions_with_custom_options_test.rb +0 -20
  283. data/test/unit/machine_collection/machine_collection_transitions_with_different_actions_test.rb +0 -26
  284. data/test/unit/machine_collection/machine_collection_transitions_with_exisiting_transitions_test.rb +0 -25
  285. data/test/unit/machine_collection/machine_collection_transitions_with_invalid_events_test.rb +0 -25
  286. data/test/unit/machine_collection/machine_collection_transitions_with_same_actions_test.rb +0 -31
  287. data/test/unit/machine_collection/machine_collection_transitions_with_transition_test.rb +0 -26
  288. data/test/unit/machine_collection/machine_collection_transitions_without_events_test.rb +0 -25
  289. data/test/unit/machine_collection/machine_collection_transitions_without_transition_test.rb +0 -27
  290. data/test/unit/matcher/all_matcher_test.rb +0 -29
  291. data/test/unit/matcher/blacklist_matcher_test.rb +0 -30
  292. data/test/unit/matcher/loopback_matcher_test.rb +0 -27
  293. data/test/unit/matcher/matcher_by_default_test.rb +0 -15
  294. data/test/unit/matcher/matcher_with_multiple_values_test.rb +0 -15
  295. data/test/unit/matcher/matcher_with_value_test.rb +0 -15
  296. data/test/unit/matcher/whitelist_matcher_test.rb +0 -30
  297. data/test/unit/matcher_helpers/matcher_helpers_all_test.rb +0 -14
  298. data/test/unit/matcher_helpers/matcher_helpers_any_test.rb +0 -14
  299. data/test/unit/matcher_helpers/matcher_helpers_same_test.rb +0 -13
  300. data/test/unit/node_collection/node_collection_after_being_copied_test.rb +0 -46
  301. data/test/unit/node_collection/node_collection_after_update_test.rb +0 -36
  302. data/test/unit/node_collection/node_collection_by_default_test.rb +0 -22
  303. data/test/unit/node_collection/node_collection_test.rb +0 -23
  304. data/test/unit/node_collection/node_collection_with_indices_test.rb +0 -42
  305. data/test/unit/node_collection/node_collection_with_matcher_contexts_test.rb +0 -25
  306. data/test/unit/node_collection/node_collection_with_nodes_test.rb +0 -46
  307. data/test/unit/node_collection/node_collection_with_numeric_index_test.rb +0 -24
  308. data/test/unit/node_collection/node_collection_with_postdefined_contexts_test.rb +0 -22
  309. data/test/unit/node_collection/node_collection_with_predefined_contexts_test.rb +0 -23
  310. data/test/unit/node_collection/node_collection_with_string_index_test.rb +0 -20
  311. data/test/unit/node_collection/node_collection_with_symbol_index_test.rb +0 -20
  312. data/test/unit/node_collection/node_collection_without_indices_test.rb +0 -30
  313. data/test/unit/path/path_by_default_test.rb +0 -54
  314. data/test/unit/path/path_test.rb +0 -14
  315. data/test/unit/path/path_with_available_transitions_after_reaching_target_test.rb +0 -40
  316. data/test/unit/path/path_with_available_transitions_test.rb +0 -54
  317. data/test/unit/path/path_with_deep_target_reached_test.rb +0 -50
  318. data/test/unit/path/path_with_deep_target_test.rb +0 -40
  319. data/test/unit/path/path_with_duplicates_test.rb +0 -32
  320. data/test/unit/path/path_with_encountered_transitions_test.rb +0 -34
  321. data/test/unit/path/path_with_guarded_transitions_test.rb +0 -42
  322. data/test/unit/path/path_with_reached_target_test.rb +0 -35
  323. data/test/unit/path/path_with_transitions_test.rb +0 -54
  324. data/test/unit/path/path_with_unreached_target_test.rb +0 -31
  325. data/test/unit/path/path_without_transitions_test.rb +0 -24
  326. data/test/unit/path_collection/path_collection_by_default_test.rb +0 -46
  327. data/test/unit/path_collection/path_collection_test.rb +0 -24
  328. data/test/unit/path_collection/path_collection_with_deep_paths_test.rb +0 -43
  329. data/test/unit/path_collection/path_collection_with_duplicate_nodes_test.rb +0 -31
  330. data/test/unit/path_collection/path_collection_with_from_state_test.rb +0 -27
  331. data/test/unit/path_collection/path_collection_with_paths_test.rb +0 -47
  332. data/test/unit/path_collection/path_collection_with_to_state_test.rb +0 -29
  333. data/test/unit/path_collection/path_with_guarded_paths_test.rb +0 -25
  334. data/test/unit/state/state_after_being_copied_test.rb +0 -19
  335. data/test/unit/state/state_by_default_test.rb +0 -41
  336. data/test/unit/state/state_final_test.rb +0 -28
  337. data/test/unit/state/state_initial_test.rb +0 -13
  338. data/test/unit/state/state_not_final_test.rb +0 -32
  339. data/test/unit/state/state_not_initial_test.rb +0 -13
  340. data/test/unit/state/state_test.rb +0 -44
  341. data/test/unit/state/state_with_cached_lambda_value_test.rb +0 -29
  342. data/test/unit/state/state_with_conflicting_helpers_after_definition_test.rb +0 -38
  343. data/test/unit/state/state_with_conflicting_helpers_before_definition_test.rb +0 -29
  344. data/test/unit/state/state_with_conflicting_machine_name_test.rb +0 -20
  345. data/test/unit/state/state_with_conflicting_machine_test.rb +0 -37
  346. data/test/unit/state/state_with_context_test.rb +0 -60
  347. data/test/unit/state/state_with_dynamic_human_name_test.rb +0 -25
  348. data/test/unit/state/state_with_existing_context_method_test.rb +0 -24
  349. data/test/unit/state/state_with_human_name_test.rb +0 -13
  350. data/test/unit/state/state_with_integer_value_test.rb +0 -32
  351. data/test/unit/state/state_with_invalid_method_call_test.rb +0 -21
  352. data/test/unit/state/state_with_lambda_value_test.rb +0 -37
  353. data/test/unit/state/state_with_matcher_test.rb +0 -18
  354. data/test/unit/state/state_with_multiple_contexts_test.rb +0 -57
  355. data/test/unit/state/state_with_name_test.rb +0 -43
  356. data/test/unit/state/state_with_namespace_test.rb +0 -22
  357. data/test/unit/state/state_with_nil_value_test.rb +0 -35
  358. data/test/unit/state/state_with_redefined_context_method_test.rb +0 -45
  359. data/test/unit/state/state_with_symbolic_value_test.rb +0 -32
  360. data/test/unit/state/state_with_valid_inherited_method_call_for_current_state_test.rb +0 -40
  361. data/test/unit/state/state_with_valid_method_call_for_current_state_test.rb +0 -33
  362. data/test/unit/state/state_with_valid_method_call_for_different_state_test.rb +0 -41
  363. data/test/unit/state/state_without_cached_lambda_value_test.rb +0 -25
  364. data/test/unit/state/state_without_name_test.rb +0 -39
  365. data/test/unit/state_collection/state_collection_by_default_test.rb +0 -21
  366. data/test/unit/state_collection/state_collection_string_test.rb +0 -35
  367. data/test/unit/state_collection/state_collection_test.rb +0 -74
  368. data/test/unit/state_collection/state_collection_with_custom_state_values_test.rb +0 -29
  369. data/test/unit/state_collection/state_collection_with_event_transitions_test.rb +0 -39
  370. data/test/unit/state_collection/state_collection_with_initial_state_test.rb +0 -40
  371. data/test/unit/state_collection/state_collection_with_namespace_test.rb +0 -21
  372. data/test/unit/state_collection/state_collection_with_state_behaviors_test.rb +0 -40
  373. data/test/unit/state_collection/state_collection_with_state_matchers_test.rb +0 -29
  374. data/test/unit/state_collection/state_collection_with_transition_callbacks_test.rb +0 -40
  375. data/test/unit/state_context/state_context_proxy_test.rb +0 -26
  376. data/test/unit/state_context/state_context_proxy_with_if_and_unless_conditions_test.rb +0 -42
  377. data/test/unit/state_context/state_context_proxy_with_if_condition_test.rb +0 -64
  378. data/test/unit/state_context/state_context_proxy_with_multiple_if_conditions_test.rb +0 -32
  379. data/test/unit/state_context/state_context_proxy_with_multiple_unless_conditions_test.rb +0 -32
  380. data/test/unit/state_context/state_context_proxy_with_unless_condition_test.rb +0 -64
  381. data/test/unit/state_context/state_context_proxy_without_conditions_test.rb +0 -31
  382. data/test/unit/state_context/state_context_test.rb +0 -28
  383. data/test/unit/state_context/state_context_transition_test.rb +0 -104
  384. data/test/unit/state_context/state_context_with_matching_transition_test.rb +0 -27
  385. data/test/unit/state_machine/state_machine_by_default_test.rb +0 -12
  386. data/test/unit/state_machine/state_machine_test.rb +0 -20
  387. data/test/unit/transition/transition_after_being_performed_test.rb +0 -48
  388. data/test/unit/transition/transition_after_being_persisted_test.rb +0 -46
  389. data/test/unit/transition/transition_after_being_rolled_back_test.rb +0 -35
  390. data/test/unit/transition/transition_equality_test.rb +0 -52
  391. data/test/unit/transition/transition_loopback_test.rb +0 -18
  392. data/test/unit/transition/transition_test.rb +0 -96
  393. data/test/unit/transition/transition_transient_test.rb +0 -20
  394. data/test/unit/transition/transition_with_action_test.rb +0 -27
  395. data/test/unit/transition/transition_with_after_callbacks_skipped_test.rb +0 -127
  396. data/test/unit/transition/transition_with_after_callbacks_test.rb +0 -93
  397. data/test/unit/transition/transition_with_around_callbacks_test.rb +0 -141
  398. data/test/unit/transition/transition_with_before_callbacks_skipped_test.rb +0 -30
  399. data/test/unit/transition/transition_with_before_callbacks_test.rb +0 -104
  400. data/test/unit/transition/transition_with_custom_machine_attribute_test.rb +0 -28
  401. data/test/unit/transition/transition_with_different_states_test.rb +0 -18
  402. data/test/unit/transition/transition_with_dynamic_to_value_test.rb +0 -19
  403. data/test/unit/transition/transition_with_failure_callbacks_test.rb +0 -84
  404. data/test/unit/transition/transition_with_invalid_nodes_test.rb +0 -29
  405. data/test/unit/transition/transition_with_mixed_callbacks_test.rb +0 -105
  406. data/test/unit/transition/transition_with_multiple_after_callbacks_test.rb +0 -40
  407. data/test/unit/transition/transition_with_multiple_around_callbacks_test.rb +0 -114
  408. data/test/unit/transition/transition_with_multiple_before_callbacks_test.rb +0 -40
  409. data/test/unit/transition/transition_with_multiple_failure_callbacks_test.rb +0 -40
  410. data/test/unit/transition/transition_with_namespace_test.rb +0 -47
  411. data/test/unit/transition/transition_with_perform_arguments_test.rb +0 -35
  412. data/test/unit/transition/transition_with_transactions_test.rb +0 -42
  413. data/test/unit/transition/transition_without_callbacks_test.rb +0 -33
  414. data/test/unit/transition/transition_without_reading_state_test.rb +0 -22
  415. data/test/unit/transition/transition_without_running_action_test.rb +0 -47
  416. data/test/unit/transition_collection/attribute_transition_collection_by_default_test.rb +0 -23
  417. data/test/unit/transition_collection/attribute_transition_collection_marshalling_test.rb +0 -64
  418. data/test/unit/transition_collection/attribute_transition_collection_with_action_error_test.rb +0 -44
  419. data/test/unit/transition_collection/attribute_transition_collection_with_action_failed_test.rb +0 -44
  420. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_error_test.rb +0 -32
  421. data/test/unit/transition_collection/attribute_transition_collection_with_after_callback_halt_test.rb +0 -33
  422. data/test/unit/transition_collection/attribute_transition_collection_with_around_after_yield_callback_error_test.rb +0 -32
  423. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_error_test.rb +0 -32
  424. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_after_yield_halt_test.rb +0 -33
  425. data/test/unit/transition_collection/attribute_transition_collection_with_around_callback_before_yield_halt_test.rb +0 -33
  426. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_error_test.rb +0 -32
  427. data/test/unit/transition_collection/attribute_transition_collection_with_before_callback_halt_test.rb +0 -33
  428. data/test/unit/transition_collection/attribute_transition_collection_with_callbacks_test.rb +0 -68
  429. data/test/unit/transition_collection/attribute_transition_collection_with_event_transitions_test.rb +0 -41
  430. data/test/unit/transition_collection/attribute_transition_collection_with_events_test.rb +0 -44
  431. data/test/unit/transition_collection/attribute_transition_collection_with_skipped_after_callbacks_test.rb +0 -42
  432. data/test/unit/transition_collection/transition_collection_by_default_test.rb +0 -23
  433. data/test/unit/transition_collection/transition_collection_empty_with_block_test.rb +0 -23
  434. data/test/unit/transition_collection/transition_collection_empty_without_block_test.rb +0 -12
  435. data/test/unit/transition_collection/transition_collection_invalid_test.rb +0 -21
  436. data/test/unit/transition_collection/transition_collection_partial_invalid_test.rb +0 -69
  437. data/test/unit/transition_collection/transition_collection_test.rb +0 -26
  438. data/test/unit/transition_collection/transition_collection_valid_test.rb +0 -57
  439. data/test/unit/transition_collection/transition_collection_with_action_error_test.rb +0 -66
  440. data/test/unit/transition_collection/transition_collection_with_action_failed_test.rb +0 -60
  441. data/test/unit/transition_collection/transition_collection_with_action_hook_and_block_test.rb +0 -17
  442. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_action_test.rb +0 -17
  443. data/test/unit/transition_collection/transition_collection_with_action_hook_and_skipped_after_callbacks_test.rb +0 -37
  444. data/test/unit/transition_collection/transition_collection_with_action_hook_base_test.rb +0 -34
  445. data/test/unit/transition_collection/transition_collection_with_action_hook_error_test.rb +0 -29
  446. data/test/unit/transition_collection/transition_collection_with_action_hook_invalid_test.rb +0 -17
  447. data/test/unit/transition_collection/transition_collection_with_action_hook_multiple_test.rb +0 -79
  448. data/test/unit/transition_collection/transition_collection_with_action_hook_test.rb +0 -45
  449. data/test/unit/transition_collection/transition_collection_with_action_hook_with_different_actions_test.rb +0 -48
  450. data/test/unit/transition_collection/transition_collection_with_action_hook_with_nil_action_test.rb +0 -42
  451. data/test/unit/transition_collection/transition_collection_with_after_callback_halt_test.rb +0 -47
  452. data/test/unit/transition_collection/transition_collection_with_before_callback_halt_test.rb +0 -51
  453. data/test/unit/transition_collection/transition_collection_with_block_test.rb +0 -46
  454. data/test/unit/transition_collection/transition_collection_with_callbacks_test.rb +0 -135
  455. data/test/unit/transition_collection/transition_collection_with_different_actions_test.rb +0 -189
  456. data/test/unit/transition_collection/transition_collection_with_duplicate_actions_test.rb +0 -48
  457. data/test/unit/transition_collection/transition_collection_with_empty_actions_test.rb +0 -41
  458. data/test/unit/transition_collection/transition_collection_with_mixed_actions_test.rb +0 -41
  459. data/test/unit/transition_collection/transition_collection_with_skipped_actions_and_block_test.rb +0 -34
  460. data/test/unit/transition_collection/transition_collection_with_skipped_actions_test.rb +0 -69
  461. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_and_around_callbacks_test.rb +0 -53
  462. data/test/unit/transition_collection/transition_collection_with_skipped_after_callbacks_test.rb +0 -34
  463. data/test/unit/transition_collection/transition_collection_with_transactions_test.rb +0 -65
  464. data/test/unit/transition_collection/transition_collection_without_transactions_test.rb +0 -29
@@ -1,46 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionAfterBeingCopiedTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine)
8
- @collection << @parked = Node.new(:parked)
9
-
10
- @contexts_run = contexts_run = []
11
- @collection.context([:parked]) { contexts_run << :parked }
12
- @contexts_run.clear
13
-
14
- @copied_collection = @collection.dup
15
- @copied_collection << @idling = Node.new(:idling)
16
- @copied_collection.context([:first_gear]) { contexts_run << :first_gear }
17
- end
18
-
19
- def test_should_not_modify_the_original_list
20
- assert_equal 1, @collection.length
21
- assert_equal 2, @copied_collection.length
22
- end
23
-
24
- def test_should_not_modify_the_indices
25
- assert_nil @collection[:idling]
26
- assert_equal @idling, @copied_collection[:idling]
27
- end
28
-
29
- def test_should_copy_each_node
30
- refute_same @parked, @copied_collection[:parked]
31
- end
32
-
33
- def test_should_not_run_contexts
34
- assert_equal [], @contexts_run
35
- end
36
-
37
- def test_should_not_modify_contexts
38
- @collection << Node.new(:first_gear)
39
- assert_equal [], @contexts_run
40
- end
41
-
42
- def test_should_copy_contexts
43
- @copied_collection << Node.new(:parked)
44
- refute @contexts_run.empty?
45
- end
46
- end
@@ -1,36 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionAfterUpdateTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine, index: [:name, :value])
8
-
9
- @parked = Node.new(:parked, 1)
10
- @idling = Node.new(:idling, 2)
11
-
12
- @collection << @parked << @idling
13
-
14
- @parked.name = :parking
15
- @parked.value = 0
16
- @collection.update(@parked)
17
- end
18
-
19
- def test_should_not_change_the_index
20
- assert_equal @parked, @collection.at(0)
21
- end
22
-
23
- def test_should_not_duplicate_in_the_collection
24
- assert_equal 2, @collection.length
25
- end
26
-
27
- def test_should_add_each_indexed_key
28
- assert_equal @parked, @collection[:parking]
29
- assert_equal @parked, @collection[0, :value]
30
- end
31
-
32
- def test_should_remove_each_old_indexed_key
33
- assert_nil @collection[:parked]
34
- assert_nil @collection[1, :value]
35
- end
36
- end
@@ -1,22 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionByDefaultTest < StateMachinesTest
5
- def setup
6
- @machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(@machine)
8
- end
9
-
10
- def test_should_not_have_any_nodes
11
- assert_equal 0, @collection.length
12
- end
13
-
14
- def test_should_have_a_machine
15
- assert_equal @machine, @collection.machine
16
- end
17
-
18
- def test_should_index_by_name
19
- @collection << object = Node.new(:parked)
20
- assert_equal object, @collection[:parked]
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class NodeCollectionTest < StateMachinesTest
4
- def setup
5
- @machine = StateMachines::Machine.new(Class.new)
6
- @collection = StateMachines::NodeCollection.new(@machine)
7
- end
8
-
9
- def test_should_raise_exception_if_invalid_option_specified
10
- exception = assert_raises(ArgumentError) { StateMachines::NodeCollection.new(@machine, invalid: true) }
11
- assert_equal 'Unknown key: :invalid. Valid keys are: :index', exception.message
12
- end
13
-
14
- def test_should_raise_exception_on_lookup_if_invalid_index_specified
15
- exception = assert_raises(ArgumentError) { @collection[:something, :invalid] }
16
- assert_equal 'Invalid index: :invalid', exception.message
17
- end
18
-
19
- def test_should_raise_exception_on_fetch_if_invalid_index_specified
20
- exception = assert_raises(ArgumentError) { @collection.fetch(:something, :invalid) }
21
- assert_equal 'Invalid index: :invalid', exception.message
22
- end
23
- end
@@ -1,42 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithIndicesTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine, index: [:name, :value])
8
-
9
- @object = Node.new(:parked, 1)
10
- @collection << @object
11
- end
12
-
13
- def test_should_use_first_index_by_default_on_key_retrieval
14
- assert_equal [:parked], @collection.keys
15
- end
16
-
17
- def test_should_allow_customizing_index_for_key_retrieval
18
- assert_equal [1], @collection.keys(:value)
19
- end
20
-
21
- def test_should_use_first_index_by_default_on_lookup
22
- assert_equal @object, @collection[:parked]
23
- assert_nil @collection[1]
24
- end
25
-
26
- def test_should_allow_customizing_index_on_lookup
27
- assert_equal @object, @collection[1, :value]
28
- assert_nil @collection[:parked, :value]
29
- end
30
-
31
- def test_should_use_first_index_by_default_on_fetch
32
- assert_equal @object, @collection.fetch(:parked)
33
- exception = assert_raises(IndexError) { @collection.fetch(1) }
34
- assert_equal '1 is an invalid name', exception.message
35
- end
36
-
37
- def test_should_allow_customizing_index_on_fetch
38
- assert_equal @object, @collection.fetch(1, :value)
39
- exception = assert_raises(IndexError) { @collection.fetch(:parked, :value) }
40
- assert_equal ':parked is an invalid value', exception.message
41
- end
42
- end
@@ -1,25 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithMatcherContextsTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine)
8
- @collection << Node.new(:parked)
9
- end
10
-
11
- def test_should_always_run_all_matcher_context
12
- contexts_run = []
13
- @collection.context([StateMachines::AllMatcher.instance]) { contexts_run << :all }
14
- assert_equal [:all], contexts_run
15
- end
16
-
17
- def test_should_only_run_blacklist_matcher_if_not_matched
18
- contexts_run = []
19
- @collection.context([StateMachines::BlacklistMatcher.new([:parked])]) { contexts_run << :blacklist }
20
- assert_equal [], contexts_run
21
-
22
- @collection << Node.new(:idling)
23
- assert_equal [:blacklist], contexts_run
24
- end
25
- end
@@ -1,46 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithNodesTest < StateMachinesTest
5
- def setup
6
- @machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(@machine)
8
-
9
- @parked = Node.new(:parked, nil, @machine)
10
- @idling = Node.new(:idling, nil, @machine)
11
-
12
- @collection << @parked
13
- @collection << @idling
14
- end
15
-
16
- def test_should_be_able_to_enumerate
17
- order = []
18
- @collection.each { |object| order << object }
19
-
20
- assert_equal [@parked, @idling], order
21
- end
22
-
23
- def test_should_be_able_to_concatenate_multiple_nodes
24
- @first_gear = Node.new(:first_gear, nil, @machine)
25
- @second_gear = Node.new(:second_gear, nil, @machine)
26
- @collection.concat([@first_gear, @second_gear])
27
-
28
- order = []
29
- @collection.each { |object| order << object }
30
- assert_equal [@parked, @idling, @first_gear, @second_gear], order
31
- end
32
-
33
- def test_should_be_able_to_access_by_index
34
- assert_equal @parked, @collection.at(0)
35
- assert_equal @idling, @collection.at(1)
36
- end
37
-
38
- def test_should_deep_copy_machine_changes
39
- new_machine = StateMachines::Machine.new(Class.new)
40
- @collection.machine = new_machine
41
-
42
- assert_equal new_machine, @collection.machine
43
- assert_equal new_machine, @parked.machine
44
- assert_equal new_machine, @idling.machine
45
- end
46
- end
@@ -1,24 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithNumericIndexTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine, index: [:name, :value])
8
-
9
- @parked = Node.new(10, 1)
10
- @collection << @parked
11
- end
12
-
13
- def test_should_index_by_name
14
- assert_equal @parked, @collection[10]
15
- end
16
-
17
- def test_should_index_by_string_name
18
- assert_equal @parked, @collection['10']
19
- end
20
-
21
- def test_should_index_by_symbol_name
22
- assert_equal @parked, @collection[:'10']
23
- end
24
- end
@@ -1,22 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithPostdefinedContextsTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine)
8
- @collection << Node.new(:parked)
9
- end
10
-
11
- def test_should_run_context_if_matched
12
- contexts_run = []
13
- @collection.context([:parked]) { contexts_run << :parked }
14
- assert_equal [:parked], contexts_run
15
- end
16
-
17
- def test_should_not_run_contexts_if_not_matched
18
- contexts_run = []
19
- @collection.context([:idling]) { contexts_run << :idling }
20
- assert_equal [], contexts_run
21
- end
22
- end
@@ -1,23 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithPredefinedContextsTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine)
8
-
9
- @contexts_run = contexts_run = []
10
- @collection.context([:parked]) { contexts_run << :parked }
11
- @collection.context([:parked]) { contexts_run << :second_parked }
12
- end
13
-
14
- def test_should_run_contexts_in_the_order_defined
15
- @collection << Node.new(:parked)
16
- assert_equal [:parked, :second_parked], @contexts_run
17
- end
18
-
19
- def test_should_not_run_contexts_if_not_matched
20
- @collection << Node.new(:idling)
21
- assert_equal [], @contexts_run
22
- end
23
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithStringIndexTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine, index: [:name, :value])
8
-
9
- @parked = Node.new(:parked, 1)
10
- @collection << @parked
11
- end
12
-
13
- def test_should_index_by_name
14
- assert_equal @parked, @collection[:parked]
15
- end
16
-
17
- def test_should_index_by_string_name
18
- assert_equal @parked, @collection['parked']
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../test_helper'
2
- require_relative '../../files/node'
3
-
4
- class NodeCollectionWithSymbolIndexTest < StateMachinesTest
5
- def setup
6
- machine = StateMachines::Machine.new(Class.new)
7
- @collection = StateMachines::NodeCollection.new(machine, index: [:name, :value])
8
-
9
- @parked = Node.new('parked', 1)
10
- @collection << @parked
11
- end
12
-
13
- def test_should_index_by_name
14
- assert_equal @parked, @collection['parked']
15
- end
16
-
17
- def test_should_index_by_symbol_name
18
- assert_equal @parked, @collection[:parked]
19
- end
20
- end
@@ -1,30 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class NodeCollectionWithoutIndicesTest < StateMachinesTest
4
- def setup
5
- machine = StateMachines::Machine.new(Class.new)
6
- @collection = StateMachines::NodeCollection.new(machine, index: {})
7
- end
8
-
9
- def test_should_allow_adding_node
10
- @collection << Object.new
11
- assert_equal 1, @collection.length
12
- end
13
-
14
- def test_should_not_allow_keys_retrieval
15
- exception = assert_raises(ArgumentError) { @collection.keys }
16
- assert_equal 'No indices configured', exception.message
17
- end
18
-
19
- def test_should_not_allow_lookup
20
- @collection << Object.new
21
- exception = assert_raises(ArgumentError) { @collection[0] }
22
- assert_equal 'No indices configured', exception.message
23
- end
24
-
25
- def test_should_not_allow_fetching
26
- @collection << Object.new
27
- exception = assert_raises(ArgumentError) { @collection.fetch(0) }
28
- assert_equal 'No indices configured', exception.message
29
- end
30
- end
@@ -1,54 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathByDefaultTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @object = @klass.new
8
-
9
- @path = StateMachines::Path.new(@object, @machine)
10
- end
11
-
12
- def test_should_have_an_object
13
- assert_equal @object, @path.object
14
- end
15
-
16
- def test_should_have_a_machine
17
- assert_equal @machine, @path.machine
18
- end
19
-
20
- def test_should_not_have_walked_anywhere
21
- assert_equal [], @path
22
- end
23
-
24
- def test_should_not_have_a_from_name
25
- assert_nil @path.from_name
26
- end
27
-
28
- def test_should_have_no_from_states
29
- assert_equal [], @path.from_states
30
- end
31
-
32
- def test_should_not_have_a_to_name
33
- assert_nil @path.to_name
34
- end
35
-
36
- def test_should_have_no_to_states
37
- assert_equal [], @path.to_states
38
- end
39
-
40
- def test_should_have_no_events
41
- assert_equal [], @path.events
42
- end
43
-
44
- def test_should_not_be_able_to_walk_anywhere
45
- walked = false
46
- @path.walk { walked = true }
47
- assert_equal false, walked
48
- end
49
-
50
- def test_should_not_be_complete
51
- assert_equal false, @path.complete?
52
- end
53
- end
54
-
@@ -1,14 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @object = @klass.new
8
- end
9
-
10
- def test_should_raise_exception_if_invalid_option_specified
11
- exception = assert_raises(ArgumentError) { StateMachines::Path.new(@object, @machine, invalid: true) }
12
- assert_equal 'Unknown key: :invalid. Valid keys are: :target, :guard', exception.message
13
- end
14
- end
@@ -1,40 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathWithAvailableTransitionsAfterReachingTargetTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite do
9
- transition parked: :idling
10
- end
11
- @machine.event :shift_up do
12
- transition parked: :first_gear
13
- end
14
- @machine.event :park do
15
- transition [:idling, :first_gear] => :parked
16
- end
17
-
18
- @object = @klass.new
19
- @object.state = 'parked'
20
-
21
- @path = StateMachines::Path.new(@object, @machine, target: :parked)
22
- @path.concat([
23
- @ignite_transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling),
24
- @park_transition = StateMachines::Transition.new(@object, @machine, :park, :idling, :parked)
25
- ])
26
- end
27
-
28
- def test_should_be_complete
29
- assert_equal true, @path.complete?
30
- end
31
-
32
- def test_should_be_able_to_walk
33
- paths = []
34
- @path.walk { |path| paths << path }
35
- assert_equal [
36
- [@ignite_transition, @park_transition, StateMachines::Transition.new(@object, @machine, :shift_up, :parked, :first_gear)]
37
- ], paths
38
- end
39
- end
40
-
@@ -1,54 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathWithAvailableTransitionsTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling, :first_gear
8
- @machine.event :ignite
9
- @machine.event :shift_up do
10
- transition idling: :first_gear
11
- end
12
- @machine.event :park do
13
- transition idling: :parked
14
- end
15
-
16
- @object = @klass.new
17
- @object.state = 'parked'
18
-
19
- @path = StateMachines::Path.new(@object, @machine)
20
- @path.concat([
21
- @ignite_transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
22
- ])
23
- end
24
-
25
- def test_should_not_be_complete
26
- refute @path.complete?
27
- end
28
-
29
- def test_should_walk_each_available_transition
30
- paths = []
31
- @path.walk { |path| paths << path }
32
-
33
- assert_equal [
34
- [@ignite_transition, StateMachines::Transition.new(@object, @machine, :shift_up, :idling, :first_gear)],
35
- [@ignite_transition, StateMachines::Transition.new(@object, @machine, :park, :idling, :parked)]
36
- ], paths
37
- end
38
-
39
- def test_should_yield_path_instances_when_walking
40
- @path.walk do |path|
41
- assert_instance_of StateMachines::Path, path
42
- end
43
- end
44
-
45
- def test_should_not_modify_current_path_after_walking
46
- @path.walk {}
47
- assert_equal [@ignite_transition], @path
48
- end
49
-
50
- def test_should_not_modify_object_after_walking
51
- @path.walk {}
52
- assert_equal 'parked', @object.state
53
- end
54
- end
@@ -1,50 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathWithDeepTargetReachedTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite do
9
- transition parked: :idling
10
- end
11
- @machine.event :shift_up do
12
- transition parked: :first_gear
13
- end
14
- @machine.event :park do
15
- transition [:idling, :first_gear] => :parked
16
- end
17
-
18
- @object = @klass.new
19
- @object.state = 'parked'
20
-
21
- @path = StateMachines::Path.new(@object, @machine, target: :parked)
22
- @path.concat([
23
- @ignite_transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling),
24
- @park_transition = StateMachines::Transition.new(@object, @machine, :park, :idling, :parked),
25
- @shift_up_transition = StateMachines::Transition.new(@object, @machine, :shift_up, :parked, :first_gear),
26
- @park_transition_2 = StateMachines::Transition.new(@object, @machine, :park, :first_gear, :parked)
27
- ])
28
- end
29
-
30
- def test_should_be_complete
31
- assert_equal true, @path.complete?
32
- end
33
-
34
- def test_should_not_be_able_to_walk
35
- walked = false
36
- @path.walk { walked = true }
37
- assert_equal false, walked
38
- end
39
-
40
- def test_should_not_be_able_to_walk_with_available_transitions
41
- @machine.event :park do
42
- transition parked: same
43
- end
44
-
45
- walked = false
46
- @path.walk { walked = true }
47
- assert_equal false, walked
48
- end
49
- end
50
-
@@ -1,40 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathWithDeepTargetTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
- @machine.event :ignite do
9
- transition parked: :idling
10
- end
11
- @machine.event :shift_up do
12
- transition parked: :first_gear
13
- end
14
- @machine.event :park do
15
- transition [:idling, :first_gear] => :parked
16
- end
17
-
18
- @object = @klass.new
19
- @object.state = 'parked'
20
-
21
- @path = StateMachines::Path.new(@object, @machine, target: :parked)
22
- @path.concat([
23
- @ignite_transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling),
24
- @park_transition = StateMachines::Transition.new(@object, @machine, :park, :idling, :parked),
25
- @shift_up_transition = StateMachines::Transition.new(@object, @machine, :shift_up, :parked, :first_gear)
26
- ])
27
- end
28
-
29
- def test_should_not_be_complete
30
- assert_equal false, @path.complete?
31
- end
32
-
33
- def test_should_be_able_to_walk
34
- paths = []
35
- @path.walk { |path| paths << path }
36
- assert_equal [
37
- [@ignite_transition, @park_transition, @shift_up_transition, StateMachines::Transition.new(@object, @machine, :park, :first_gear, :parked)]
38
- ], paths
39
- end
40
- end
@@ -1,32 +0,0 @@
1
- require_relative '../../test_helper'
2
-
3
- class PathWithDuplicatesTest < StateMachinesTest
4
- def setup
5
- @klass = Class.new
6
- @machine = StateMachines::Machine.new(@klass)
7
- @machine.state :parked, :idling
8
- @machine.event :park, :ignite
9
-
10
- @object = @klass.new
11
- @object.state = 'parked'
12
-
13
- @path = StateMachines::Path.new(@object, @machine)
14
- @path.concat([
15
- @ignite_transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling),
16
- @park_transition = StateMachines::Transition.new(@object, @machine, :park, :idling, :parked),
17
- @ignite_again_transition = StateMachines::Transition.new(@object, @machine, :ignite, :parked, :idling)
18
- ])
19
- end
20
-
21
- def test_should_not_include_duplicates_in_from_states
22
- assert_equal [:parked, :idling], @path.from_states
23
- end
24
-
25
- def test_should_not_include_duplicates_in_to_states
26
- assert_equal [:idling, :parked], @path.to_states
27
- end
28
-
29
- def test_should_not_include_duplicates_in_events
30
- assert_equal [:ignite, :park], @path.events
31
- end
32
- end