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.
Files changed (172) hide show
  1. data/COPYING +3 -0
  2. data/MIT-LICENSE +7 -0
  3. data/README +39 -0
  4. data/RELEASE +294 -0
  5. data/Rakefile +214 -0
  6. data/examples/misc.rb +43 -0
  7. data/examples/mocha.rb +25 -0
  8. data/examples/stubba.rb +64 -0
  9. data/lib/mocha.rb +3 -0
  10. data/lib/mocha/any_instance_method.rb +59 -0
  11. data/lib/mocha/api.rb +173 -0
  12. data/lib/mocha/argument_iterator.rb +21 -0
  13. data/lib/mocha/backtrace_filter.rb +17 -0
  14. data/lib/mocha/cardinality.rb +95 -0
  15. data/lib/mocha/central.rb +27 -0
  16. data/lib/mocha/change_state_side_effect.rb +19 -0
  17. data/lib/mocha/class_method.rb +117 -0
  18. data/lib/mocha/configuration.rb +79 -0
  19. data/lib/mocha/deprecation.rb +22 -0
  20. data/lib/mocha/exception_raiser.rb +17 -0
  21. data/lib/mocha/expectation.rb +476 -0
  22. data/lib/mocha/expectation_error.rb +15 -0
  23. data/lib/mocha/expectation_list.rb +50 -0
  24. data/lib/mocha/in_state_ordering_constraint.rb +19 -0
  25. data/lib/mocha/inspect.rb +67 -0
  26. data/lib/mocha/instance_method.rb +16 -0
  27. data/lib/mocha/integration.rb +38 -0
  28. data/lib/mocha/integration/mini_test.rb +21 -0
  29. data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
  30. data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
  31. data/lib/mocha/integration/test_unit.rb +40 -0
  32. data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
  33. data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
  34. data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
  35. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
  36. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
  37. data/lib/mocha/is_a.rb +9 -0
  38. data/lib/mocha/logger.rb +15 -0
  39. data/lib/mocha/metaclass.rb +13 -0
  40. data/lib/mocha/method_matcher.rb +21 -0
  41. data/lib/mocha/mock.rb +200 -0
  42. data/lib/mocha/mockery.rb +181 -0
  43. data/lib/mocha/module_method.rb +16 -0
  44. data/lib/mocha/multiple_yields.rb +20 -0
  45. data/lib/mocha/names.rb +53 -0
  46. data/lib/mocha/no_yields.rb +11 -0
  47. data/lib/mocha/object.rb +187 -0
  48. data/lib/mocha/parameter_matchers.rb +27 -0
  49. data/lib/mocha/parameter_matchers/all_of.rb +42 -0
  50. data/lib/mocha/parameter_matchers/any_of.rb +47 -0
  51. data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
  52. data/lib/mocha/parameter_matchers/anything.rb +33 -0
  53. data/lib/mocha/parameter_matchers/base.rb +15 -0
  54. data/lib/mocha/parameter_matchers/equals.rb +42 -0
  55. data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
  56. data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
  57. data/lib/mocha/parameter_matchers/has_key.rb +43 -0
  58. data/lib/mocha/parameter_matchers/has_value.rb +43 -0
  59. data/lib/mocha/parameter_matchers/includes.rb +41 -0
  60. data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
  61. data/lib/mocha/parameter_matchers/is_a.rb +42 -0
  62. data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
  63. data/lib/mocha/parameter_matchers/not.rb +42 -0
  64. data/lib/mocha/parameter_matchers/object.rb +15 -0
  65. data/lib/mocha/parameter_matchers/optionally.rb +55 -0
  66. data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
  67. data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
  68. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
  69. data/lib/mocha/parameters_matcher.rb +37 -0
  70. data/lib/mocha/pretty_parameters.rb +28 -0
  71. data/lib/mocha/return_values.rb +31 -0
  72. data/lib/mocha/sequence.rb +42 -0
  73. data/lib/mocha/single_return_value.rb +17 -0
  74. data/lib/mocha/single_yield.rb +18 -0
  75. data/lib/mocha/standalone.rb +1 -0
  76. data/lib/mocha/state_machine.rb +91 -0
  77. data/lib/mocha/stubbing_error.rb +16 -0
  78. data/lib/mocha/unexpected_invocation.rb +18 -0
  79. data/lib/mocha/yield_parameters.rb +31 -0
  80. data/lib/mocha_standalone.rb +2 -0
  81. data/lib/stubba.rb +4 -0
  82. data/test/acceptance/acceptance_test_helper.rb +38 -0
  83. data/test/acceptance/api_test.rb +139 -0
  84. data/test/acceptance/bug_18914_test.rb +43 -0
  85. data/test/acceptance/bug_21465_test.rb +34 -0
  86. data/test/acceptance/bug_21563_test.rb +25 -0
  87. data/test/acceptance/expected_invocation_count_test.rb +196 -0
  88. data/test/acceptance/failure_messages_test.rb +64 -0
  89. data/test/acceptance/minitest_test.rb +153 -0
  90. data/test/acceptance/mocha_example_test.rb +98 -0
  91. data/test/acceptance/mocha_test_result_test.rb +84 -0
  92. data/test/acceptance/mock_test.rb +100 -0
  93. data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
  94. data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
  95. data/test/acceptance/optional_parameters_test.rb +70 -0
  96. data/test/acceptance/parameter_matcher_test.rb +209 -0
  97. data/test/acceptance/partial_mocks_test.rb +47 -0
  98. data/test/acceptance/return_value_test.rb +52 -0
  99. data/test/acceptance/sequence_test.rb +186 -0
  100. data/test/acceptance/states_test.rb +70 -0
  101. data/test/acceptance/stub_any_instance_method_test.rb +195 -0
  102. data/test/acceptance/stub_class_method_test.rb +203 -0
  103. data/test/acceptance/stub_everything_test.rb +56 -0
  104. data/test/acceptance/stub_instance_method_test.rb +203 -0
  105. data/test/acceptance/stub_module_method_test.rb +163 -0
  106. data/test/acceptance/stub_test.rb +52 -0
  107. data/test/acceptance/stubba_example_test.rb +102 -0
  108. data/test/acceptance/stubba_test.rb +15 -0
  109. data/test/acceptance/stubba_test_result_test.rb +66 -0
  110. data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
  111. data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
  112. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
  113. data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
  114. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
  115. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
  116. data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
  117. data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
  118. data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
  119. data/test/deprecation_disabler.rb +15 -0
  120. data/test/execution_point.rb +36 -0
  121. data/test/method_definer.rb +24 -0
  122. data/test/simple_counter.rb +13 -0
  123. data/test/test_helper.rb +25 -0
  124. data/test/test_runner.rb +33 -0
  125. data/test/unit/any_instance_method_test.rb +126 -0
  126. data/test/unit/array_inspect_test.rb +16 -0
  127. data/test/unit/backtrace_filter_test.rb +19 -0
  128. data/test/unit/cardinality_test.rb +56 -0
  129. data/test/unit/central_test.rb +65 -0
  130. data/test/unit/change_state_side_effect_test.rb +41 -0
  131. data/test/unit/class_method_test.rb +295 -0
  132. data/test/unit/configuration_test.rb +38 -0
  133. data/test/unit/date_time_inspect_test.rb +21 -0
  134. data/test/unit/exception_raiser_test.rb +42 -0
  135. data/test/unit/expectation_list_test.rb +57 -0
  136. data/test/unit/expectation_test.rb +480 -0
  137. data/test/unit/hash_inspect_test.rb +16 -0
  138. data/test/unit/in_state_ordering_constraint_test.rb +43 -0
  139. data/test/unit/metaclass_test.rb +22 -0
  140. data/test/unit/method_matcher_test.rb +23 -0
  141. data/test/unit/mock_test.rb +302 -0
  142. data/test/unit/mockery_test.rb +149 -0
  143. data/test/unit/multiple_yields_test.rb +18 -0
  144. data/test/unit/no_yields_test.rb +18 -0
  145. data/test/unit/object_inspect_test.rb +37 -0
  146. data/test/unit/object_test.rb +82 -0
  147. data/test/unit/parameter_matchers/all_of_test.rb +26 -0
  148. data/test/unit/parameter_matchers/any_of_test.rb +26 -0
  149. data/test/unit/parameter_matchers/anything_test.rb +21 -0
  150. data/test/unit/parameter_matchers/equals_test.rb +25 -0
  151. data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
  152. data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
  153. data/test/unit/parameter_matchers/has_key_test.rb +55 -0
  154. data/test/unit/parameter_matchers/has_value_test.rb +57 -0
  155. data/test/unit/parameter_matchers/includes_test.rb +44 -0
  156. data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  157. data/test/unit/parameter_matchers/is_a_test.rb +25 -0
  158. data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  159. data/test/unit/parameter_matchers/not_test.rb +26 -0
  160. data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
  161. data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
  162. data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
  163. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
  164. data/test/unit/parameters_matcher_test.rb +121 -0
  165. data/test/unit/return_values_test.rb +63 -0
  166. data/test/unit/sequence_test.rb +104 -0
  167. data/test/unit/single_return_value_test.rb +14 -0
  168. data/test/unit/single_yield_test.rb +18 -0
  169. data/test/unit/state_machine_test.rb +98 -0
  170. data/test/unit/string_inspect_test.rb +11 -0
  171. data/test/unit/yield_parameters_test.rb +93 -0
  172. metadata +240 -0
