mocha-macruby 0.9.8.20100129120100
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/COPYING +3 -0
- data/MIT-LICENSE +7 -0
- data/README +39 -0
- data/RELEASE +294 -0
- data/Rakefile +214 -0
- data/examples/misc.rb +43 -0
- data/examples/mocha.rb +25 -0
- data/examples/stubba.rb +64 -0
- data/lib/mocha.rb +3 -0
- data/lib/mocha/any_instance_method.rb +59 -0
- data/lib/mocha/api.rb +173 -0
- data/lib/mocha/argument_iterator.rb +21 -0
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +95 -0
- data/lib/mocha/central.rb +27 -0
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +117 -0
- data/lib/mocha/configuration.rb +79 -0
- data/lib/mocha/deprecation.rb +22 -0
- data/lib/mocha/exception_raiser.rb +17 -0
- data/lib/mocha/expectation.rb +476 -0
- data/lib/mocha/expectation_error.rb +15 -0
- data/lib/mocha/expectation_list.rb +50 -0
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/inspect.rb +67 -0
- data/lib/mocha/instance_method.rb +16 -0
- data/lib/mocha/integration.rb +38 -0
- data/lib/mocha/integration/mini_test.rb +21 -0
- data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
- data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
- data/lib/mocha/integration/test_unit.rb +40 -0
- data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
- data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
- data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
- data/lib/mocha/is_a.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/metaclass.rb +13 -0
- data/lib/mocha/method_matcher.rb +21 -0
- data/lib/mocha/mock.rb +200 -0
- data/lib/mocha/mockery.rb +181 -0
- data/lib/mocha/module_method.rb +16 -0
- data/lib/mocha/multiple_yields.rb +20 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/no_yields.rb +11 -0
- data/lib/mocha/object.rb +187 -0
- data/lib/mocha/parameter_matchers.rb +27 -0
- data/lib/mocha/parameter_matchers/all_of.rb +42 -0
- data/lib/mocha/parameter_matchers/any_of.rb +47 -0
- data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
- data/lib/mocha/parameter_matchers/anything.rb +33 -0
- data/lib/mocha/parameter_matchers/base.rb +15 -0
- data/lib/mocha/parameter_matchers/equals.rb +42 -0
- data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
- data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
- data/lib/mocha/parameter_matchers/has_key.rb +43 -0
- data/lib/mocha/parameter_matchers/has_value.rb +43 -0
- data/lib/mocha/parameter_matchers/includes.rb +41 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
- data/lib/mocha/parameter_matchers/is_a.rb +42 -0
- data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
- data/lib/mocha/parameter_matchers/not.rb +42 -0
- data/lib/mocha/parameter_matchers/object.rb +15 -0
- data/lib/mocha/parameter_matchers/optionally.rb +55 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/parameters_matcher.rb +37 -0
- data/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/mocha/return_values.rb +31 -0
- data/lib/mocha/sequence.rb +42 -0
- data/lib/mocha/single_return_value.rb +17 -0
- data/lib/mocha/single_yield.rb +18 -0
- data/lib/mocha/standalone.rb +1 -0
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/unexpected_invocation.rb +18 -0
- data/lib/mocha/yield_parameters.rb +31 -0
- data/lib/mocha_standalone.rb +2 -0
- data/lib/stubba.rb +4 -0
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/api_test.rb +139 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/bug_21465_test.rb +34 -0
- data/test/acceptance/bug_21563_test.rb +25 -0
- data/test/acceptance/expected_invocation_count_test.rb +196 -0
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/minitest_test.rb +153 -0
- data/test/acceptance/mocha_example_test.rb +98 -0
- data/test/acceptance/mocha_test_result_test.rb +84 -0
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
- data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
- data/test/acceptance/optional_parameters_test.rb +70 -0
- data/test/acceptance/parameter_matcher_test.rb +209 -0
- data/test/acceptance/partial_mocks_test.rb +47 -0
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/sequence_test.rb +186 -0
- data/test/acceptance/states_test.rb +70 -0
- data/test/acceptance/stub_any_instance_method_test.rb +195 -0
- data/test/acceptance/stub_class_method_test.rb +203 -0
- data/test/acceptance/stub_everything_test.rb +56 -0
- data/test/acceptance/stub_instance_method_test.rb +203 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/stubba_example_test.rb +102 -0
- data/test/acceptance/stubba_test.rb +15 -0
- data/test/acceptance/stubba_test_result_test.rb +66 -0
- data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/deprecation_disabler.rb +15 -0
- data/test/execution_point.rb +36 -0
- data/test/method_definer.rb +24 -0
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +25 -0
- data/test/test_runner.rb +33 -0
- data/test/unit/any_instance_method_test.rb +126 -0
- data/test/unit/array_inspect_test.rb +16 -0
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +65 -0
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +295 -0
- data/test/unit/configuration_test.rb +38 -0
- data/test/unit/date_time_inspect_test.rb +21 -0
- data/test/unit/exception_raiser_test.rb +42 -0
- data/test/unit/expectation_list_test.rb +57 -0
- data/test/unit/expectation_test.rb +480 -0
- data/test/unit/hash_inspect_test.rb +16 -0
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/metaclass_test.rb +22 -0
- data/test/unit/method_matcher_test.rb +23 -0
- data/test/unit/mock_test.rb +302 -0
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/multiple_yields_test.rb +18 -0
- data/test/unit/no_yields_test.rb +18 -0
- data/test/unit/object_inspect_test.rb +37 -0
- data/test/unit/object_test.rb +82 -0
- data/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
- data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
- data/test/unit/parameter_matchers/has_key_test.rb +55 -0
- data/test/unit/parameter_matchers/has_value_test.rb +57 -0
- data/test/unit/parameter_matchers/includes_test.rb +44 -0
- data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/test/unit/parameter_matchers/is_a_test.rb +25 -0
- data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/test/unit/parameter_matchers/not_test.rb +26 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/parameters_matcher_test.rb +121 -0
- data/test/unit/return_values_test.rb +63 -0
- data/test/unit/sequence_test.rb +104 -0
- data/test/unit/single_return_value_test.rb +14 -0
- data/test/unit/single_yield_test.rb +18 -0
- data/test/unit/state_machine_test.rb +98 -0
- data/test/unit/string_inspect_test.rb +11 -0
- data/test/unit/yield_parameters_test.rb +93 -0
- metadata +240 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: anything() -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches any object.
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(anything)
|
12
|
+
# object.method_1('foo')
|
13
|
+
# # no error raised
|
14
|
+
def anything
|
15
|
+
Anything.new
|
16
|
+
end
|
17
|
+
|
18
|
+
class Anything < Base # :nodoc:
|
19
|
+
|
20
|
+
def matches?(available_parameters)
|
21
|
+
available_parameters.shift
|
22
|
+
return true
|
23
|
+
end
|
24
|
+
|
25
|
+
def mocha_inspect
|
26
|
+
"anything"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: equals(value) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches +Object+ equalling +value+.
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(equals(2))
|
12
|
+
# object.method_1(2)
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object = mock()
|
16
|
+
# object.expects(:method_1).with(equals(2))
|
17
|
+
# object.method_1(3)
|
18
|
+
# # error raised, because method_1 was not called with Object equalling 3
|
19
|
+
def equals(value)
|
20
|
+
Equals.new(value)
|
21
|
+
end
|
22
|
+
|
23
|
+
class Equals < Base # :nodoc:
|
24
|
+
|
25
|
+
def initialize(value)
|
26
|
+
@value = value
|
27
|
+
end
|
28
|
+
|
29
|
+
def matches?(available_parameters)
|
30
|
+
parameter = available_parameters.shift
|
31
|
+
parameter == @value
|
32
|
+
end
|
33
|
+
|
34
|
+
def mocha_inspect
|
35
|
+
@value.mocha_inspect
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
require 'mocha/parameter_matchers/all_of'
|
3
|
+
require 'mocha/parameter_matchers/has_entry'
|
4
|
+
|
5
|
+
module Mocha
|
6
|
+
|
7
|
+
module ParameterMatchers
|
8
|
+
|
9
|
+
# :call-seq: has_entries(entries) -> parameter_matcher
|
10
|
+
#
|
11
|
+
# Matches +Hash+ containing all +entries+.
|
12
|
+
# object = mock()
|
13
|
+
# object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
|
14
|
+
# object.method_1('key_1' => 1, 'key_2' => 2, 'key_3' => 3)
|
15
|
+
# # no error raised
|
16
|
+
#
|
17
|
+
# object = mock()
|
18
|
+
# object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
|
19
|
+
# object.method_1('key_1' => 1, 'key_2' => 99)
|
20
|
+
# # error raised, because method_1 was not called with Hash containing entries: 'key_1' => 1, 'key_2' => 2
|
21
|
+
def has_entries(entries)
|
22
|
+
HasEntries.new(entries)
|
23
|
+
end
|
24
|
+
|
25
|
+
class HasEntries < Base # :nodoc:
|
26
|
+
|
27
|
+
def initialize(entries)
|
28
|
+
@entries = entries
|
29
|
+
end
|
30
|
+
|
31
|
+
def matches?(available_parameters)
|
32
|
+
parameter = available_parameters.shift
|
33
|
+
has_entry_matchers = @entries.map { |key, value| HasEntry.new(key, value) }
|
34
|
+
AllOf.new(*has_entry_matchers).matches?([parameter])
|
35
|
+
end
|
36
|
+
|
37
|
+
def mocha_inspect
|
38
|
+
"has_entries(#{@entries.mocha_inspect})"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: has_entry(key, value) -> parameter_matcher
|
8
|
+
# has_entry(key => value) -> parameter_matcher
|
9
|
+
#
|
10
|
+
# Matches +Hash+ containing entry with +key+ and +value+.
|
11
|
+
# object = mock()
|
12
|
+
# object.expects(:method_1).with(has_entry('key_1', 1))
|
13
|
+
# object.method_1('key_1' => 1, 'key_2' => 2)
|
14
|
+
# # no error raised
|
15
|
+
#
|
16
|
+
# object = mock()
|
17
|
+
# object.expects(:method_1).with(has_entry('key_1' => 1))
|
18
|
+
# object.method_1('key_1' => 1, 'key_2' => 2)
|
19
|
+
# # no error raised
|
20
|
+
#
|
21
|
+
# object = mock()
|
22
|
+
# object.expects(:method_1).with(has_entry('key_1', 1))
|
23
|
+
# object.method_1('key_1' => 2, 'key_2' => 1)
|
24
|
+
# # error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
|
25
|
+
#
|
26
|
+
# object = mock()
|
27
|
+
# object.expects(:method_1).with(has_entry('key_1' => 1))
|
28
|
+
# object.method_1('key_1' => 2, 'key_2' => 1)
|
29
|
+
# # error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
|
30
|
+
def has_entry(*options)
|
31
|
+
key, value = options.shift, options.shift
|
32
|
+
key, value = key.to_a[0][0..1] if key.is_a?(Hash)
|
33
|
+
HasEntry.new(key, value)
|
34
|
+
end
|
35
|
+
|
36
|
+
class HasEntry < Base # :nodoc:
|
37
|
+
|
38
|
+
def initialize(key, value)
|
39
|
+
@key, @value = key, value
|
40
|
+
end
|
41
|
+
|
42
|
+
def matches?(available_parameters)
|
43
|
+
parameter = available_parameters.shift
|
44
|
+
return false unless parameter.respond_to?(:keys) && parameter.respond_to?(:[])
|
45
|
+
matching_keys = parameter.keys.select { |key| @key.to_matcher.matches?([key]) }
|
46
|
+
matching_keys.any? { |key| @value.to_matcher.matches?([parameter[key]]) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def mocha_inspect
|
50
|
+
"has_entry(#{@key.mocha_inspect} => #{@value.mocha_inspect})"
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: has_key(key) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches +Hash+ containing +key+.
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(has_key('key_1'))
|
12
|
+
# object.method_1('key_1' => 1, 'key_2' => 2)
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object = mock()
|
16
|
+
# object.expects(:method_1).with(has_key('key_1'))
|
17
|
+
# object.method_1('key_2' => 2)
|
18
|
+
# # error raised, because method_1 was not called with Hash containing key: 'key_1'
|
19
|
+
def has_key(key)
|
20
|
+
HasKey.new(key)
|
21
|
+
end
|
22
|
+
|
23
|
+
class HasKey < Base # :nodoc:
|
24
|
+
|
25
|
+
def initialize(key)
|
26
|
+
@key = key
|
27
|
+
end
|
28
|
+
|
29
|
+
def matches?(available_parameters)
|
30
|
+
parameter = available_parameters.shift
|
31
|
+
return false unless parameter.respond_to?(:keys)
|
32
|
+
parameter.keys.any? { |key| @key.to_matcher.matches?([key]) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def mocha_inspect
|
36
|
+
"has_key(#{@key.mocha_inspect})"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: has_value(value) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches +Hash+ containing +value+.
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(has_value(1))
|
12
|
+
# object.method_1('key_1' => 1, 'key_2' => 2)
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object = mock()
|
16
|
+
# object.expects(:method_1).with(has_value(1))
|
17
|
+
# object.method_1('key_2' => 2)
|
18
|
+
# # error raised, because method_1 was not called with Hash containing value: 1
|
19
|
+
def has_value(value)
|
20
|
+
HasValue.new(value)
|
21
|
+
end
|
22
|
+
|
23
|
+
class HasValue < Base # :nodoc:
|
24
|
+
|
25
|
+
def initialize(value)
|
26
|
+
@value = value
|
27
|
+
end
|
28
|
+
|
29
|
+
def matches?(available_parameters)
|
30
|
+
parameter = available_parameters.shift
|
31
|
+
return false unless parameter.respond_to?(:values)
|
32
|
+
parameter.values.any? { |value| @value.to_matcher.matches?([value]) }
|
33
|
+
end
|
34
|
+
|
35
|
+
def mocha_inspect
|
36
|
+
"has_value(#{@value.mocha_inspect})"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: includes(item) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches any object that responds true to include?(item)
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(includes('foo'))
|
12
|
+
# object.method_1(['foo', 'bar'])
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object.method_1(['baz'])
|
16
|
+
# # error raised, because ['baz'] does not include 'foo'.
|
17
|
+
def includes(item)
|
18
|
+
Includes.new(item)
|
19
|
+
end
|
20
|
+
|
21
|
+
class Includes < Base # :nodoc:
|
22
|
+
|
23
|
+
def initialize(item)
|
24
|
+
@item = item
|
25
|
+
end
|
26
|
+
|
27
|
+
def matches?(available_parameters)
|
28
|
+
parameter = available_parameters.shift
|
29
|
+
return false unless parameter.respond_to?(:include?)
|
30
|
+
return parameter.include?(@item)
|
31
|
+
end
|
32
|
+
|
33
|
+
def mocha_inspect
|
34
|
+
"includes(#{@item.mocha_inspect})"
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: instance_of(klass) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches any object that is an instance of +klass+
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(instance_of(String))
|
12
|
+
# object.method_1('string')
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object = mock()
|
16
|
+
# object.expects(:method_1).with(instance_of(String))
|
17
|
+
# object.method_1(99)
|
18
|
+
# # error raised, because method_1 was not called with an instance of String
|
19
|
+
def instance_of(klass)
|
20
|
+
InstanceOf.new(klass)
|
21
|
+
end
|
22
|
+
|
23
|
+
class InstanceOf < Base # :nodoc:
|
24
|
+
|
25
|
+
def initialize(klass)
|
26
|
+
@klass = klass
|
27
|
+
end
|
28
|
+
|
29
|
+
def matches?(available_parameters)
|
30
|
+
parameter = available_parameters.shift
|
31
|
+
parameter.instance_of?(@klass)
|
32
|
+
end
|
33
|
+
|
34
|
+
def mocha_inspect
|
35
|
+
"instance_of(#{@klass.mocha_inspect})"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: is_a(klass) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches any object that is a +klass+
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(is_a(Integer))
|
12
|
+
# object.method_1(99)
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object = mock()
|
16
|
+
# object.expects(:method_1).with(is_a(Integer))
|
17
|
+
# object.method_1('string')
|
18
|
+
# # error raised, because method_1 was not called with an Integer
|
19
|
+
def is_a(klass)
|
20
|
+
IsA.new(klass)
|
21
|
+
end
|
22
|
+
|
23
|
+
class IsA < Base # :nodoc:
|
24
|
+
|
25
|
+
def initialize(klass)
|
26
|
+
@klass = klass
|
27
|
+
end
|
28
|
+
|
29
|
+
def matches?(available_parameters)
|
30
|
+
parameter = available_parameters.shift
|
31
|
+
parameter.is_a?(@klass)
|
32
|
+
end
|
33
|
+
|
34
|
+
def mocha_inspect
|
35
|
+
"is_a(#{@klass.mocha_inspect})"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'mocha/parameter_matchers/base'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ParameterMatchers
|
6
|
+
|
7
|
+
# :call-seq: kind_of(klass) -> parameter_matcher
|
8
|
+
#
|
9
|
+
# Matches any object that is a kind of +klass+
|
10
|
+
# object = mock()
|
11
|
+
# object.expects(:method_1).with(kind_of(Integer))
|
12
|
+
# object.method_1(99)
|
13
|
+
# # no error raised
|
14
|
+
#
|
15
|
+
# object = mock()
|
16
|
+
# object.expects(:method_1).with(kind_of(Integer))
|
17
|
+
# object.method_1('string')
|
18
|
+
# # error raised, because method_1 was not called with a kind of Integer
|
19
|
+
def kind_of(klass)
|
20
|
+
KindOf.new(klass)
|
21
|
+
end
|
22
|
+
|
23
|
+
class KindOf < Base # :nodoc:
|
24
|
+
|
25
|
+
def initialize(klass)
|
26
|
+
@klass = klass
|
27
|
+
end
|
28
|
+
|
29
|
+
def matches?(available_parameters)
|
30
|
+
parameter = available_parameters.shift
|
31
|
+
parameter.kind_of?(@klass)
|
32
|
+
end
|
33
|
+
|
34
|
+
def mocha_inspect
|
35
|
+
"kind_of(#{@klass.mocha_inspect})"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|