rspec 1.1.11 → 1.1.12

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 (269) hide show
  1. data/.autotest +4 -0
  2. data/History.txt +55 -0
  3. data/Manifest.txt +102 -122
  4. data/README.txt +30 -12
  5. data/Rakefile +10 -10
  6. data/TODO.txt +10 -2
  7. data/{failing_examples → examples/failing}/README.txt +0 -0
  8. data/{failing_examples → examples/failing}/diffing_spec.rb +0 -0
  9. data/{failing_examples → examples/failing}/failing_autogenerated_docstrings_example.rb +0 -0
  10. data/{failing_examples/failure_in_teardown.rb → examples/failing/failure_in_after.rb} +1 -1
  11. data/{failing_examples/failure_in_setup.rb → examples/failing/failure_in_before.rb} +1 -1
  12. data/{failing_examples → examples/failing}/mocking_example.rb +0 -0
  13. data/{failing_examples → examples/failing}/mocking_with_flexmock.rb +0 -0
  14. data/{failing_examples → examples/failing}/mocking_with_mocha.rb +0 -0
  15. data/{failing_examples → examples/failing}/mocking_with_rr.rb +0 -0
  16. data/{failing_examples → examples/failing}/partial_mock_example.rb +0 -0
  17. data/{failing_examples → examples/failing}/predicate_example.rb +5 -0
  18. data/{failing_examples → examples/failing}/raising_example.rb +0 -0
  19. data/{failing_examples → examples/failing}/spec_helper.rb +1 -1
  20. data/{failing_examples → examples/failing}/syntax_error_example.rb +0 -0
  21. data/{failing_examples → examples/failing}/team_spec.rb +0 -0
  22. data/{failing_examples → examples/failing}/timeout_behaviour.rb +0 -0
  23. data/examples/{pure → passing}/autogenerated_docstrings_example.rb +6 -0
  24. data/examples/{pure → passing}/before_and_after_example.rb +0 -0
  25. data/examples/{pure → passing}/behave_as_example.rb +0 -0
  26. data/examples/{pure → passing}/custom_expectation_matchers.rb +0 -0
  27. data/examples/{pure → passing}/custom_formatter.rb +1 -1
  28. data/examples/{pure → passing}/dynamic_spec.rb +2 -2
  29. data/examples/{pure → passing}/file_accessor.rb +0 -0
  30. data/examples/{pure → passing}/file_accessor_spec.rb +0 -0
  31. data/examples/{pure → passing}/greeter_spec.rb +0 -0
  32. data/examples/{pure → passing}/helper_method_example.rb +0 -0
  33. data/examples/{pure → passing}/io_processor.rb +0 -0
  34. data/examples/{pure → passing}/io_processor_spec.rb +0 -0
  35. data/examples/{pure → passing}/legacy_spec.rb +0 -0
  36. data/examples/{pure → passing}/mocking_example.rb +0 -0
  37. data/examples/{pure/multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +1 -3
  38. data/examples/{pure → passing}/nested_classes_example.rb +0 -0
  39. data/examples/{pure → passing}/partial_mock_example.rb +0 -0
  40. data/examples/{pure → passing}/pending_example.rb +0 -0
  41. data/examples/{pure → passing}/predicate_example.rb +0 -0
  42. data/examples/{pure → passing}/priority.txt +0 -0
  43. data/examples/{pure → passing}/shared_example_group_example.rb +0 -0
  44. data/examples/{pure → passing}/shared_stack_examples.rb +1 -3
  45. data/examples/passing/simple_matcher_example.rb +31 -0
  46. data/examples/{pure → passing}/spec_helper.rb +0 -0
  47. data/examples/{pure → passing}/stack.rb +0 -0
  48. data/examples/{pure → passing}/stack_spec.rb +3 -2
  49. data/examples/{pure → passing}/stack_spec_with_nested_example_groups.rb +0 -0
  50. data/examples/{pure → passing}/stubbing_example.rb +0 -0
  51. data/examples/{pure → passing}/yielding_example.rb +0 -0
  52. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
  53. data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
  54. data/{stories/example_groups/autogenerated_docstrings → features/example_groups/autogenerated_docstrings.feature} +5 -5
  55. data/{stories/example_groups/example_group_with_should_methods → features/example_groups/example_group_with_should_methods.feature} +3 -3
  56. data/{stories/example_groups/nested_groups → features/example_groups/nested_groups.feature} +4 -4
  57. data/{stories/example_groups/output → features/example_groups/output.feature} +3 -8
  58. data/{stories/interop/examples_and_tests_together → features/interop/examples_and_tests_together.feature} +5 -4
  59. data/features/interop/test_but_not_test_unit.feature +14 -0
  60. data/{stories/interop/test_case_with_should_methods → features/interop/test_case_with_should_methods.feature} +2 -2
  61. data/{stories/mock_framework_integration/use_flexmock.story → features/mock_framework_integration/use_flexmock.feature} +1 -1
  62. data/features/step_definitions/running_rspec.rb +54 -0
  63. data/features/support/env.rb +26 -0
  64. data/{stories/resources → features/support}/helpers/cmdline.rb +0 -0
  65. data/{stories/resources → features/support}/helpers/story_helper.rb +1 -1
  66. data/{stories/resources → features/support}/matchers/smart_match.rb +0 -0
  67. data/{plugins → lib/adapters}/mock_frameworks/flexmock.rb +1 -1
  68. data/{plugins → lib/adapters}/mock_frameworks/mocha.rb +1 -1
  69. data/{plugins → lib/adapters}/mock_frameworks/rr.rb +1 -1
  70. data/{plugins → lib/adapters}/mock_frameworks/rspec.rb +2 -2
  71. data/lib/autotest/rspec.rb +4 -3
  72. data/lib/spec.rb +2 -27
  73. data/lib/spec/dsl.rb +1 -0
  74. data/lib/spec/{extensions → dsl}/main.rb +10 -10
  75. data/lib/spec/example.rb +175 -1
  76. data/lib/spec/example/before_and_after_hooks.rb +30 -24
  77. data/lib/spec/example/example_group.rb +1 -0
  78. data/lib/spec/example/example_group_factory.rb +26 -9
  79. data/lib/spec/example/example_group_methods.rb +138 -113
  80. data/lib/spec/example/example_methods.rb +88 -25
  81. data/lib/spec/example/shared_example_group.rb +28 -21
  82. data/lib/spec/expectations.rb +22 -18
  83. data/lib/spec/expectations/handler.rb +16 -36
  84. data/lib/spec/interop/test/unit/testcase.rb +19 -17
  85. data/lib/spec/interop/test/unit/testresult.rb +1 -1
  86. data/lib/spec/interop/test/unit/testsuite_adapter.rb +1 -1
  87. data/lib/spec/matchers.rb +7 -28
  88. data/lib/spec/matchers/be.rb +103 -116
  89. data/lib/spec/matchers/be_close.rb +6 -22
  90. data/lib/spec/matchers/eql.rb +7 -25
  91. data/lib/spec/matchers/equal.rb +7 -25
  92. data/lib/spec/matchers/errors.rb +5 -0
  93. data/lib/spec/matchers/exist.rb +8 -14
  94. data/lib/spec/matchers/generated_descriptions.rb +48 -0
  95. data/lib/spec/matchers/has.rb +12 -28
  96. data/lib/spec/matchers/include.rb +12 -9
  97. data/lib/spec/matchers/match.rb +8 -27
  98. data/lib/spec/matchers/match_array.rb +79 -0
  99. data/lib/spec/matchers/method_missing.rb +9 -0
  100. data/lib/spec/matchers/operator_matcher.rb +39 -48
  101. data/lib/spec/matchers/raise_error.rb +4 -8
  102. data/lib/spec/matchers/respond_to.rb +33 -8
  103. data/lib/spec/matchers/throw_symbol.rb +49 -17
  104. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  105. data/lib/spec/mocks/argument_constraints.rb +77 -5
  106. data/lib/spec/mocks/message_expectation.rb +7 -7
  107. data/lib/spec/mocks/proxy.rb +14 -12
  108. data/lib/spec/rake/spectask.rb +4 -6
  109. data/lib/spec/ruby.rb +9 -0
  110. data/lib/spec/runner.rb +37 -162
  111. data/lib/spec/runner/backtrace_tweaker.rb +5 -3
  112. data/lib/spec/runner/class_and_arguments_parser.rb +7 -9
  113. data/lib/spec/runner/command_line.rb +6 -8
  114. data/lib/spec/{example → runner}/configuration.rb +46 -47
  115. data/lib/spec/runner/example_group_runner.rb +15 -4
  116. data/lib/spec/runner/formatter/base_text_formatter.rb +4 -3
  117. data/lib/spec/runner/formatter/html_formatter.rb +14 -11
  118. data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
  119. data/lib/spec/runner/heckle_runner.rb +58 -56
  120. data/lib/spec/runner/option_parser.rb +8 -4
  121. data/lib/spec/runner/options.rb +29 -14
  122. data/lib/spec/runner/reporter.rb +1 -1
  123. data/lib/spec/runner/spec_parser.rb +11 -9
  124. data/lib/spec/story/runner.rb +40 -42
  125. data/lib/spec/story/runner/story_runner.rb +10 -6
  126. data/lib/spec/story/world.rb +66 -70
  127. data/lib/spec/version.rb +4 -2
  128. data/{rake_tasks → resources/rake}/examples.rake +0 -0
  129. data/{rake_tasks → resources/rake}/examples_with_rcov.rake +0 -0
  130. data/{rake_tasks → resources/rake}/failing_examples_with_html.rake +0 -0
  131. data/{rake_tasks → resources/rake}/verify_rcov.rake +0 -0
  132. data/{stories/resources → resources}/spec/example_group_with_should_methods.rb +1 -1
  133. data/{stories/resources → resources}/spec/simple_spec.rb +1 -1
  134. data/resources/spec/spec_with_flexmock.rb +19 -0
  135. data/{stories/resources → resources}/test/spec_and_test_together.rb +1 -1
  136. data/resources/test/spec_including_test_but_not_unit.rb +11 -0
  137. data/{stories/resources → resources}/test/test_case_with_should_methods.rb +2 -2
  138. data/rspec.gemspec +16 -6
  139. data/spec/autotest/autotest_helper.rb +2 -2
  140. data/spec/autotest/discover_spec.rb +4 -15
  141. data/spec/autotest/failed_results_re_spec.rb +24 -0
  142. data/spec/autotest/rspec_spec.rb +2 -38
  143. data/spec/spec/dsl/main_spec.rb +88 -0
  144. data/spec/spec/example/example_group_class_definition_spec.rb +6 -2
  145. data/spec/spec/example/example_group_factory_spec.rb +50 -10
  146. data/spec/spec/example/example_group_methods_spec.rb +210 -160
  147. data/spec/spec/example/example_group_spec.rb +44 -52
  148. data/spec/spec/example/example_matcher_spec.rb +6 -23
  149. data/spec/spec/example/example_methods_spec.rb +176 -54
  150. data/spec/spec/example/helper_method_spec.rb +24 -0
  151. data/spec/spec/example/pending_module_spec.rb +2 -8
  152. data/spec/spec/example/shared_example_group_spec.rb +56 -80
  153. data/spec/spec/expectations/extensions/object_spec.rb +0 -50
  154. data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  155. data/spec/spec/interop/test/unit/spec_spec.rb +1 -5
  156. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +4 -0
  157. data/spec/spec/matchers/be_close_spec.rb +12 -10
  158. data/spec/spec/matchers/be_spec.rb +62 -7
  159. data/spec/spec/matchers/description_generation_spec.rb +19 -0
  160. data/spec/spec/matchers/eql_spec.rb +7 -6
  161. data/spec/spec/matchers/equal_spec.rb +7 -6
  162. data/spec/spec/matchers/handler_spec.rb +4 -43
  163. data/spec/spec/matchers/has_spec.rb +1 -1
  164. data/spec/spec/matchers/have_spec.rb +23 -18
  165. data/spec/spec/matchers/include_spec.rb +24 -0
  166. data/spec/spec/matchers/match_array_spec.rb +83 -0
  167. data/spec/spec/matchers/matcher_methods_spec.rb +1 -13
  168. data/spec/spec/matchers/raise_error_spec.rb +18 -0
  169. data/spec/spec/matchers/respond_to_spec.rb +71 -9
  170. data/spec/spec/matchers/throw_symbol_spec.rb +85 -43
  171. data/spec/spec/mocks/bug_report_11545_spec.rb +4 -5
  172. data/spec/spec/mocks/bug_report_496.rb +11 -9
  173. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  174. data/spec/spec/mocks/hash_including_matcher_spec.rb +39 -2
  175. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  176. data/spec/spec/mocks/mock_spec.rb +5 -6
  177. data/spec/spec/mocks/nil_expectation_warning_spec.rb +2 -2
  178. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +18 -3
  179. data/spec/spec/mocks/stub_spec.rb +6 -0
  180. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
  181. data/spec/spec/runner/command_line_spec.rb +4 -4
  182. data/spec/spec/runner/configuration_spec.rb +301 -0
  183. data/spec/spec/runner/drb_command_line_spec.rb +4 -4
  184. data/spec/spec/runner/example_group_runner_spec.rb +33 -0
  185. data/spec/spec/runner/formatter/base_formatter_spec.rb +13 -102
  186. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
  187. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +5 -5
  188. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +3 -3
  189. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +6 -6
  190. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +9 -9
  191. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +6 -6
  192. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +10 -10
  193. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +39 -30
  194. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
  195. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
  196. data/spec/spec/runner/formatter/html_formatter_spec.rb +14 -13
  197. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +5 -5
  198. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +7 -17
  199. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +18 -17
  200. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +5 -5
  201. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +6 -6
  202. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -30
  203. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
  204. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
  205. data/spec/spec/runner/heckler_spec.rb +16 -9
  206. data/spec/spec/runner/option_parser_spec.rb +3 -18
  207. data/spec/spec/runner/options_spec.rb +27 -8
  208. data/spec/spec/runner/reporter_spec.rb +5 -5
  209. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  210. data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
  211. data/spec/spec/runner/spec_parser_spec.rb +85 -79
  212. data/spec/spec/spec_spec.rb +21 -0
  213. data/spec/spec_helper.rb +9 -1
  214. data/story_server/prototype/javascripts/prototype.js +1 -1
  215. metadata +119 -131
  216. data/examples/stories/adder.rb +0 -13
  217. data/examples/stories/addition +0 -34
  218. data/examples/stories/addition.rb +0 -9
  219. data/examples/stories/calculator.rb +0 -65
  220. data/examples/stories/game-of-life/.loadpath +0 -5
  221. data/examples/stories/game-of-life/README.txt +0 -21
  222. data/examples/stories/game-of-life/behaviour/everything.rb +0 -6
  223. data/examples/stories/game-of-life/behaviour/examples/examples.rb +0 -3
  224. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +0 -35
  225. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +0 -66
  226. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +0 -21
  227. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +0 -21
  228. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +0 -42
  229. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +0 -42
  230. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +0 -17
  231. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +0 -53
  232. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +0 -52
  233. data/examples/stories/game-of-life/behaviour/stories/helper.rb +0 -6
  234. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +0 -26
  235. data/examples/stories/game-of-life/behaviour/stories/steps.rb +0 -5
  236. data/examples/stories/game-of-life/behaviour/stories/stories.rb +0 -3
  237. data/examples/stories/game-of-life/behaviour/stories/stories.txt +0 -22
  238. data/examples/stories/game-of-life/life.rb +0 -3
  239. data/examples/stories/game-of-life/life/game.rb +0 -23
  240. data/examples/stories/game-of-life/life/grid.rb +0 -43
  241. data/examples/stories/helper.rb +0 -9
  242. data/examples/stories/steps/addition_steps.rb +0 -18
  243. data/lib/spec/adapters.rb +0 -1
  244. data/lib/spec/adapters/ruby_engine.rb +0 -26
  245. data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
  246. data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
  247. data/lib/spec/extensions.rb +0 -4
  248. data/lib/spec/extensions/class.rb +0 -24
  249. data/lib/spec/extensions/metaclass.rb +0 -7
  250. data/lib/spec/extensions/object.rb +0 -6
  251. data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
  252. data/spec/spec/example/configuration_spec.rb +0 -296
  253. data/spec/spec/example/example_runner_spec.rb +0 -194
  254. data/spec/spec/extensions/main_spec.rb +0 -71
  255. data/stories/all.rb +0 -5
  256. data/stories/configuration/before_blocks.story +0 -21
  257. data/stories/configuration/stories.rb +0 -7
  258. data/stories/example_groups/stories.rb +0 -7
  259. data/stories/helper.rb +0 -6
  260. data/stories/interop/stories.rb +0 -7
  261. data/stories/mock_framework_integration/stories.rb +0 -7
  262. data/stories/pending_stories/README +0 -3
  263. data/stories/resources/spec/before_blocks_example.rb +0 -32
  264. data/stories/resources/spec/spec_with_flexmock.rb +0 -18
  265. data/stories/resources/steps/running_rspec.rb +0 -50
  266. data/stories/resources/stories/failing_story.rb +0 -15
  267. data/stories/stories/multiline_steps.story +0 -23
  268. data/stories/stories/steps/multiline_steps.rb +0 -13
  269. data/stories/stories/stories.rb +0 -6
@@ -1,13 +0,0 @@
1
- class Adder
2
- def initialize
3
- @addends = []
4
- end
5
-
6
- def <<(val)
7
- @addends << val
8
- end
9
-
10
- def sum
11
- @addends.inject(0) { |sum_so_far, val| sum_so_far + val }
12
- end
13
- end
@@ -1,34 +0,0 @@
1
- This is a story about a calculator. The text up here above the Story: declaration
2
- won't be processed, so you can write whatever you wish!
3
-
4
- Story: simple addition
5
-
6
- As an accountant
7
- I want to add numbers
8
- So that I can count beans
9
-
10
- Scenario: add one plus one
11
- Given an addend of 1
12
- And an addend of 1
13
-
14
- When the addends are addeds
15
-
16
- Then the sum should be 3
17
- And the corks should be popped
18
-
19
- Scenario: add two plus five
20
- Given an addend of 2
21
- And an addend of 5
22
-
23
- When the addends are added
24
-
25
- Then the sum should be 7
26
- Then it should snow
27
-
28
- Scenario: add three more
29
- GivenScenario add two plus five
30
- And an addend of 3
31
-
32
- When the addends are added
33
-
34
- Then the sum should be 10
@@ -1,9 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "helper")
2
- require File.join(File.dirname(__FILE__), "adder")
3
-
4
- # with_steps_for :addition, :more_addition do
5
- with_steps_for :addition, :more_addition do
6
- # Then("the corks should be popped") { }
7
- run File.expand_path(__FILE__).gsub(".rb","")
8
- end
9
-
@@ -1,65 +0,0 @@
1
- $:.push File.join(File.dirname(__FILE__), *%w[.. .. lib])
2
- require 'spec'
3
-
4
- class AdditionMatchers < Spec::Story::StepGroup
5
- steps do |add|
6
- add.given("an addend of $addend") do |addend|
7
- @adder ||= Adder.new
8
- @adder << addend.to_i
9
- end
10
- end
11
- end
12
-
13
- steps = AdditionMatchers.new do |add|
14
- add.then("the sum should be $sum") do |sum|
15
- @sum.should == sum.to_i
16
- end
17
- end
18
-
19
- steps.when("they are added") do
20
- @sum = @adder.sum
21
- end
22
-
23
- # This Story uses steps (see above) instead of blocks
24
- # passed to Given, When and Then
25
-
26
- Story "addition", %{
27
- As an accountant
28
- I want to add numbers
29
- So that I can count some beans
30
- }, :steps_for => steps do
31
- Scenario "2 + 3" do
32
- Given "an addend of 2"
33
- And "an addend of 3"
34
- When "they are added"
35
- Then "the sum should be 5"
36
- end
37
-
38
- # This scenario uses GivenScenario, which silently runs
39
- # all the steps in a previous scenario.
40
-
41
- Scenario "add 4 more" do
42
- GivenScenario "2 + 3"
43
- Given "an addend of 4"
44
- When "they are added"
45
- Then "the sum should be 9"
46
- end
47
- end
48
-
49
- # And the class that makes the story pass
50
-
51
- class Adder
52
- def << addend
53
- addends << addend
54
- end
55
-
56
- def sum
57
- @addends.inject(0) do |result, addend|
58
- result + addend.to_i
59
- end
60
- end
61
-
62
- def addends
63
- @addends ||= []
64
- end
65
- end
@@ -1,5 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <loadpath>
3
- <pathentry path="" type="src"/>
4
- <pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con"/>
5
- </loadpath>
@@ -1,21 +0,0 @@
1
- John Conway's Game of Life
2
-
3
- The Rules
4
- ---------
5
- The Game of Life was invented by John Conway (as you might have gathered).
6
- The game is played on a field of cells, each of which has eight neighbors (adjacent cells).
7
- A cell is either occupied (by an organism) or not.
8
- The rules for deriving a generation from the previous one are these:
9
-
10
- Survival
11
- --------
12
- If an occupied cell has 2 or 3 neighbors, the organism survives to the next generation.
13
-
14
- Death
15
- -----
16
- If an occupied cell has 0, 1, 4, 5, 6, 7, or 8 occupied neighbors, the organism dies
17
- (0, 1: of loneliness; 4 thru 8: of overcrowding).
18
-
19
- Birth
20
- -----
21
- If an unoccupied cell has 3 occupied neighbors, it becomes occupied.
@@ -1,6 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
- $:.unshift File.join(File.dirname(__FILE__), '..')
3
-
4
- require 'spec'
5
- require 'behaviour/examples/examples'
6
- require 'behaviour/stories/stories'
@@ -1,3 +0,0 @@
1
- require 'spec'
2
- require 'behaviour/examples/game_behaviour'
3
- require 'behaviour/examples/grid_behaviour'
@@ -1,35 +0,0 @@
1
- require 'life'
2
-
3
- describe Game do
4
- it 'should have a grid' do
5
- # given
6
- game = Game.new(5, 5)
7
-
8
- # then
9
- game.grid.should be_kind_of(Grid)
10
- end
11
-
12
- it 'should create a cell' do
13
- # given
14
- game = Game.new(2, 2)
15
- expected_grid = Grid.from_string( 'X. ..' )
16
-
17
- # when
18
- game.create_at(0, 0)
19
-
20
- # then
21
- game.grid.should == expected_grid
22
- end
23
-
24
- it 'should destroy a cell' do
25
- # given
26
- game = Game.new(2,2)
27
- game.grid = Grid.from_string('X. ..')
28
-
29
- # when
30
- game.destroy_at(0,0)
31
-
32
- # then
33
- game.grid.should == Grid.from_string('.. ..')
34
- end
35
- end
@@ -1,66 +0,0 @@
1
- describe Grid do
2
- it 'should be empty when created' do
3
- # given
4
- expected_contents = [
5
- [0, 0, 0],
6
- [0, 0, 0]
7
- ]
8
- grid = Grid.new(2, 3)
9
-
10
- # when
11
- contents = grid.contents
12
-
13
- # then
14
- contents.should == expected_contents
15
- end
16
-
17
- it 'should compare equal based on its contents' do
18
- # given
19
- grid1 = Grid.new(2, 3)
20
- grid2 = Grid.new(2, 3)
21
-
22
- # then
23
- grid1.should == grid2
24
- end
25
-
26
- it 'should be able to replace its contents' do
27
- # given
28
- grid = Grid.new(2,2)
29
- new_contents = [[0,1,0], [1,0,1]]
30
-
31
- # when
32
- grid.contents = new_contents
33
-
34
- # then
35
- grid.contents.should == new_contents
36
- grid.rows.should == 2
37
- grid.columns.should == 3
38
- end
39
-
40
- it 'should add an organism' do
41
- # given
42
- grid = Grid.new(2, 2)
43
- expected = Grid.new(2, 2)
44
- expected.contents = [[1,0],[0,0]]
45
-
46
- # when
47
- grid.create_at(0,0)
48
-
49
- # then
50
- grid.should == expected
51
- end
52
-
53
- it 'should create itself from a string' do
54
- # given
55
- expected = Grid.new 3, 3
56
- expected.create_at(0,0)
57
- expected.create_at(1,0)
58
- expected.create_at(2,2)
59
-
60
- # when
61
- actual = Grid.from_string "X.. X.. ..X"
62
-
63
- # then
64
- actual.should == expected
65
- end
66
- end
@@ -1,21 +0,0 @@
1
- Story: cells with less than two neighbours die
2
-
3
- As a game producer
4
- I want cells with less than two neighbours to die
5
- So that I can illustrate how the game works to people with money
6
-
7
- Scenario: cells with zero or one neighbour die
8
-
9
- Given the grid looks like
10
- ........
11
- .XX.XX..
12
- .XX.....
13
- ....X...
14
- ........
15
- When the next step occurs
16
- Then the grid should look like
17
- ........
18
- .XX.....
19
- .XX.....
20
- ........
21
- ........
@@ -1,21 +0,0 @@
1
- Story: cells with more than three neighbours die
2
-
3
- As a game producer
4
- I want cells with more than three neighbours to die
5
- So that I can show the people with money how we are getting on
6
-
7
- Scenario: blink
8
-
9
- Given the grid looks like
10
- .....
11
- ...XX
12
- ...XX
13
- .XX..
14
- .XX..
15
- When the next step occurs
16
- Then the grid should look like
17
- .....
18
- ...XX
19
- ....X
20
- .X...
21
- .XX..
@@ -1,42 +0,0 @@
1
- Story: Empty spaces with three neighbours create a cell
2
-
3
- As a game producer
4
- I want empty cells with three neighbours to die
5
- So that I have a minimum feature set to ship
6
-
7
- Scenario: the glider
8
-
9
- Given the grid looks like
10
- ...X..
11
- ..X...
12
- ..XXX.
13
- ......
14
- ......
15
- When the next step occurs
16
- Then the grid should look like
17
- ......
18
- ..X.X.
19
- ..XX..
20
- ...X..
21
- ......
22
- When the next step occurs
23
- Then the grid should look like
24
- ......
25
- ..X...
26
- ..X.X.
27
- ..XX..
28
- ......
29
- When the next step occurs
30
- Then the grid should look like
31
- ......
32
- ...X..
33
- .XX...
34
- ..XX..
35
- ......
36
- When the next step occurs
37
- Then the grid should look like
38
- ......
39
- ..X...
40
- .X....
41
- .XXX..
42
- ......
@@ -1,42 +0,0 @@
1
- Story: I can create a cell
2
-
3
- As a game producer
4
- I want to create a cell
5
- So that I can show the grid to people
6
-
7
- Scenario: nothing to see here
8
-
9
- Given a 3 x 3 game
10
- Then the grid should look like
11
- ...
12
- ...
13
- ...
14
-
15
- Scenario: all on its lonesome
16
-
17
- Given a 3 x 3 game
18
- When I create a cell at 1, 1
19
- Then the grid should look like
20
- ...
21
- .X.
22
- ...
23
-
24
- Scenario: the grid has three cells
25
-
26
- Given a 3 x 3 game
27
- When I create a cell at 0, 0
28
- and I create a cell at 0, 1
29
- and I create a cell at 2, 2
30
- Then the grid should look like
31
- XX.
32
- ...
33
- ..X
34
-
35
- Scenario: more cells more more
36
-
37
- Given the grid has three cells
38
- When I create a celll at 3, 1
39
- Then the grid should look like
40
- XX.
41
- ..X
42
- ..X
@@ -1,17 +0,0 @@
1
- Story: I can kill a cell
2
-
3
- As a game producer
4
- I want to kill a cell
5
- So that when I make a mistake I dont have to start again
6
-
7
- Scenario: bang youre dead
8
-
9
- Given the grid looks like
10
- XX.
11
- .X.
12
- ..X
13
- When I destroy the cell at 0, 1
14
- Then the grid should look like
15
- X..
16
- .X.
17
- ..X
@@ -1,53 +0,0 @@
1
- Story: The grid wraps
2
-
3
- As a game player
4
- I want the grid to wrap
5
- So that untidy stuff at the edges is avoided
6
-
7
- Scenario: crowded in the corners
8
-
9
- Given the grid looks like
10
- X.X
11
- ...
12
- X.X
13
- When the next step is taken
14
- Then the grid should look like
15
- X.X
16
- ...
17
- X.X
18
-
19
-
20
- Scenario: the glider returns
21
-
22
- Given the glider
23
- ......
24
- ..X...
25
- .X....
26
- .XXX..
27
- ......
28
- When the next step is taken
29
- and the next step is taken
30
- and the next step is taken
31
- and the next step is taken
32
- Then the grid should look like
33
- ......
34
- ......
35
- .X....
36
- X.....
37
- XXX...
38
- When the next step is taken
39
- Then the grid should look like
40
- .X....
41
- ......
42
- ......
43
- X.X...
44
- XX....
45
- When the next step is taken
46
- Then the grid should look like
47
- XX....
48
- ......
49
- ......
50
- X.....
51
- X.X...
52
-
53
-