newbamboo-rspec 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.
- data/.autotest +4 -0
- data/History.txt +1263 -0
- data/License.txt +22 -0
- data/Manifest.txt +327 -0
- data/README.txt +57 -0
- data/Rakefile +104 -0
- data/TODO.txt +18 -0
- data/bin/autospec +4 -0
- data/bin/spec +4 -0
- data/examples/failing/README.txt +7 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_autogenerated_docstrings_example.rb +19 -0
- data/examples/failing/failure_in_after.rb +10 -0
- data/examples/failing/failure_in_before.rb +10 -0
- data/examples/failing/mocking_example.rb +40 -0
- data/examples/failing/mocking_with_flexmock.rb +26 -0
- data/examples/failing/mocking_with_mocha.rb +25 -0
- data/examples/failing/mocking_with_rr.rb +27 -0
- data/examples/failing/partial_mock_example.rb +20 -0
- data/examples/failing/predicate_example.rb +34 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/spec_helper.rb +3 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +44 -0
- data/examples/failing/timeout_behaviour.rb +7 -0
- data/examples/passing/autogenerated_docstrings_example.rb +25 -0
- data/examples/passing/before_and_after_example.rb +40 -0
- data/examples/passing/behave_as_example.rb +45 -0
- data/examples/passing/custom_expectation_matchers.rb +54 -0
- data/examples/passing/custom_formatter.rb +12 -0
- data/examples/passing/dynamic_spec.rb +9 -0
- data/examples/passing/file_accessor.rb +19 -0
- data/examples/passing/file_accessor_spec.rb +38 -0
- data/examples/passing/greeter_spec.rb +31 -0
- data/examples/passing/helper_method_example.rb +14 -0
- data/examples/passing/io_processor.rb +8 -0
- data/examples/passing/io_processor_spec.rb +21 -0
- data/examples/passing/legacy_spec.rb +11 -0
- data/examples/passing/mocking_example.rb +27 -0
- data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
- data/examples/passing/nested_classes_example.rb +36 -0
- data/examples/passing/partial_mock_example.rb +29 -0
- data/examples/passing/pending_example.rb +20 -0
- data/examples/passing/predicate_example.rb +27 -0
- data/examples/passing/priority.txt +1 -0
- data/examples/passing/shared_example_group_example.rb +81 -0
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +31 -0
- data/examples/passing/spec_helper.rb +3 -0
- data/examples/passing/stack.rb +36 -0
- data/examples/passing/stack_spec.rb +64 -0
- data/examples/passing/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/passing/stubbing_example.rb +69 -0
- data/examples/passing/yielding_example.rb +33 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
- data/features/example_groups/autogenerated_docstrings.feature +45 -0
- data/features/example_groups/example_group_with_should_methods.feature +17 -0
- data/features/example_groups/nested_groups.feature +17 -0
- data/features/example_groups/output.feature +20 -0
- data/features/interop/examples_and_tests_together.feature +31 -0
- data/features/interop/test_but_not_test_unit.feature +14 -0
- data/features/interop/test_case_with_should_methods.feature +17 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/step_definitions/running_rspec.rb +54 -0
- data/features/support/env.rb +26 -0
- data/features/support/helpers/cmdline.rb +9 -0
- data/features/support/matchers/smart_match.rb +37 -0
- data/init.rb +9 -0
- data/lib/adapters/mock_frameworks/flexmock.rb +24 -0
- data/lib/adapters/mock_frameworks/mocha.rb +20 -0
- data/lib/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/adapters/mock_frameworks/rspec.rb +20 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +47 -0
- data/lib/spec/dsl/main.rb +87 -0
- data/lib/spec/dsl.rb +1 -0
- data/lib/spec/example/before_and_after_hooks.rb +99 -0
- data/lib/spec/example/errors.rb +30 -0
- data/lib/spec/example/example_group.rb +26 -0
- data/lib/spec/example/example_group_factory.rb +98 -0
- data/lib/spec/example/example_group_methods.rb +376 -0
- data/lib/spec/example/example_matcher.rb +44 -0
- data/lib/spec/example/example_methods.rb +137 -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 +59 -0
- data/lib/spec/example.rb +187 -0
- data/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/extensions.rb +2 -0
- data/lib/spec/expectations/handler.rb +32 -0
- data/lib/spec/expectations.rb +60 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +73 -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 +61 -0
- data/lib/spec/interop/test.rb +12 -0
- data/lib/spec/matchers/be.rb +208 -0
- data/lib/spec/matchers/be_close.rb +21 -0
- data/lib/spec/matchers/change.rb +148 -0
- data/lib/spec/matchers/eql.rb +25 -0
- data/lib/spec/matchers/equal.rb +25 -0
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +48 -0
- data/lib/spec/matchers/has.rb +15 -0
- data/lib/spec/matchers/have.rb +150 -0
- data/lib/spec/matchers/include.rb +80 -0
- data/lib/spec/matchers/match.rb +22 -0
- data/lib/spec/matchers/match_array.rb +79 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +70 -0
- data/lib/spec/matchers/raise_error.rb +128 -0
- data/lib/spec/matchers/respond_to.rb +71 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/spec/matchers/throw_symbol.rb +106 -0
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +141 -0
- data/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +82 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/spec/mocks/methods.rb +51 -0
- data/lib/spec/mocks/mock.rb +55 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +230 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +55 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/rake/spectask.rb +225 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +58 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +35 -0
- data/lib/spec/runner/configuration.rb +166 -0
- data/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/spec/runner/example_group_runner.rb +70 -0
- data/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +127 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +340 -0
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +74 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/option_parser.rb +204 -0
- data/lib/spec/runner/options.rb +320 -0
- data/lib/spec/runner/reporter.rb +167 -0
- data/lib/spec/runner/spec_parser.rb +73 -0
- data/lib/spec/runner.rb +88 -0
- data/lib/spec/version.rb +15 -0
- data/lib/spec.rb +7 -0
- data/resources/rake/examples.rake +7 -0
- data/resources/rake/examples_with_rcov.rake +9 -0
- data/resources/rake/failing_examples_with_html.rake +9 -0
- data/resources/rake/verify_rcov.rake +7 -0
- data/resources/spec/example_group_with_should_methods.rb +12 -0
- data/resources/spec/simple_spec.rb +8 -0
- data/resources/test/spec_and_test_together.rb +57 -0
- data/resources/test/spec_including_test_but_not_unit.rb +11 -0
- data/resources/test/test_case_with_should_methods.rb +30 -0
- data/rspec.gemspec +32 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +6 -0
- data/spec/autotest/autotest_matchers.rb +47 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +24 -0
- data/spec/autotest/rspec_spec.rb +114 -0
- data/spec/rspec_suite.rb +6 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +88 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +49 -0
- data/spec/spec/example/example_group_factory_spec.rb +224 -0
- data/spec/spec/example/example_group_methods_spec.rb +653 -0
- data/spec/spec/example/example_group_spec.rb +661 -0
- data/spec/spec/example/example_matcher_spec.rb +79 -0
- data/spec/spec/example/example_methods_spec.rb +204 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/spec/spec/example/pending_module_spec.rb +139 -0
- data/spec/spec/example/predicate_matcher_spec.rb +21 -0
- data/spec/spec/example/shared_example_group_spec.rb +257 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +127 -0
- data/spec/spec/expectations/extensions/object_spec.rb +45 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +41 -0
- data/spec/spec/matchers/be_spec.rb +303 -0
- data/spec/spec/matchers/change_spec.rb +329 -0
- data/spec/spec/matchers/description_generation_spec.rb +172 -0
- data/spec/spec/matchers/eql_spec.rb +29 -0
- data/spec/spec/matchers/equal_spec.rb +29 -0
- data/spec/spec/matchers/exist_spec.rb +57 -0
- data/spec/spec/matchers/handler_spec.rb +111 -0
- data/spec/spec/matchers/has_spec.rb +63 -0
- data/spec/spec/matchers/have_spec.rb +399 -0
- data/spec/spec/matchers/include_spec.rb +88 -0
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +66 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/spec/spec/matchers/raise_error_spec.rb +333 -0
- data/spec/spec/matchers/respond_to_spec.rb +116 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +96 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496.rb +19 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +579 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +194 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/package/bin_spec_spec.rb +22 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +141 -0
- data/spec/spec/runner/configuration_spec.rb +301 -0
- data/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +33 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +62 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +145 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +104 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +20 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/option_parser_spec.rb +396 -0
- data/spec/spec/runner/options_spec.rb +469 -0
- 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 +62 -0
- data/spec/spec/runner/reporter_spec.rb +238 -0
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +91 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +133 -0
- data/spec/spec/spec_spec.rb +21 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +107 -0
- metadata +388 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_FLEXMOCK_EXAMPLE=true ruby ../bin/spec mocking_with_flexmock.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_FLEXMOCK_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_with :flexmock
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "Flexmocks" do
|
|
15
|
+
it "should fail when the expected message is received with wrong arguments" do
|
|
16
|
+
m = flexmock("now flex!")
|
|
17
|
+
m.should_receive(:msg).with("arg").once
|
|
18
|
+
m.msg("other arg")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should fail when the expected message is not received at all" do
|
|
22
|
+
m = flexmock("now flex!")
|
|
23
|
+
m.should_receive(:msg).with("arg").once
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_MOCHA_EXAMPLE=true ruby ../bin/spec mocking_with_mocha.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_MOCHA_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_with :mocha
|
|
12
|
+
end
|
|
13
|
+
describe "Mocha framework" do
|
|
14
|
+
it "should should be made available by saying config.mock_with :mocha" do
|
|
15
|
+
m = mock()
|
|
16
|
+
m.expects(:msg).with("arg")
|
|
17
|
+
m.msg
|
|
18
|
+
end
|
|
19
|
+
it "should should be made available by saying config.mock_with :mocha" do
|
|
20
|
+
o = Object.new
|
|
21
|
+
o.expects(:msg).with("arg")
|
|
22
|
+
o.msg
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_RR_EXAMPLE=true ruby ../bin/spec mocking_with_rr.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_RR_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_with :rr
|
|
12
|
+
end
|
|
13
|
+
describe "RR framework" do
|
|
14
|
+
it "should should be made available by saying config.mock_with :rr" do
|
|
15
|
+
o = Object.new
|
|
16
|
+
mock(o).msg("arg")
|
|
17
|
+
o.msg
|
|
18
|
+
end
|
|
19
|
+
it "should should be made available by saying config.mock_with :rr" do
|
|
20
|
+
o = Object.new
|
|
21
|
+
mock(o) do |m|
|
|
22
|
+
m.msg("arg")
|
|
23
|
+
end
|
|
24
|
+
o.msg
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
class MockableClass
|
|
4
|
+
def self.find id
|
|
5
|
+
return :original_return
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "A partial mock" do
|
|
10
|
+
|
|
11
|
+
it "should work at the class level (but fail here due to the type mismatch)" do
|
|
12
|
+
MockableClass.should_receive(:find).with(1).and_return {:stub_return}
|
|
13
|
+
MockableClass.find("1").should equal(:stub_return)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should revert to the original after each spec" do
|
|
17
|
+
MockableClass.find(1).should equal(:original_return)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
class BddFramework
|
|
4
|
+
def intuitive?
|
|
5
|
+
true
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def adopted_quickly?
|
|
9
|
+
#this will cause failures because it reallly SHOULD be adopted quickly
|
|
10
|
+
false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "BDD framework" do
|
|
15
|
+
|
|
16
|
+
before(:each) do
|
|
17
|
+
@bdd_framework = BddFramework.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should be adopted quickly" do
|
|
21
|
+
#this will fail because it reallly SHOULD be adopted quickly
|
|
22
|
+
@bdd_framework.should be_adopted_quickly
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should be intuitive" do
|
|
26
|
+
@bdd_framework.should be_intuitive
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should not respond to test" do
|
|
30
|
+
#this will fail
|
|
31
|
+
@bdd_framework.test
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
describe "This example" do
|
|
2
|
+
|
|
3
|
+
it "should show that a NoMethodError is raised but an Exception was expected" do
|
|
4
|
+
proc { ''.nonexistent_method }.should raise_error
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
it "should pass" do
|
|
8
|
+
proc { ''.nonexistent_method }.should raise_error(NoMethodError)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should show that a NoMethodError is raised but a SyntaxError was expected" do
|
|
12
|
+
proc { ''.nonexistent_method }.should raise_error(SyntaxError)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should show that nothing is raised when SyntaxError was expected" do
|
|
16
|
+
proc { }.should raise_error(SyntaxError)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should show that a NoMethodError is raised but a Exception was expected" do
|
|
20
|
+
proc { ''.nonexistent_method }.should_not raise_error
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should show that a NoMethodError is raised" do
|
|
24
|
+
proc { ''.nonexistent_method }.should_not raise_error(NoMethodError)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should also pass" do
|
|
28
|
+
proc { ''.nonexistent_method }.should_not raise_error(SyntaxError)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should show that a NoMethodError is raised when nothing expected" do
|
|
32
|
+
proc { ''.nonexistent_method }.should_not raise_error(Exception)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should show that the wrong message was received" do
|
|
36
|
+
proc { raise StandardError.new("what is an enterprise?") }.should raise_error(StandardError, "not this")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should show that the unexpected error/message was thrown" do
|
|
40
|
+
proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "abc")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should pass too" do
|
|
44
|
+
proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "xyz")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Team
|
|
5
|
+
attr_reader :players
|
|
6
|
+
def initialize
|
|
7
|
+
@players = Players.new
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Players
|
|
12
|
+
def initialize
|
|
13
|
+
@players = []
|
|
14
|
+
end
|
|
15
|
+
def size
|
|
16
|
+
@players.size
|
|
17
|
+
end
|
|
18
|
+
def include? player
|
|
19
|
+
raise "player must be a string" unless player.is_a?(String)
|
|
20
|
+
@players.include? player
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe "A new team" do
|
|
25
|
+
|
|
26
|
+
before(:each) do
|
|
27
|
+
@team = Team.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should have 3 players (failing example)" do
|
|
31
|
+
@team.should have(3).players
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should include some player (failing example)" do
|
|
35
|
+
@team.players.should include("Some Player")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should include 5 (failing example)" do
|
|
39
|
+
@team.players.should include(5)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should have no players"
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
# Run spec w/ -fs to see the output of this file
|
|
4
|
+
|
|
5
|
+
describe "Examples with no descriptions" do
|
|
6
|
+
|
|
7
|
+
# description is auto-generated as "should equal(5)" based on the last #should
|
|
8
|
+
specify do
|
|
9
|
+
3.should equal(3)
|
|
10
|
+
5.should equal(5)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
specify { 3.should be < 5 }
|
|
14
|
+
|
|
15
|
+
specify { ["a"].should include("a") }
|
|
16
|
+
|
|
17
|
+
specify { [1,2,3].should respond_to(:size) }
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "the number 1" do
|
|
22
|
+
subject { 1 }
|
|
23
|
+
it { should == 1 }
|
|
24
|
+
it { should be < 2}
|
|
25
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
$global = 0
|
|
3
|
+
|
|
4
|
+
describe "State created in before(:all)" do
|
|
5
|
+
before :all do
|
|
6
|
+
@sideeffect = 1
|
|
7
|
+
$global +=1
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before :each do
|
|
11
|
+
@isolated = 1
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should be accessible from example" do
|
|
15
|
+
@sideeffect.should == 1
|
|
16
|
+
$global.should == 1
|
|
17
|
+
@isolated.should == 1
|
|
18
|
+
|
|
19
|
+
@sideeffect += 1
|
|
20
|
+
@isolated += 1
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should not have sideffects" do
|
|
24
|
+
@sideeffect.should == 1
|
|
25
|
+
$global.should == 2
|
|
26
|
+
@isolated.should == 1
|
|
27
|
+
|
|
28
|
+
@sideeffect += 1
|
|
29
|
+
@isolated += 1
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
after :each do
|
|
33
|
+
$global += 1
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
after :all do
|
|
37
|
+
$global.should == 3
|
|
38
|
+
$global = 0
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
def behave_as_electric_musician
|
|
4
|
+
respond_to(:read_notes, :turn_down_amp)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def behave_as_musician
|
|
8
|
+
respond_to(:read_notes)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module BehaveAsExample
|
|
12
|
+
|
|
13
|
+
class BluesGuitarist
|
|
14
|
+
def read_notes; end
|
|
15
|
+
def turn_down_amp; end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class RockGuitarist
|
|
19
|
+
def read_notes; end
|
|
20
|
+
def turn_down_amp; end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class ClassicGuitarist
|
|
24
|
+
def read_notes; end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe BluesGuitarist do
|
|
28
|
+
it "should behave as guitarist" do
|
|
29
|
+
BluesGuitarist.new.should behave_as_electric_musician
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe RockGuitarist do
|
|
34
|
+
it "should behave as guitarist" do
|
|
35
|
+
RockGuitarist.new.should behave_as_electric_musician
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe ClassicGuitarist do
|
|
40
|
+
it "should not behave as guitarist" do
|
|
41
|
+
ClassicGuitarist.new.should behave_as_musician
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module AnimalSpecHelper
|
|
2
|
+
class Eat
|
|
3
|
+
def initialize(food)
|
|
4
|
+
@food = food
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def matches?(animal)
|
|
8
|
+
@animal = animal
|
|
9
|
+
@animal.eats?(@food)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def failure_message
|
|
13
|
+
"expected #{@animal} to eat #{@food}, but it does not"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def negative_failure_message
|
|
17
|
+
"expected #{@animal} not to eat #{@food}, but it does"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def eat(food)
|
|
22
|
+
Eat.new(food)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
module Animals
|
|
27
|
+
class Animal
|
|
28
|
+
def eats?(food)
|
|
29
|
+
return foods_i_eat.include?(food)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class Mouse < Animal
|
|
34
|
+
def foods_i_eat
|
|
35
|
+
[:cheese]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe Mouse do
|
|
40
|
+
include AnimalSpecHelper
|
|
41
|
+
before(:each) do
|
|
42
|
+
@mouse = Animals::Mouse.new
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should eat cheese" do
|
|
46
|
+
@mouse.should eat(:cheese)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should not eat cat" do
|
|
50
|
+
@mouse.should_not eat(:cat)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
require 'spec/runner/formatter/progress_bar_formatter'
|
|
3
|
+
|
|
4
|
+
# Example of a formatter with custom bactrace printing. Run me with:
|
|
5
|
+
# ruby bin/spec examples/failing -r examples/passing/custom_formatter.rb -f CustomFormatter
|
|
6
|
+
class CustomFormatter < Spec::Runner::Formatter::ProgressBarFormatter
|
|
7
|
+
def backtrace_line(line)
|
|
8
|
+
line.gsub(/([^:]*\.rb):(\d*)/) do
|
|
9
|
+
"<a href=\"file://#{File.expand_path($1)}\">#{$1}:#{$2}</a> "
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
class FileAccessor
|
|
3
|
+
def open_and_handle_with(pathname, processor)
|
|
4
|
+
pathname.open do |io|
|
|
5
|
+
processor.process(io)
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
if __FILE__ == $0
|
|
11
|
+
require File.dirname(__FILE__) + '/io_processor'
|
|
12
|
+
require 'pathname'
|
|
13
|
+
|
|
14
|
+
accessor = FileAccessor.new
|
|
15
|
+
io_processor = IoProcessor.new
|
|
16
|
+
file = Pathname.new ARGV[0]
|
|
17
|
+
|
|
18
|
+
accessor.open_and_handle_with(file, io_processor)
|
|
19
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
require File.dirname(__FILE__) + '/file_accessor'
|
|
3
|
+
require 'stringio'
|
|
4
|
+
|
|
5
|
+
describe "A FileAccessor" do
|
|
6
|
+
# This sequence diagram illustrates what this spec specifies.
|
|
7
|
+
#
|
|
8
|
+
# +--------------+ +----------+ +-------------+
|
|
9
|
+
# | FileAccessor | | Pathname | | IoProcessor |
|
|
10
|
+
# +--------------+ +----------+ +-------------+
|
|
11
|
+
# | | |
|
|
12
|
+
# open_and_handle_with | | |
|
|
13
|
+
# -------------------->| | open | |
|
|
14
|
+
# | |--------------->| | |
|
|
15
|
+
# | | io | | |
|
|
16
|
+
# | |<...............| | |
|
|
17
|
+
# | | | process(io) |
|
|
18
|
+
# | |---------------------------------->| |
|
|
19
|
+
# | | | | |
|
|
20
|
+
# | |<..................................| |
|
|
21
|
+
# | | |
|
|
22
|
+
#
|
|
23
|
+
it "should open a file and pass it to the processor's process method" do
|
|
24
|
+
# This is the primary actor
|
|
25
|
+
accessor = FileAccessor.new
|
|
26
|
+
|
|
27
|
+
# These are the primary actor's neighbours, which we mock.
|
|
28
|
+
file = mock "Pathname"
|
|
29
|
+
io_processor = mock "IoProcessor"
|
|
30
|
+
|
|
31
|
+
io = StringIO.new "whatever"
|
|
32
|
+
file.should_receive(:open).and_yield io
|
|
33
|
+
io_processor.should_receive(:process).with(io)
|
|
34
|
+
|
|
35
|
+
accessor.open_and_handle_with(file, io_processor)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
# greeter.rb
|
|
3
|
+
#
|
|
4
|
+
# Based on http://glu.ttono.us/articles/2006/12/19/tormenting-your-tests-with-heckle
|
|
5
|
+
#
|
|
6
|
+
# Run with:
|
|
7
|
+
#
|
|
8
|
+
# spec greeter_spec.rb --heckle Greeter
|
|
9
|
+
#
|
|
10
|
+
class Greeter
|
|
11
|
+
def initialize(person = nil)
|
|
12
|
+
@person = person
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def greet
|
|
16
|
+
@person.nil? ? "Hi there!" : "Hi #{@person}!"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "Greeter" do
|
|
21
|
+
it "should say Hi to person" do
|
|
22
|
+
greeter = Greeter.new("Kevin")
|
|
23
|
+
greeter.greet.should == "Hi Kevin!"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should say Hi to nobody" do
|
|
27
|
+
greeter = Greeter.new
|
|
28
|
+
# Uncomment the next line to make Heckle happy
|
|
29
|
+
#greeter.greet.should == "Hi there!"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
module HelperMethodExample
|
|
4
|
+
describe "an example group with helper a method" do
|
|
5
|
+
def helper_method
|
|
6
|
+
"received call"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should make that method available to specs" do
|
|
10
|
+
helper_method.should == "received call"
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
require File.dirname(__FILE__) + '/io_processor'
|
|
3
|
+
require 'stringio'
|
|
4
|
+
|
|
5
|
+
describe "An IoProcessor" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@processor = IoProcessor.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should raise nothing when the file is exactly 32 bytes" do
|
|
11
|
+
lambda {
|
|
12
|
+
@processor.process(StringIO.new("z"*32))
|
|
13
|
+
}.should_not raise_error
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should raise an exception when the file length is less than 32 bytes" do
|
|
17
|
+
lambda {
|
|
18
|
+
@processor.process(StringIO.new("z"*31))
|
|
19
|
+
}.should raise_error(DataTooShort)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "A consumer of a mock" do
|
|
4
|
+
it "should be able to send messages to the mock" do
|
|
5
|
+
mock = mock("poke me")
|
|
6
|
+
mock.should_receive(:poke)
|
|
7
|
+
mock.poke
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "a mock" do
|
|
12
|
+
it "should be able to mock the same message twice w/ different args" do
|
|
13
|
+
mock = mock("mock")
|
|
14
|
+
mock.should_receive(:msg).with(:arg1).and_return(:val1)
|
|
15
|
+
mock.should_receive(:msg).with(:arg2).and_return(:val2)
|
|
16
|
+
mock.msg(:arg1).should eql(:val1)
|
|
17
|
+
mock.msg(:arg2).should eql(:val2)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should be able to mock the same message twice w/ different args in reverse order" do
|
|
21
|
+
mock = mock("mock")
|
|
22
|
+
mock.should_receive(:msg).with(:arg1).and_return(:val1)
|
|
23
|
+
mock.should_receive(:msg).with(:arg2).and_return(:val2)
|
|
24
|
+
mock.msg(:arg2).should eql(:val2)
|
|
25
|
+
mock.msg(:arg1).should eql(:val1)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class MultiThreadedExampleGroupRunner < Spec::Runner::ExampleGroupRunner
|
|
2
|
+
def initialize(options, arg)
|
|
3
|
+
super(options)
|
|
4
|
+
# configure these
|
|
5
|
+
@thread_count = 4
|
|
6
|
+
@thread_wait = 0
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def run
|
|
10
|
+
@threads = []
|
|
11
|
+
q = Queue.new
|
|
12
|
+
example_groups.each { |b| q << b}
|
|
13
|
+
success = true
|
|
14
|
+
@thread_count.times do
|
|
15
|
+
@threads << Thread.new(q) do |queue|
|
|
16
|
+
while not queue.empty?
|
|
17
|
+
example_group = queue.pop
|
|
18
|
+
success &= example_group.suite.run(nil)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
sleep @thread_wait
|
|
22
|
+
end
|
|
23
|
+
@threads.each {|t| t.join}
|
|
24
|
+
success
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
2
|
+
require File.dirname(__FILE__) + '/stack'
|
|
3
|
+
|
|
4
|
+
class StackExamples < Spec::ExampleGroup
|
|
5
|
+
describe(Stack)
|
|
6
|
+
before(:each) do
|
|
7
|
+
@stack = Stack.new
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class EmptyStackExamples < StackExamples
|
|
12
|
+
describe("when empty")
|
|
13
|
+
it "should be empty" do
|
|
14
|
+
@stack.should be_empty
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class AlmostFullStackExamples < StackExamples
|
|
19
|
+
describe("when almost full")
|
|
20
|
+
before(:each) do
|
|
21
|
+
(1..9).each {|n| @stack.push n}
|
|
22
|
+
end
|
|
23
|
+
it "should be full" do
|
|
24
|
+
@stack.should_not be_full
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class FullStackExamples < StackExamples
|
|
29
|
+
describe("when full")
|
|
30
|
+
before(:each) do
|
|
31
|
+
(1..10).each {|n| @stack.push n}
|
|
32
|
+
end
|
|
33
|
+
it "should be full" do
|
|
34
|
+
@stack.should be_full
|
|
35
|
+
end
|
|
36
|
+
end
|