@@ -0,0 +1,57 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/has_value'
4
+ require 'mocha/parameter_matchers/object'
5
+ require 'mocha/parameter_matchers/equals'
6
+ require 'mocha/inspect'
7
+
8
+ class HasValueTest < Test::Unit::TestCase
9
+
10
+ include Mocha::ParameterMatchers
11
+
12
+ def test_should_match_hash_including_specified_value
13
+ matcher = has_value('value_1')
14
+ assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
15
+ end
16
+
17
+ def test_should_not_match_hash_not_including_specified_value
18
+ matcher = has_value('value_1')
19
+ assert !matcher.matches?([{ :key_2 => 'value_2' }])
20
+ end
21
+
22
+ def test_should_describe_matcher
23
+ matcher = has_value('value_1')
24
+ assert_equal "has_value('value_1')", matcher.mocha_inspect
25
+ end
26
+
27
+ def test_should_match_hash_including_specified_value_with_nested_value_matcher
28
+ matcher = has_value(equals('value_1'))
29
+ assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
30
+ end
31
+
32
+ def test_should_not_match_hash_not_including_specified_value_with_nested_value_matcher
33
+ matcher = has_value(equals('value_1'))
34
+ assert !matcher.matches?([{ :key_2 => 'value_2' }])
35
+ end
36
+
37
+ def test_should_not_raise_error_on_empty_arguments
38
+ matcher = has_value('value_1')
39
+ assert_nothing_raised { matcher.matches?([]) }
40
+ end
41
+
42
+ def test_should_not_match_empty_arguments
43
+ matcher = has_value('value_1')
44
+ assert !matcher.matches?([])
45
+ end
46
+
47
+ def test_should_not_raise_error_on_argument_that_does_not_respond_to_values
48
+ matcher = has_value('value_1')
49
+ assert_nothing_raised { matcher.matches?(['value_1']) }
50
+ end
51
+
52
+ def test_should_not_match_on_argument_that_does_not_respond_to_values
53
+ matcher = has_value('value_1')
54
+ assert !matcher.matches?(['value_1'])
55
+ end
56
+
57
+ end
@@ -0,0 +1,44 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/includes'
4
+ require 'mocha/inspect'
5
+
6
+ class IncludesTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_object_including_value
11
+ matcher = includes(:x)
12
+ assert matcher.matches?([[:x, :y, :z]])
13
+ end
14
+
15
+ def test_should_not_match_object_that_does_not_include_value
16
+ matcher = includes(:not_included)
17
+ assert !matcher.matches?([[:x, :y, :z]])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = includes(:x)
22
+ assert_equal "includes(:x)", matcher.mocha_inspect
23
+ end
24
+
25
+ def test_should_not_raise_error_on_emtpy_arguments
26
+ matcher = includes(:x)
27
+ assert_nothing_raised { matcher.matches?([]) }
28
+ end
29
+
30
+ def test_should_not_match_on_empty_arguments
31
+ matcher = includes(:x)
32
+ assert !matcher.matches?([])
33
+ end
34
+
35
+ def test_should_not_raise_error_on_argument_that_does_not_respond_to_include
36
+ matcher = includes(:x)
37
+ assert_nothing_raised { matcher.matches?([:x]) }
38
+ end
39
+
40
+ def test_should_not_match_on_argument_that_does_not_respond_to_include
41
+ matcher = includes(:x)
42
+ assert !matcher.matches?([:x])
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/instance_of'
4
+ require 'mocha/inspect'
5
+
6
+ class InstanceOfTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_object_that_is_an_instance_of_specified_class
11
+ matcher = instance_of(String)
12
+ assert matcher.matches?(['string'])
13
+ end
14
+
15
+ def test_should_not_match_object_that_is_not_an_instance_of_specified_class
16
+ matcher = instance_of(String)
17
+ assert !matcher.matches?([99])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = instance_of(String)
22
+ assert_equal "instance_of(#{ on_macruby? ? 'NSMutableString' : 'String' })", matcher.mocha_inspect
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/is_a'
4
+ require 'mocha/inspect'
5
+
6
+ class IsATest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_object_that_is_a_specified_class
11
+ matcher = is_a(Integer)
12
+ assert matcher.matches?([99])
13
+ end
14
+
15
+ def test_should_not_match_object_that_is_not_a_specified_class
16
+ matcher = is_a(Integer)
17
+ assert !matcher.matches?(['string'])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = is_a(Integer)
22
+ assert_equal "is_a(Integer)", matcher.mocha_inspect
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/kind_of'
4
+ require 'mocha/inspect'
5
+
6
+ class KindOfTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_object_that_is_a_kind_of_specified_class
11
+ matcher = kind_of(Integer)
12
+ assert matcher.matches?([99])
13
+ end
14
+
15
+ def test_should_not_match_object_that_is_not_a_kind_of_specified_class
16
+ matcher = kind_of(Integer)
17
+ assert !matcher.matches?(['string'])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = kind_of(Integer)
22
+ assert_equal "kind_of(Integer)", matcher.mocha_inspect
23
+ end
24
+
25
+ end
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/not'
4
+ require 'mocha/inspect'
5
+ require 'stub_matcher'
6
+
7
+ class NotTest < Test::Unit::TestCase
8
+
9
+ include Mocha::ParameterMatchers
10
+
11
+ def test_should_match_if_matcher_does_not_match
12
+ matcher = Not(Stub::Matcher.new(false))
13
+ assert matcher.matches?(['any_old_value'])
14
+ end
15
+
16
+ def test_should_not_match_if_matcher_does_match
17
+ matcher = Not(Stub::Matcher.new(true))
18
+ assert !matcher.matches?(['any_old_value'])
19
+ end
20
+
21
+ def test_should_describe_matcher
22
+ matcher = Not(Stub::Matcher.new(true))
23
+ assert_equal 'Not(matcher(true))', matcher.mocha_inspect
24
+ end
25
+
26
+ end
@@ -0,0 +1,46 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/regexp_matches'
4
+ require 'mocha/inspect'
5
+
6
+ class RegexpMatchesTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_parameter_matching_regular_expression
11
+ matcher = regexp_matches(/oo/)
12
+ assert matcher.matches?(['foo'])
13
+ end
14
+
15
+ def test_should_not_match_parameter_not_matching_regular_expression
16
+ matcher = regexp_matches(/oo/)
17
+ assert !matcher.matches?(['bar'])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = regexp_matches(/oo/)
22
+ assert_equal "regexp_matches(/oo/)", matcher.mocha_inspect
23
+ end
24
+
25
+ def test_should_not_raise_error_on_empty_arguments
26
+ matcher = regexp_matches(/oo/)
27
+ assert_nothing_raised { matcher.matches?([]) }
28
+ end
29
+
30
+ def test_should_not_match_on_empty_arguments
31
+ matcher = regexp_matches(/oo/)
32
+ assert !matcher.matches?([])
33
+ end
34
+
35
+ def test_should_not_raise_error_on_argument_that_does_not_respond_to_equals_tilde
36
+ object_not_responding_to_equals_tilde = Class.new { undef =~ }.new
37
+ matcher = regexp_matches(/oo/)
38
+ assert_nothing_raised { matcher.matches?([object_not_responding_to_equals_tilde]) }
39
+ end
40
+
41
+ def test_should_not_match_on_argument_that_does_not_respond_to_equals_tilde
42
+ object_not_responding_to_equals_tilde = Class.new { undef =~ }.new
43
+ matcher = regexp_matches(/oo/)
44
+ assert !matcher.matches?([object_not_responding_to_equals_tilde])
45
+ end
46
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/responds_with'
4
+ require 'mocha/inspect'
5
+
6
+ class RespondsWithTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_parameter_responding_with_expected_value
11
+ matcher = responds_with(:upcase, 'FOO')
12
+ assert matcher.matches?(['foo'])
13
+ end
14
+
15
+ def test_should_not_match_parameter_responding_with_unexpected_value
16
+ matcher = responds_with(:upcase, 'FOO')
17
+ assert !matcher.matches?(['bar'])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = responds_with(:foo, :bar)
22
+ assert_equal 'responds_with(:foo, :bar)', matcher.mocha_inspect
23
+ end
24
+
25
+ end
@@ -0,0 +1,27 @@
1
+ module Stub
2
+
3
+ class Matcher
4
+
5
+ attr_accessor :value
6
+
7
+ def initialize(matches)
8
+ @matches = matches
9
+ end
10
+
11
+ def matches?(available_parameters)
12
+ value = available_parameters.shift
13
+ @value = value
14
+ @matches
15
+ end
16
+
17
+ def mocha_inspect
18
+ "matcher(#{@matches})"
19
+ end
20
+
21
+ def to_matcher
22
+ self
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/yaml_equivalent'
4
+ require 'mocha/inspect'
5
+
6
+ class YamlEquivalentTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_parameter_matching_yaml_representation_of_object
11
+ matcher = yaml_equivalent([1, 2, 3])
12
+ assert matcher.matches?(["--- \n- 1\n- 2\n- 3\n"])
13
+ end
14
+
15
+ def test_should_not_match_parameter_matching_yaml_representation_of_object
16
+ matcher = yaml_equivalent([1, 2, 3])
17
+ assert !matcher.matches?(["--- \n- 4\n- 5\n"])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = yaml_equivalent([1, 2, 3])
22
+ assert_equal "yaml_equivalent([1, 2, 3])", matcher.mocha_inspect
23
+ end
24
+
25
+ end
@@ -0,0 +1,121 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/parameters_matcher'
3
+
4
+ class ParametersMatcherTest < Test::Unit::TestCase
5
+
6
+ include Mocha
7
+
8
+ def test_should_match_any_actual_parameters_if_no_expected_parameters_specified
9
+ parameters_matcher = ParametersMatcher.new
10
+ assert parameters_matcher.match?(actual_parameters = [1, 2, 3])
11
+ end
12
+
13
+ def test_should_match_if_actual_parameters_are_same_as_expected_parameters
14
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
15
+ assert parameters_matcher.match?(actual_parameters = [4, 5, 6])
16
+ end
17
+
18
+ def test_should_not_match_if_actual_parameters_are_different_from_expected_parameters
19
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
20
+ assert !parameters_matcher.match?(actual_parameters = [1, 2, 3])
21
+ end
22
+
23
+ def test_should_not_match_if_there_are_less_actual_parameters_than_expected_parameters
24
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
25
+ assert !parameters_matcher.match?(actual_parameters = [4, 5])
26
+ end
27
+
28
+ def test_should_not_match_if_there_are_more_actual_parameters_than_expected_parameters
29
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5])
30
+ assert !parameters_matcher.match?(actual_parameters = [4, 5, 6])
31
+ end
32
+
33
+ def test_should_not_match_if_not_all_required_parameters_are_supplied
34
+ optionals = ParameterMatchers::Optionally.new(6, 7)
35
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
36
+ assert !parameters_matcher.match?(actual_parameters = [4])
37
+ end
38
+
39
+ def test_should_match_if_all_required_parameters_match_and_no_optional_parameters_are_supplied
40
+ optionals = ParameterMatchers::Optionally.new(6, 7)
41
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
42
+ assert parameters_matcher.match?(actual_parameters = [4, 5])
43
+ end
44
+
45
+ def test_should_match_if_all_required_and_optional_parameters_match_and_some_optional_parameters_are_supplied
46
+ optionals = ParameterMatchers::Optionally.new(6, 7)
47
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
48
+ assert parameters_matcher.match?(actual_parameters = [4, 5, 6])
49
+ end
50
+
51
+ def test_should_match_if_all_required_and_optional_parameters_match_and_all_optional_parameters_are_supplied
52
+ optionals = ParameterMatchers::Optionally.new(6, 7)
53
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
54
+ assert parameters_matcher.match?(actual_parameters = [4, 5, 6, 7])
55
+ end
56
+
57
+ def test_should_not_match_if_all_required_and_optional_parameters_match_but_too_many_optional_parameters_are_supplied
58
+ optionals = ParameterMatchers::Optionally.new(6, 7)
59
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
60
+ assert !parameters_matcher.match?(actual_parameters = [4, 5, 6, 7, 8])
61
+ end
62
+
63
+ def test_should_not_match_if_all_required_parameters_match_but_some_optional_parameters_do_not_match
64
+ optionals = ParameterMatchers::Optionally.new(6, 7)
65
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
66
+ assert !parameters_matcher.match?(actual_parameters = [4, 5, 6, 0])
67
+ end
68
+
69
+ def test_should_not_match_if_some_required_parameters_do_not_match_although_all_optional_parameters_do_match
70
+ optionals = ParameterMatchers::Optionally.new(6, 7)
71
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
72
+ assert !parameters_matcher.match?(actual_parameters = [4, 0, 6])
73
+ end
74
+
75
+ def test_should_not_match_if_all_required_parameters_match_but_no_optional_parameters_match
76
+ optionals = ParameterMatchers::Optionally.new(6, 7)
77
+ parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
78
+ assert !parameters_matcher.match?(actual_parameters = [4, 5, 0, 0])
79
+ end
80
+
81
+ def test_should_match_if_actual_parameters_satisfy_matching_block
82
+ parameters_matcher = ParametersMatcher.new { |x, y| x + y == 3 }
83
+ assert parameters_matcher.match?(actual_parameters = [1, 2])
84
+ end
85
+
86
+ def test_should_not_match_if_actual_parameters_do_not_satisfy_matching_block
87
+ parameters_matcher = ParametersMatcher.new { |x, y| x + y == 3 }
88
+ assert !parameters_matcher.match?(actual_parameters = [2, 3])
89
+ end
90
+
91
+ def test_should_remove_outer_array_braces
92
+ params = [1, 2, [3, 4]]
93
+ parameters_matcher = ParametersMatcher.new(params)
94
+ assert_equal '(1, 2, [3, 4])', parameters_matcher.mocha_inspect
95
+ end
96
+
97
+ def test_should_display_numeric_arguments_as_is
98
+ params = [1, 2, 3]
99
+ parameters_matcher = ParametersMatcher.new(params)
100
+ assert_equal '(1, 2, 3)', parameters_matcher.mocha_inspect
101
+ end
102
+
103
+ def test_should_remove_curly_braces_if_hash_is_only_argument
104
+ params = [{:a => 1, :z => 2}]
105
+ parameters_matcher = ParametersMatcher.new(params)
106
+ assert_nil parameters_matcher.mocha_inspect.index('{')
107
+ assert_nil parameters_matcher.mocha_inspect.index('}')
108
+ end
109
+
110
+ def test_should_not_remove_curly_braces_if_hash_is_not_the_only_argument
111
+ params = [1, {:a => 1}]
112
+ parameters_matcher = ParametersMatcher.new(params)
113
+ assert_equal '(1, {:a => 1})', parameters_matcher.mocha_inspect
114
+ end
115
+
116
+ def test_should_indicate_that_matcher_will_match_any_actual_parameters
117
+ parameters_matcher = ParametersMatcher.new
118
+ assert_equal '(any_parameters)', parameters_matcher.mocha_inspect
119
+ end
120
+
121
+ end