rr 1.1.1 → 3.0.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.
- checksums.yaml +5 -5
- data/Appraisals +6 -0
- data/CHANGES.md +102 -1
- data/CREDITS.md +5 -0
- data/Gemfile +3 -0
- data/README.md +91 -110
- data/Rakefile +43 -0
- data/doc/02_syntax_comparison.md +1 -0
- data/gemfiles/ruby_19_rspec_2.gemfile +14 -0
- data/gemfiles/ruby_19_rspec_2.gemfile.lock +49 -0
- data/gemfiles/ruby_19_rspec_2_rails_4.gemfile +15 -0
- data/gemfiles/ruby_19_rspec_2_rails_4.gemfile.lock +119 -0
- data/lib/rr/class_instance_method_defined.rb +1 -1
- data/lib/rr/core_ext/array.rb +2 -0
- data/lib/rr/core_ext/hash.rb +2 -0
- data/lib/rr/deprecations.rb +97 -0
- data/lib/rr/double.rb +28 -10
- data/lib/rr/double_definitions/double_definition.rb +39 -16
- data/lib/rr/double_definitions/double_definition_create.rb +5 -5
- data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
- data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
- data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
- data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
- data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
- data/lib/rr/double_matches.rb +4 -3
- data/lib/rr/dsl.rb +152 -0
- data/lib/rr/expectations/any_argument_expectation.rb +4 -4
- data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
- data/lib/rr/injections/double_injection.rb +67 -19
- data/lib/rr/injections/method_missing_injection.rb +37 -6
- data/lib/rr/integrations.rb +13 -12
- data/lib/rr/integrations/decorator.rb +4 -1
- data/lib/rr/integrations/minitest_4.rb +1 -1
- data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
- data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
- data/lib/rr/integrations/rspec_2.rb +28 -3
- data/lib/rr/keyword_arguments.rb +15 -0
- data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
- data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
- data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
- data/lib/rr/recorded_call.rb +35 -0
- data/lib/rr/recorded_calls.rb +23 -9
- data/lib/rr/space.rb +15 -5
- data/lib/rr/spy_verification.rb +13 -5
- data/lib/rr/version.rb +1 -2
- data/lib/rr/wildcard_matchers.rb +10 -10
- data/lib/rr/without_autohook.rb +7 -14
- data/rr.gemspec +14 -5
- data/spec/custom_formatter_for_rspec.rb +18 -0
- data/spec/custom_formatter_for_rspec_2.rb +40 -0
- data/spec/defines_spec_suite_tasks.rb +57 -0
- data/spec/fixtures/rubygems_patch_for_187.rb +598 -0
- data/spec/global_helper.rb +38 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_suite_configuration.rb +126 -0
- data/spec/spec_suite_runner.rb +47 -0
- data/spec/suites.yml +10 -0
- data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +147 -0
- data/spec/suites/rspec_2/functional/dont_allow_spec.rb +17 -0
- data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
- data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_spec.rb +17 -0
- data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
- data/spec/suites/rspec_2/functional/spy_spec.rb +102 -0
- data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
- data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
- data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
- data/spec/suites/rspec_2/functional/stub_spec.rb +71 -0
- data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/wildcard_matchers_spec.rb +128 -0
- data/spec/suites/rspec_2/helper.rb +28 -0
- data/spec/suites/rspec_2/integration/minitest_4_spec.rb +109 -0
- data/spec/suites/rspec_2/integration/minitest_spec.rb +109 -0
- data/spec/suites/rspec_2/spec_helper.rb +3 -0
- data/spec/suites/rspec_2/support/matchers/wildcard_matcher_matchers.rb +32 -0
- data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
- data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
- data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
- data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
- data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
- data/spec/suites/rspec_2/support/shared_examples/space.rb +13 -0
- data/spec/suites/rspec_2/support/shared_examples/times_called_expectation.rb +9 -0
- data/spec/suites/rspec_2/unit/core_ext/array_spec.rb +39 -0
- data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +53 -0
- data/spec/suites/rspec_2/unit/core_ext/hash_spec.rb +55 -0
- data/spec/suites/rspec_2/unit/core_ext/range_spec.rb +41 -0
- data/spec/suites/rspec_2/unit/core_ext/regexp_spec.rb +41 -0
- data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
- data/spec/suites/rspec_2/unit/double_definitions/child_double_definition_create_spec.rb +114 -0
- data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_blank_slate_spec.rb +93 -0
- data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +446 -0
- data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
- data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
- data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
- data/spec/suites/rspec_2/unit/errors/rr_error_spec.rb +67 -0
- data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +48 -0
- data/spec/suites/rspec_2/unit/expectations/anything_argument_equality_expectation_spec.rb +14 -0
- data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +135 -0
- data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +30 -0
- data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +92 -0
- data/spec/suites/rspec_2/unit/expectations/satisfy_argument_equality_expectation_spec.rb +61 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/any_times_matcher_spec.rb +22 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_least_matcher_spec.rb +37 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_most_matcher_spec.rb +43 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/integer_matcher_spec.rb +58 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/proc_matcher_spec.rb +35 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/range_matcher_spec.rb +39 -0
- data/spec/suites/rspec_2/unit/hash_with_object_id_key_spec.rb +88 -0
- data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +533 -0
- data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_verify_spec.rb +32 -0
- data/spec/suites/rspec_2/unit/integrations/rspec/invocation_matcher_spec.rb +297 -0
- data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +70 -0
- data/spec/suites/rspec_2/unit/rr_spec.rb +28 -0
- data/spec/suites/rspec_2/unit/space_spec.rb +598 -0
- data/spec/suites/rspec_2/unit/spy_verification_spec.rb +133 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/any_times_matcher_spec.rb +46 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/at_least_matcher_spec.rb +54 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/at_most_matcher_spec.rb +69 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/integer_matcher_spec.rb +69 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/proc_matcher_spec.rb +54 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/range_matcher_spec.rb +75 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/times_called_matcher_spec.rb +117 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/anything_spec.rb +33 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/boolean_spec.rb +45 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/duck_type_spec.rb +64 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/hash_including_spec.rb +64 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/is_a_spec.rb +55 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/numeric_spec.rb +46 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/satisfy_spec.rb +57 -0
- data/spec/support/adapter.rb +22 -0
- data/spec/support/adapter_tests/base.rb +45 -0
- data/spec/support/adapter_tests/minitest.rb +7 -0
- data/spec/support/adapter_tests/rspec.rb +70 -0
- data/spec/support/adapter_tests/test_unit.rb +47 -0
- data/spec/support/command_runner.rb +105 -0
- data/spec/support/generator.rb +56 -0
- data/spec/support/integration_tests/base.rb +64 -0
- data/spec/support/integration_tests/rails.rb +60 -0
- data/spec/support/integration_tests/rails_minitest.rb +13 -0
- data/spec/support/integration_tests/rails_rspec.rb +13 -0
- data/spec/support/integration_tests/rails_test_unit.rb +13 -0
- data/spec/support/integration_tests/rails_test_unit_like.rb +13 -0
- data/spec/support/integration_tests/ruby.rb +7 -0
- data/spec/support/integration_tests/ruby_minitest.rb +13 -0
- data/spec/support/integration_tests/ruby_rspec.rb +13 -0
- data/spec/support/integration_tests/ruby_test_unit.rb +13 -0
- data/spec/support/matchers/be_a_subset_of_matcher.rb +24 -0
- data/spec/support/project/cucumber.rb +50 -0
- data/spec/support/project/generator.rb +348 -0
- data/spec/support/project/minitest.rb +39 -0
- data/spec/support/project/rails.rb +199 -0
- data/spec/support/project/rails_minitest.rb +17 -0
- data/spec/support/project/rails_rspec.rb +50 -0
- data/spec/support/project/rails_test_unit.rb +17 -0
- data/spec/support/project/rails_test_unit_like.rb +17 -0
- data/spec/support/project/rspec.rb +69 -0
- data/spec/support/project/ruby.rb +34 -0
- data/spec/support/project/ruby_minitest.rb +11 -0
- data/spec/support/project/ruby_rspec.rb +29 -0
- data/spec/support/project/ruby_test_unit.rb +11 -0
- data/spec/support/project/ruby_test_unit_like.rb +21 -0
- data/spec/support/project/test_unit.rb +29 -0
- data/spec/support/project/test_unit_like.rb +7 -0
- data/spec/support/project/tests_runner.rb +22 -0
- data/spec/support/test.sqlite3 +0 -0
- data/spec/support/test_case/generator.rb +53 -0
- data/spec/support/test_case/minitest.rb +13 -0
- data/spec/support/test_case/rspec.rb +19 -0
- data/spec/support/test_case/test_unit.rb +21 -0
- data/spec/support/test_file/generator.rb +120 -0
- data/spec/support/test_file/minitest.rb +19 -0
- data/spec/support/test_file/rails_minitest.rb +7 -0
- data/spec/support/test_file/rails_rspec.rb +12 -0
- data/spec/support/test_file/rails_test_unit.rb +25 -0
- data/spec/support/test_file/rspec.rb +33 -0
- data/spec/support/test_file/test_unit.rb +36 -0
- data/spec/support/test_helper/generator.rb +27 -0
- data/spec/support/test_helper/minitest.rb +7 -0
- data/spec/support/test_helper/rails.rb +31 -0
- data/spec/support/test_helper/rails_minitest.rb +7 -0
- data/spec/support/test_helper/rails_rspec.rb +25 -0
- data/spec/support/test_helper/rails_test_unit.rb +23 -0
- data/spec/support/test_helper/rspec.rb +7 -0
- data/spec/support/test_helper/ruby.rb +31 -0
- data/spec/support/test_helper/test_unit.rb +7 -0
- metadata +240 -19
- data/VERSION +0 -1
- data/lib/rr/adapters.rb +0 -44
- data/lib/rr/adapters/rr_methods.rb +0 -142
- data/lib/rr/integrations/rspec_1.rb +0 -46
- data/lib/rr/integrations/test_unit_1.rb +0 -63
- data/lib/rr/integrations/test_unit_2.rb +0 -15
- data/lib/rr/integrations/test_unit_200.rb +0 -27
- data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
- data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
- data/lib/rr/proc_from_block.rb +0 -11
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module TimesCalledMatchers
|
|
5
|
+
describe TimesCalledMatcher do
|
|
6
|
+
describe ".create" do
|
|
7
|
+
describe "when passed a AnyTimesMatcher" do
|
|
8
|
+
it "returns the passed in argument" do
|
|
9
|
+
matcher = AnyTimesMatcher.new
|
|
10
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "when passed a AtLeastMatcher" do
|
|
15
|
+
it "returns the passed in argument" do
|
|
16
|
+
matcher = AtLeastMatcher.new(5)
|
|
17
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "when passed a AtMostMatcher" do
|
|
22
|
+
it "returns the passed in argument" do
|
|
23
|
+
matcher = AtMostMatcher.new(5)
|
|
24
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "when passed a IntegerMatcher" do
|
|
29
|
+
it "returns the passed in argument" do
|
|
30
|
+
matcher = IntegerMatcher.new(5)
|
|
31
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "when passed a Integer" do
|
|
36
|
+
it "returns IntegerMatcher" do
|
|
37
|
+
expect(TimesCalledMatcher.create(5)).to eq IntegerMatcher.new(5)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "when passed a ProcMatcher" do
|
|
42
|
+
it "returns the passed in argument" do
|
|
43
|
+
matcher = ProcMatcher.new(lambda {|other| other == 5})
|
|
44
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "when passed a Lambda" do
|
|
49
|
+
it "returns ProcMatcher" do
|
|
50
|
+
value = lambda {|other| other == 5}
|
|
51
|
+
expect(TimesCalledMatcher.create(value)).to eq ProcMatcher.new(value)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "when passed a IntegerMatcher" do
|
|
56
|
+
it "returns the passed in argument" do
|
|
57
|
+
matcher = RangeMatcher.new(2..4)
|
|
58
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe "when passed a Integer" do
|
|
63
|
+
it "returns RangeMatcher" do
|
|
64
|
+
expect(TimesCalledMatcher.create(2..4)).to eq RangeMatcher.new(2..4)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "when passed a TimesCalledMatcher" do
|
|
69
|
+
it "returns the passed in argument" do
|
|
70
|
+
matcher = TimesCalledMatcher.new(5)
|
|
71
|
+
expect(TimesCalledMatcher.create(matcher)).to equal matcher
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "when passed an unsupported type" do
|
|
76
|
+
it "raises an ArgumentError" do
|
|
77
|
+
matcher = Object.new
|
|
78
|
+
expect {
|
|
79
|
+
TimesCalledMatcher.create(matcher)
|
|
80
|
+
}.to raise_error(ArgumentError, "There is no TimesCalledMatcher for #{matcher.inspect}.")
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe "#error_message" do
|
|
86
|
+
before do
|
|
87
|
+
@times = 3
|
|
88
|
+
@matcher = TimesCalledMatcher.new(@times)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "has an error message" do
|
|
92
|
+
expect(@matcher.error_message(5)).to eq \
|
|
93
|
+
"Called 5 times.\nExpected 3 times."
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe "#==" do
|
|
98
|
+
before do
|
|
99
|
+
@times = 3
|
|
100
|
+
@matcher = TimesCalledMatcher.new(@times)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "returns true when other is the same class and times are ==" do
|
|
104
|
+
expect(@matcher).to eq TimesCalledMatcher.new(@times)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "returns false when other is a different class and times are ==" do
|
|
108
|
+
expect(@matcher).to_not eq IntegerMatcher.new(@times)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "returns false when is the same class and times are not ==" do
|
|
112
|
+
expect(@matcher).to_not eq TimesCalledMatcher.new(1)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module WildcardMatchers
|
|
5
|
+
describe Anything do
|
|
6
|
+
include WildcardMatcherMatchers
|
|
7
|
+
|
|
8
|
+
describe '#wildcard_match?' do
|
|
9
|
+
it "always returns true when given any object" do
|
|
10
|
+
should wildcard_match(Object.new)
|
|
11
|
+
should wildcard_match(:symbol)
|
|
12
|
+
should wildcard_match([1, 2, 3])
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#==' do
|
|
17
|
+
it "returns true when given an Anything object" do
|
|
18
|
+
should equal_match(described_class.new)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "returns false when not given an Anything object whatsoever" do
|
|
22
|
+
should_not equal_match(:whatever)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "#inspect" do
|
|
27
|
+
it "returns the correct string" do
|
|
28
|
+
expect(subject.inspect).to eq "anything"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module WildcardMatchers
|
|
5
|
+
describe Boolean do
|
|
6
|
+
include WildcardMatcherMatchers
|
|
7
|
+
|
|
8
|
+
describe '#wildcard_match?' do
|
|
9
|
+
it "returns true when given a Boolean" do
|
|
10
|
+
should wildcard_match(described_class.new)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "returns true when given a boolean" do
|
|
14
|
+
should wildcard_match(true)
|
|
15
|
+
should wildcard_match(false)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "returns false when not given a boolean" do
|
|
19
|
+
should_not wildcard_match(:something_else)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#==" do
|
|
24
|
+
it "returns true when given a Boolean" do
|
|
25
|
+
should equal_match(described_class.new)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns false even when given a boolean that wildcard matches this Boolean" do
|
|
29
|
+
should_not equal_match(true)
|
|
30
|
+
should_not equal_match(false)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "returns false when not given a Boolean whatsoever" do
|
|
34
|
+
should_not equal_match(:something_else)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "#inspect" do
|
|
39
|
+
it "returns the correct string" do
|
|
40
|
+
expect(subject.inspect).to eq "boolean"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
|
2
|
+
require 'ostruct'
|
|
3
|
+
|
|
4
|
+
module RR
|
|
5
|
+
module WildcardMatchers
|
|
6
|
+
describe DuckType do
|
|
7
|
+
include WildcardMatcherMatchers
|
|
8
|
+
|
|
9
|
+
describe '#wildcard_match?' do
|
|
10
|
+
subject { described_class.new(:quack, :waddle) }
|
|
11
|
+
|
|
12
|
+
it "returns true when given DuckType is a copy of this DuckType" do
|
|
13
|
+
matcher2 = described_class.new(:quack, :waddle)
|
|
14
|
+
should wildcard_match(matcher2)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "returns true when given object responds to all methods" do
|
|
18
|
+
object = OpenStruct.new(:quack => 'x', :waddle => 'x')
|
|
19
|
+
should wildcard_match(object)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "returns false when given object responds to only some methods" do
|
|
23
|
+
object = OpenStruct.new(:quack => 'x')
|
|
24
|
+
should_not wildcard_match(object)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "returns false when given object responds to no methods" do
|
|
28
|
+
object = Object.new
|
|
29
|
+
should_not wildcard_match(object)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#==' do
|
|
34
|
+
subject { described_class.new(:quack, :waddle) }
|
|
35
|
+
|
|
36
|
+
it "returns true when given DuckType is a copy of this DuckType" do
|
|
37
|
+
matcher2 = described_class.new(:quack, :waddle)
|
|
38
|
+
should equal_match(matcher2)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "returns false when given DuckType is not a copy of this DuckType" do
|
|
42
|
+
matcher2 = described_class.new(:something_else)
|
|
43
|
+
should_not equal_match(matcher2)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "returns false even when given a DuckType that wildcard matches this DuckType" do
|
|
47
|
+
object = OpenStruct.new(:quack => 'x', :waddle => 'x')
|
|
48
|
+
should_not equal_match(object)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "returns false when not given a DuckType object whatsoever" do
|
|
52
|
+
should_not equal_match(:something_else)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe "#inspect" do
|
|
57
|
+
it "returns the correct string" do
|
|
58
|
+
matcher = described_class.new(:quack, :waddle)
|
|
59
|
+
expect(matcher.inspect).to eq "duck_type(:quack, :waddle)"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module WildcardMatchers
|
|
5
|
+
describe HashIncluding do
|
|
6
|
+
include WildcardMatcherMatchers
|
|
7
|
+
|
|
8
|
+
describe '#wildcard_match?' do
|
|
9
|
+
subject { described_class.new({:foo => 'x'}) }
|
|
10
|
+
|
|
11
|
+
it "returns true when given object is a copy of this HashIncluding" do
|
|
12
|
+
matcher2 = described_class.new({:foo => 'x'})
|
|
13
|
+
should wildcard_match(matcher2)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "returns true when given hash is contained within expected hash" do
|
|
17
|
+
should wildcard_match({:foo => 'x', :bar => 'y'})
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "returns false when given object is not a Hash" do
|
|
21
|
+
should_not wildcard_match('whatever')
|
|
22
|
+
should_not wildcard_match(:whatever)
|
|
23
|
+
should_not wildcard_match([1, 2, 3])
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "returns false when given object is a hash but is not contained within expected hash" do
|
|
27
|
+
should_not wildcard_match({:fiz => 'buz'})
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe '#==' do
|
|
32
|
+
subject { described_class.new({:foo => 'x'}) }
|
|
33
|
+
|
|
34
|
+
it "returns true when given object is a copy of this HashIncluding" do
|
|
35
|
+
matcher2 = described_class.new({:foo => 'x'})
|
|
36
|
+
should equal_match(matcher2)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "returns false when it is a HashIncluding but not with the same hash" do
|
|
40
|
+
matcher2 = described_class.new({:x => 'y'})
|
|
41
|
+
should_not equal_match(matcher2)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "returns false even when given a hash that wildcard matches this HashIncluding" do
|
|
45
|
+
should_not equal_match({:foo => 'x'})
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "returns false when not given a HashIncluding whatsoever" do
|
|
49
|
+
should_not equal_match(:something_else)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "#inspect" do
|
|
54
|
+
it "returns the correct string" do
|
|
55
|
+
matcher = described_class.new({:foo => 'x', :bar => 'y'})
|
|
56
|
+
str = matcher.inspect
|
|
57
|
+
expect(str).to include("hash_including(")
|
|
58
|
+
expect(str).to include(':foo=>"x"')
|
|
59
|
+
expect(str).to include(':bar=>"y"')
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module WildcardMatchers
|
|
5
|
+
describe IsA do
|
|
6
|
+
include WildcardMatcherMatchers
|
|
7
|
+
|
|
8
|
+
describe '#wildcard_match?' do
|
|
9
|
+
subject { described_class.new(Symbol) }
|
|
10
|
+
|
|
11
|
+
it "returns true when given IsA is a copy of this IsA" do
|
|
12
|
+
matcher2 = described_class.new(Symbol)
|
|
13
|
+
should wildcard_match(matcher2)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "returns true when given an object that is is_a?(klass)" do
|
|
17
|
+
should wildcard_match(:a_symbol)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "returns false if not given an object that is is_a?(klass)" do
|
|
21
|
+
should_not wildcard_match('a string')
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe '#==' do
|
|
26
|
+
subject { described_class.new(Symbol) }
|
|
27
|
+
|
|
28
|
+
it "returns true when given IsA is a copy of this IsA" do
|
|
29
|
+
matcher2 = described_class.new(Symbol)
|
|
30
|
+
should equal_match(matcher2)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "returns false when given IsA is not a copy of this IsA" do
|
|
34
|
+
matcher2 = described_class.new(String)
|
|
35
|
+
should_not equal_match(matcher2)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "returns false even when given an object that wildcard matches this IsA" do
|
|
39
|
+
should_not equal_match(:something_else)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "returns false when not given an IsA whatsoever" do
|
|
43
|
+
should_not equal_match([1, 2, 3])
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "#inspect" do
|
|
48
|
+
it "returns the correct string" do
|
|
49
|
+
matcher = described_class.new(Symbol)
|
|
50
|
+
expect(matcher.inspect).to eq "is_a(Symbol)"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module WildcardMatchers
|
|
5
|
+
describe Numeric do
|
|
6
|
+
include WildcardMatcherMatchers
|
|
7
|
+
|
|
8
|
+
describe '#wildcard_match?' do
|
|
9
|
+
it "returns true when given Numeric is a copy of this Numeric" do
|
|
10
|
+
matcher2 = described_class.new
|
|
11
|
+
should wildcard_match(matcher2)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "returns true when given a Numeric" do
|
|
15
|
+
should wildcard_match(99)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "returns false otherwise" do
|
|
19
|
+
should_not wildcard_match(:not_a_numeric)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe '#==' do
|
|
24
|
+
it "returns true when given Numeric is a copy of this Numeric" do
|
|
25
|
+
matcher2 = described_class.new
|
|
26
|
+
should equal_match(matcher2)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "returns false even when given an object that wildcard matches this Numeric" do
|
|
30
|
+
should_not equal_match(99)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "returns false when not a Numeric whatsoever" do
|
|
34
|
+
should_not equal_match(:something_else)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "#inspect" do
|
|
39
|
+
it "returns the correct string" do
|
|
40
|
+
matcher = described_class.new
|
|
41
|
+
expect(matcher.inspect).to eq "numeric"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
module RR
|
|
4
|
+
module WildcardMatchers
|
|
5
|
+
describe Satisfy do
|
|
6
|
+
include WildcardMatcherMatchers
|
|
7
|
+
|
|
8
|
+
describe '#wildcard_match?' do
|
|
9
|
+
let(:expectation_proc) { lambda {|v| v == 'x' } }
|
|
10
|
+
subject { described_class.new(expectation_proc) }
|
|
11
|
+
|
|
12
|
+
it "returns true if given Satisfy is a copy of this Satisfy" do
|
|
13
|
+
matcher2 = described_class.new(expectation_proc)
|
|
14
|
+
should wildcard_match(matcher2)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "returns true if the given object matches the block" do
|
|
18
|
+
should wildcard_match('x')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "returns false otherwise" do
|
|
22
|
+
should_not wildcard_match('y')
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#==' do
|
|
27
|
+
let(:expectation_proc) { lambda {|v| v == 'x' } }
|
|
28
|
+
subject { described_class.new(expectation_proc) }
|
|
29
|
+
|
|
30
|
+
it "returns true if given Satisfy is a copy of this Satisfy" do
|
|
31
|
+
matcher2 = described_class.new(expectation_proc)
|
|
32
|
+
should equal_match(matcher2)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "returns false if given Satisfy is not a copy of this Satisfy" do
|
|
36
|
+
matcher2 = described_class.new(lambda {|v| })
|
|
37
|
+
should_not equal_match(matcher2)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "returns false even when given an object that wildcard matches this Satisfy" do
|
|
41
|
+
should_not equal_match('x')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "returns false when given object isn't even a Satisfy" do
|
|
45
|
+
should_not equal_match(:something_else)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe '#inspect' do
|
|
50
|
+
it "returns the correct string" do
|
|
51
|
+
matcher = Satisfy.new(lambda {})
|
|
52
|
+
expect(matcher.inspect).to eq "satisfy { ... }"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|