rspec 1.0.8 → 1.1.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.
- data/CHANGES +122 -2
- data/README +10 -9
- data/Rakefile +22 -49
- data/TODO +2 -0
- data/bin/spec +1 -1
- data/bin/spec_translator +8 -8
- data/examples/{auto_spec_description_example.rb → pure/autogenerated_docstrings_example.rb} +0 -0
- data/examples/{before_and_after_example.rb → pure/before_and_after_example.rb} +1 -0
- data/examples/{behave_as_example.rb → pure/behave_as_example.rb} +0 -0
- data/examples/{custom_expectation_matchers.rb → pure/custom_expectation_matchers.rb} +0 -0
- data/examples/{custom_formatter.rb → pure/custom_formatter.rb} +1 -0
- data/examples/{dynamic_spec.rb → pure/dynamic_spec.rb} +0 -0
- data/examples/{file_accessor.rb → pure/file_accessor.rb} +1 -0
- data/examples/{file_accessor_spec.rb → pure/file_accessor_spec.rb} +0 -0
- data/examples/{greeter_spec.rb → pure/greeter_spec.rb} +1 -0
- data/examples/{helper_method_example.rb → pure/helper_method_example.rb} +0 -0
- data/examples/{io_processor.rb → pure/io_processor.rb} +0 -0
- data/examples/{io_processor_spec.rb → pure/io_processor_spec.rb} +0 -0
- data/examples/{legacy_spec.rb → pure/legacy_spec.rb} +1 -0
- data/examples/{mocking_example.rb → pure/mocking_example.rb} +0 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/{partial_mock_example.rb → pure/partial_mock_example.rb} +0 -0
- data/examples/{pending_example.rb → pure/pending_example.rb} +0 -0
- data/examples/{predicate_example.rb → pure/predicate_example.rb} +0 -0
- data/examples/{priority.txt → pure/priority.txt} +0 -0
- data/examples/pure/shared_example_group_example.rb +66 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/{stack.rb → pure/stack.rb} +0 -0
- data/examples/{stack_spec.rb → pure/stack_spec.rb} +1 -35
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/{stubbing_example.rb → pure/stubbing_example.rb} +0 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/lib/autotest/rspec.rb +1 -2
- data/lib/spec.rb +30 -6
- data/lib/spec/example.rb +12 -0
- data/lib/spec/{dsl → example}/configuration.rb +48 -39
- data/lib/spec/{dsl → example}/errors.rb +2 -2
- data/lib/spec/example/example_group.rb +16 -0
- data/lib/spec/example/example_group_factory.rb +62 -0
- data/lib/spec/example/example_group_methods.rb +412 -0
- data/lib/spec/example/example_matcher.rb +42 -0
- data/lib/spec/example/example_methods.rb +101 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +58 -0
- data/lib/spec/expectations/differs/default.rb +15 -10
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/object.rb +12 -7
- data/lib/spec/expectations/handler.rb +13 -4
- data/lib/spec/extensions.rb +2 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +54 -0
- data/lib/spec/extensions/object.rb +5 -1
- data/lib/spec/interop/test.rb +10 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +61 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +60 -0
- data/lib/spec/matchers.rb +11 -15
- data/lib/spec/matchers/be.rb +23 -6
- data/lib/spec/matchers/change.rb +25 -1
- data/lib/spec/matchers/exist.rb +17 -0
- data/lib/spec/matchers/operator_matcher.rb +1 -0
- data/lib/spec/matchers/simple_matcher.rb +29 -0
- data/lib/spec/matchers/throw_symbol.rb +2 -0
- data/lib/spec/mocks.rb +5 -2
- data/lib/spec/mocks/argument_expectation.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +62 -44
- data/lib/spec/mocks/methods.rb +2 -2
- data/lib/spec/mocks/mock.rb +24 -3
- data/lib/spec/mocks/proxy.rb +26 -23
- data/lib/spec/mocks/space.rb +1 -1
- data/lib/spec/mocks/spec_methods.rb +20 -12
- data/lib/spec/rake/spectask.rb +19 -1
- data/lib/spec/rake/verify_rcov.rb +1 -1
- data/lib/spec/runner.rb +33 -10
- data/lib/spec/runner/backtrace_tweaker.rb +3 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +18 -12
- data/lib/spec/runner/drb_command_line.rb +4 -5
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +10 -8
- data/lib/spec/runner/formatter/base_text_formatter.rb +18 -18
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +31 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +3 -5
- data/lib/spec/runner/formatter/html_formatter.rb +37 -27
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +3 -4
- data/lib/spec/runner/formatter/specdoc_formatter.rb +27 -13
- data/lib/spec/runner/formatter/story/html_formatter.rb +124 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +123 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +9 -9
- data/lib/spec/runner/option_parser.rb +140 -138
- data/lib/spec/runner/options.rb +168 -90
- data/lib/spec/runner/reporter.rb +58 -40
- data/lib/spec/runner/spec_parser.rb +11 -8
- data/lib/spec/story.rb +10 -0
- data/lib/spec/story/extensions.rb +1 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner.rb +58 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +46 -0
- data/lib/spec/story/runner/story_mediator.rb +123 -0
- data/lib/spec/story/runner/story_parser.rb +227 -0
- data/lib/spec/story/runner/story_runner.rb +67 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +48 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +37 -0
- data/lib/spec/story/story.rb +42 -0
- data/lib/spec/story/world.rb +124 -0
- data/lib/spec/version.rb +4 -5
- data/plugins/mock_frameworks/rspec.rb +1 -1
- data/spec/autotest/rspec_spec.rb +13 -7
- data/spec/autotest_helper.rb +4 -3
- data/spec/rspec_suite.rb +7 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/example/configuration_spec.rb +290 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +129 -0
- data/spec/spec/example/example_group_methods_spec.rb +465 -0
- data/spec/spec/example/example_group_spec.rb +711 -0
- data/spec/spec/{dsl → example}/example_matcher_spec.rb +23 -18
- data/spec/spec/example/example_methods_spec.rb +75 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/example_spec.rb +53 -0
- data/spec/spec/example/nested_example_group_spec.rb +59 -0
- data/spec/spec/example/pending_module_spec.rb +31 -0
- data/spec/spec/{dsl → example}/predicate_matcher_spec.rb +1 -1
- data/spec/spec/example/shared_example_group_spec.rb +265 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +5 -3
- data/spec/spec/expectations/extensions/object_spec.rb +63 -2
- data/spec/spec/extensions/main_spec.rb +50 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +10 -0
- data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +20 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +34 -0
- data/spec/spec/matchers/be_spec.rb +15 -0
- data/spec/spec/matchers/change_spec.rb +87 -0
- data/spec/spec/matchers/description_generation_spec.rb +31 -37
- data/spec/spec/matchers/exist_spec.rb +31 -22
- data/spec/spec/matchers/handler_spec.rb +42 -1
- data/spec/spec/matchers/have_spec.rb +1 -1
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +1 -1
- data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +31 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +4 -1
- data/spec/spec/mocks/bug_report_10263.rb +24 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +2 -2
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +1 -0
- data/spec/spec/mocks/mock_spec.rb +200 -102
- data/spec/spec/mocks/multiple_return_value_spec.rb +1 -1
- data/spec/spec/mocks/options_hash_spec.rb +19 -7
- data/spec/spec/mocks/partial_mock_spec.rb +31 -9
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
- data/spec/spec/mocks/stub_spec.rb +120 -98
- data/spec/spec/package/bin_spec_spec.rb +7 -5
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +140 -27
- data/spec/spec/runner/drb_command_line_spec.rb +39 -31
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +44 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +16 -11
- data/spec/spec/runner/formatter/html_formatter_spec.rb +60 -50
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +29 -13
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +103 -39
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +56 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +289 -0
- data/spec/spec/runner/heckle_runner_spec.rb +29 -14
- data/spec/spec/runner/heckler_spec.rb +4 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +5 -5
- data/spec/spec/runner/option_parser_spec.rb +86 -58
- data/spec/spec/runner/options_spec.rb +239 -120
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +6 -6
- data/spec/spec/runner/reporter_spec.rb +147 -163
- data/spec/spec/runner/spec_parser_spec.rb +31 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +12 -5
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +92 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +142 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +133 -0
- data/spec/spec/story/runner/story_parser_spec.rb +384 -0
- data/spec/spec/story/runner/story_runner_spec.rb +219 -0
- data/spec/spec/story/runner_spec.rb +106 -0
- data/spec/spec/story/scenario_spec.rb +20 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +72 -0
- data/spec/spec/story/step_spec.rb +147 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +86 -0
- data/spec/spec/story/world_spec.rb +416 -0
- data/spec/spec/translator_spec.rb +2 -1
- data/spec/spec_helper.rb +59 -2
- data/stories/all.rb +5 -0
- data/stories/example_groups/autogenerated_docstrings +26 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +20 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- metadata +232 -106
- data/EXAMPLES.rd +0 -111
- data/examples/multi_threaded_behaviour_runner.rb +0 -25
- data/examples/shared_behaviours_example.rb +0 -39
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl.rb +0 -11
- data/lib/spec/dsl/behaviour.rb +0 -220
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -82
- data/lib/spec/dsl/behaviour_eval.rb +0 -231
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -33
- data/lib/spec/dsl/description.rb +0 -76
- data/lib/spec/dsl/example.rb +0 -135
- data/lib/spec/dsl/example_matcher.rb +0 -40
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/runner/behaviour_runner.rb +0 -123
- data/lib/spec/runner/extensions/kernel.rb +0 -50
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -29
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/test_case_adapter.rb +0 -10
- data/spec/spec/dsl/behaviour_eval_spec.rb +0 -79
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -48
- data/spec/spec/dsl/behaviour_spec.rb +0 -661
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -44
- data/spec/spec/dsl/configuration_spec.rb +0 -55
- data/spec/spec/dsl/description_spec.rb +0 -89
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -160
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -252
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -229
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/extensions/bug_report_10577_spec.rb +0 -35
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -40
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -20
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
@@ -0,0 +1,21 @@
|
|
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
|
+
........
|
data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story
ADDED
@@ -0,0 +1,21 @@
|
|
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..
|
data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story
ADDED
@@ -0,0 +1,42 @@
|
|
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
|
+
......
|
@@ -0,0 +1,42 @@
|
|
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
|
@@ -0,0 +1,17 @@
|
|
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
|
@@ -0,0 +1,53 @@
|
|
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
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[helper])
|
2
|
+
|
3
|
+
Story "I can create a cell",
|
4
|
+
%(As a game producer
|
5
|
+
I want to create a cell
|
6
|
+
So that I can show the grid to people), :steps_for => :life do
|
7
|
+
|
8
|
+
Scenario "nothing to see here" do
|
9
|
+
Given "a game with dimensions", 3, 3 do |rows,cols|
|
10
|
+
@game = Game.new(rows,cols)
|
11
|
+
end
|
12
|
+
|
13
|
+
Then "the grid should look like", %(
|
14
|
+
...
|
15
|
+
...
|
16
|
+
...
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
Scenario "all on its lonesome" do
|
21
|
+
Given "a game with dimensions", 2, 2
|
22
|
+
When "I create a cell at", 1, 1 do |row,col|
|
23
|
+
@game.create_at(row,col)
|
24
|
+
end
|
25
|
+
Then "the grid should look like", %(
|
26
|
+
..
|
27
|
+
.X
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
Scenario "the grid has three cells" do
|
32
|
+
Given "a game with dimensions", 3, 3
|
33
|
+
When "I create a cell at", 0, 0
|
34
|
+
When "I create a cell at", 0, 1
|
35
|
+
When "I create a cell at", 2, 2
|
36
|
+
Then "the grid should look like", %(
|
37
|
+
XX.
|
38
|
+
...
|
39
|
+
..X
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
Scenario "more cells more more" do
|
44
|
+
GivenScenario "the grid has three cells"
|
45
|
+
When "I create a cell at", 2, 0
|
46
|
+
Then "the grid should look like", %(
|
47
|
+
XX.
|
48
|
+
...
|
49
|
+
X.X
|
50
|
+
)
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[helper])
|
2
|
+
|
3
|
+
Story 'I can kill a cell',
|
4
|
+
%(As a game producer
|
5
|
+
I want to kill a cell
|
6
|
+
So that when I make a mistake I don't have to start again), :steps_for => :life do
|
7
|
+
|
8
|
+
Scenario "bang, you're dead" do
|
9
|
+
|
10
|
+
Given 'a game that looks like', %(
|
11
|
+
XX.
|
12
|
+
.X.
|
13
|
+
..X
|
14
|
+
) do |dots|
|
15
|
+
@game = Game.from_string dots
|
16
|
+
end
|
17
|
+
When 'I destroy the cell at', 0, 1 do |row,col|
|
18
|
+
@game.destroy_at(row,col)
|
19
|
+
end
|
20
|
+
Then 'the grid should look like', %(
|
21
|
+
X..
|
22
|
+
.X.
|
23
|
+
..X
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Story: Show the game field
|
2
|
+
As a game player
|
3
|
+
I want to see the field
|
4
|
+
so that I can observe the progress of the organisms
|
5
|
+
|
6
|
+
Scenario: an empty field
|
7
|
+
Given a new game starts
|
8
|
+
When the game displays the field
|
9
|
+
Then the field should be empty
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
StoryBuilder story = stories.createStory().called("a story")
|
16
|
+
.asA("person")
|
17
|
+
.iWant("to do something")
|
18
|
+
.soThat("I can rule the world");
|
19
|
+
story.addScenario().called("happy path").as()
|
20
|
+
.given("some context")
|
21
|
+
.when("some event happens")
|
22
|
+
.then("expect some outcome");
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Game
|
2
|
+
attr_accessor :grid
|
3
|
+
def initialize(rows,cols)
|
4
|
+
@grid = Grid.new(rows, cols)
|
5
|
+
end
|
6
|
+
|
7
|
+
def create_at(row,col)
|
8
|
+
@grid.create_at(row,col)
|
9
|
+
end
|
10
|
+
|
11
|
+
def destroy_at(row,col)
|
12
|
+
@grid.destroy_at(row, col)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.from_string(dots)
|
16
|
+
grid = Grid.from_string(dots)
|
17
|
+
game = new(grid.rows, grid.columns)
|
18
|
+
game.instance_eval do
|
19
|
+
@grid = grid
|
20
|
+
end
|
21
|
+
return game
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class Grid
|
2
|
+
|
3
|
+
attr_accessor :contents
|
4
|
+
|
5
|
+
def initialize(rows, cols)
|
6
|
+
@contents = []
|
7
|
+
rows.times do @contents << [0] * cols end
|
8
|
+
end
|
9
|
+
|
10
|
+
def rows
|
11
|
+
@contents.size
|
12
|
+
end
|
13
|
+
|
14
|
+
def columns
|
15
|
+
@contents[0].size
|
16
|
+
end
|
17
|
+
|
18
|
+
def ==(other)
|
19
|
+
self.contents == other.contents
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_at(row,col)
|
23
|
+
@contents[row][col] = 1
|
24
|
+
end
|
25
|
+
|
26
|
+
def destroy_at(row,col)
|
27
|
+
@contents[row][col] = 0
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.from_string(str)
|
31
|
+
row_strings = str.split(' ')
|
32
|
+
grid = new(row_strings.size, row_strings[0].size)
|
33
|
+
|
34
|
+
row_strings.each_with_index do |row, row_index|
|
35
|
+
row_chars = row.split(//)
|
36
|
+
row_chars.each_with_index do |col_char, col_index|
|
37
|
+
grid.create_at(row_index, col_index) if col_char == 'X'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
return grid
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
require 'spec/story'
|
3
|
+
|
4
|
+
# won't have to do this once plain_text_story_runner is moved into the library
|
5
|
+
# require File.join(File.dirname(__FILE__), "plain_text_story_runner")
|
6
|
+
|
7
|
+
Dir[File.join(File.dirname(__FILE__), "steps/*.rb")].each do |file|
|
8
|
+
require file
|
9
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../helper")
|
2
|
+
|
3
|
+
# This creates steps for :addition
|
4
|
+
steps_for(:addition) do
|
5
|
+
Given("an addend of $addend") do |addend|
|
6
|
+
@adder ||= Adder.new
|
7
|
+
@adder << addend.to_i
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# This appends to them
|
12
|
+
steps_for(:addition) do
|
13
|
+
When("the addends are added") { @sum = @adder.sum }
|
14
|
+
end
|
15
|
+
|
16
|
+
steps_for(:more_addition) do
|
17
|
+
Then("the sum should be $sum") { |sum| @sum.should == sum.to_i }
|
18
|
+
end
|
data/lib/autotest/rspec.rb
CHANGED
@@ -76,7 +76,6 @@ class Autotest::Rspec < Autotest
|
|
76
76
|
return @alt_separator ? (command.gsub @separator, @alt_separator) : command
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
80
79
|
raise RspecCommandError, "No spec command could be found!"
|
81
80
|
end
|
82
81
|
|
@@ -87,7 +86,7 @@ class Autotest::Rspec < Autotest
|
|
87
86
|
# * default spec bin/loader installed in Rubygems
|
88
87
|
def spec_commands
|
89
88
|
[
|
90
|
-
File.join('bin', 'spec'),
|
89
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec')),
|
91
90
|
File.join(Config::CONFIG['bindir'], 'spec')
|
92
91
|
]
|
93
92
|
end
|