mocha 0.5.6 → 3.0.2

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 (192) hide show
  1. checksums.yaml +7 -0
  2. data/.gemtest +0 -0
  3. data/.github/FUNDING.yml +1 -0
  4. data/.rubocop.yml +92 -0
  5. data/.rubocop_todo.yml +39 -0
  6. data/.yardopts +25 -0
  7. data/CONTRIBUTING.md +7 -0
  8. data/COPYING.md +3 -0
  9. data/Gemfile +17 -0
  10. data/{MIT-LICENSE → MIT-LICENSE.md} +2 -2
  11. data/README.md +361 -0
  12. data/RELEASE.md +1235 -0
  13. data/Rakefile +165 -123
  14. data/gemfiles/Gemfile.minitest.latest +8 -0
  15. data/gemfiles/Gemfile.rubocop +9 -0
  16. data/gemfiles/Gemfile.test-unit.latest +8 -0
  17. data/lib/mocha/any_instance_method.rb +12 -26
  18. data/lib/mocha/any_instance_receiver.rb +20 -0
  19. data/lib/mocha/api.rb +213 -0
  20. data/lib/mocha/argument_iterator.rb +17 -0
  21. data/lib/mocha/backtrace_filter.rb +15 -0
  22. data/lib/mocha/block_matchers.rb +33 -0
  23. data/lib/mocha/cardinality.rb +110 -0
  24. data/lib/mocha/central.rb +33 -22
  25. data/lib/mocha/change_state_side_effect.rb +17 -0
  26. data/lib/mocha/class_methods.rb +67 -0
  27. data/lib/mocha/configuration.rb +338 -0
  28. data/lib/mocha/default_name.rb +15 -0
  29. data/lib/mocha/default_receiver.rb +13 -0
  30. data/lib/mocha/deprecation.rb +19 -14
  31. data/lib/mocha/detection/minitest.rb +25 -0
  32. data/lib/mocha/detection/test_unit.rb +30 -0
  33. data/lib/mocha/error_with_filtered_backtrace.rb +15 -0
  34. data/lib/mocha/exception_raiser.rb +11 -10
  35. data/lib/mocha/expectation.rb +553 -168
  36. data/lib/mocha/expectation_error.rb +9 -14
  37. data/lib/mocha/expectation_error_factory.rb +37 -0
  38. data/lib/mocha/expectation_list.rb +30 -14
  39. data/lib/mocha/hooks.rb +55 -0
  40. data/lib/mocha/ignoring_warning.rb +20 -0
  41. data/lib/mocha/impersonating_any_instance_name.rb +13 -0
  42. data/lib/mocha/impersonating_name.rb +13 -0
  43. data/lib/mocha/in_state_ordering_constraint.rb +17 -0
  44. data/lib/mocha/inspect.rb +56 -22
  45. data/lib/mocha/instance_method.rb +17 -4
  46. data/lib/mocha/integration/assertion_counter.rb +15 -0
  47. data/lib/mocha/integration/minitest/adapter.rb +71 -0
  48. data/lib/mocha/integration/minitest.rb +29 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +26 -0
  50. data/lib/mocha/integration/test_unit/adapter.rb +61 -0
  51. data/lib/mocha/integration/test_unit.rb +29 -0
  52. data/lib/mocha/integration.rb +5 -0
  53. data/lib/mocha/invocation.rb +76 -0
  54. data/lib/mocha/logger.rb +13 -0
  55. data/lib/mocha/macos_version.rb +7 -0
  56. data/lib/mocha/method_matcher.rb +8 -10
  57. data/lib/mocha/minitest.rb +7 -0
  58. data/lib/mocha/mock.rb +333 -108
  59. data/lib/mocha/mockery.rb +199 -0
  60. data/lib/mocha/name.rb +13 -0
  61. data/lib/mocha/not_initialized_error.rb +9 -0
  62. data/lib/mocha/object_methods.rb +183 -0
  63. data/lib/mocha/object_receiver.rb +20 -0
  64. data/lib/mocha/parameter_matchers/all_of.rb +38 -28
  65. data/lib/mocha/parameter_matchers/any_of.rb +44 -33
  66. data/lib/mocha/parameter_matchers/any_parameters.rb +33 -26
  67. data/lib/mocha/parameter_matchers/anything.rb +31 -22
  68. data/lib/mocha/parameter_matchers/base_methods.rb +64 -0
  69. data/lib/mocha/parameter_matchers/equals.rb +36 -25
  70. data/lib/mocha/parameter_matchers/equivalent_uri.rb +65 -0
  71. data/lib/mocha/parameter_matchers/has_entries.rb +48 -29
  72. data/lib/mocha/parameter_matchers/has_entry.rb +90 -42
  73. data/lib/mocha/parameter_matchers/has_key.rb +39 -26
  74. data/lib/mocha/parameter_matchers/has_keys.rb +59 -0
  75. data/lib/mocha/parameter_matchers/has_value.rb +39 -26
  76. data/lib/mocha/parameter_matchers/includes.rb +88 -23
  77. data/lib/mocha/parameter_matchers/instance_methods.rb +28 -0
  78. data/lib/mocha/parameter_matchers/instance_of.rb +37 -26
  79. data/lib/mocha/parameter_matchers/is_a.rb +38 -26
  80. data/lib/mocha/parameter_matchers/kind_of.rb +39 -26
  81. data/lib/mocha/parameter_matchers/not.rb +37 -26
  82. data/lib/mocha/parameter_matchers/optionally.rb +52 -17
  83. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +91 -0
  84. data/lib/mocha/parameter_matchers/regexp_matches.rb +37 -25
  85. data/lib/mocha/parameter_matchers/responds_with.rb +82 -0
  86. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +55 -0
  87. data/lib/mocha/parameter_matchers.rb +12 -5
  88. data/lib/mocha/parameters_matcher.rb +28 -19
  89. data/lib/mocha/raised_exception.rb +13 -0
  90. data/lib/mocha/return_values.rb +13 -18
  91. data/lib/mocha/ruby_version.rb +7 -0
  92. data/lib/mocha/sequence.rb +23 -17
  93. data/lib/mocha/single_return_value.rb +8 -18
  94. data/lib/mocha/state_machine.rb +95 -0
  95. data/lib/mocha/stubbed_method.rb +96 -0
  96. data/lib/mocha/stubbing_error.rb +10 -0
  97. data/lib/mocha/test_unit.rb +7 -0
  98. data/lib/mocha/thrower.rb +15 -0
  99. data/lib/mocha/thrown_object.rb +14 -0
  100. data/lib/mocha/version.rb +5 -0
  101. data/lib/mocha/yield_parameters.rb +12 -20
  102. data/lib/mocha.rb +19 -17
  103. data/mise.toml +2 -0
  104. data/mocha.gemspec +40 -0
  105. metadata +130 -145
  106. data/COPYING +0 -3
  107. data/README +0 -35
  108. data/RELEASE +0 -188
  109. data/examples/misc.rb +0 -44
  110. data/examples/mocha.rb +0 -26
  111. data/examples/stubba.rb +0 -65
  112. data/lib/mocha/auto_verify.rb +0 -118
  113. data/lib/mocha/class_method.rb +0 -66
  114. data/lib/mocha/infinite_range.rb +0 -25
  115. data/lib/mocha/is_a.rb +0 -9
  116. data/lib/mocha/metaclass.rb +0 -7
  117. data/lib/mocha/missing_expectation.rb +0 -17
  118. data/lib/mocha/multiple_yields.rb +0 -20
  119. data/lib/mocha/no_yields.rb +0 -11
  120. data/lib/mocha/object.rb +0 -110
  121. data/lib/mocha/parameter_matchers/base.rb +0 -15
  122. data/lib/mocha/parameter_matchers/object.rb +0 -9
  123. data/lib/mocha/pretty_parameters.rb +0 -28
  124. data/lib/mocha/setup_and_teardown.rb +0 -23
  125. data/lib/mocha/single_yield.rb +0 -18
  126. data/lib/mocha/standalone.rb +0 -32
  127. data/lib/mocha/stub.rb +0 -18
  128. data/lib/mocha/test_case_adapter.rb +0 -49
  129. data/lib/mocha_standalone.rb +0 -2
  130. data/lib/stubba.rb +0 -2
  131. data/test/acceptance/expected_invocation_count_acceptance_test.rb +0 -187
  132. data/test/acceptance/mocha_acceptance_test.rb +0 -98
  133. data/test/acceptance/mock_with_initializer_block_acceptance_test.rb +0 -44
  134. data/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +0 -71
  135. data/test/acceptance/optional_parameters_acceptance_test.rb +0 -63
  136. data/test/acceptance/parameter_matcher_acceptance_test.rb +0 -117
  137. data/test/acceptance/partial_mocks_acceptance_test.rb +0 -40
  138. data/test/acceptance/sequence_acceptance_test.rb +0 -179
  139. data/test/acceptance/standalone_acceptance_test.rb +0 -131
  140. data/test/acceptance/stubba_acceptance_test.rb +0 -102
  141. data/test/active_record_test_case.rb +0 -36
  142. data/test/deprecation_disabler.rb +0 -15
  143. data/test/execution_point.rb +0 -34
  144. data/test/integration/mocha_test_result_integration_test.rb +0 -105
  145. data/test/integration/stubba_integration_test.rb +0 -89
  146. data/test/integration/stubba_test_result_integration_test.rb +0 -85
  147. data/test/method_definer.rb +0 -18
  148. data/test/test_helper.rb +0 -12
  149. data/test/test_runner.rb +0 -31
  150. data/test/unit/any_instance_method_test.rb +0 -126
  151. data/test/unit/array_inspect_test.rb +0 -16
  152. data/test/unit/auto_verify_test.rb +0 -129
  153. data/test/unit/central_test.rb +0 -124
  154. data/test/unit/class_method_test.rb +0 -200
  155. data/test/unit/date_time_inspect_test.rb +0 -21
  156. data/test/unit/expectation_error_test.rb +0 -24
  157. data/test/unit/expectation_list_test.rb +0 -75
  158. data/test/unit/expectation_raiser_test.rb +0 -28
  159. data/test/unit/expectation_test.rb +0 -483
  160. data/test/unit/hash_inspect_test.rb +0 -16
  161. data/test/unit/infinite_range_test.rb +0 -53
  162. data/test/unit/metaclass_test.rb +0 -22
  163. data/test/unit/method_matcher_test.rb +0 -23
  164. data/test/unit/missing_expectation_test.rb +0 -42
  165. data/test/unit/mock_test.rb +0 -323
  166. data/test/unit/multiple_yields_test.rb +0 -18
  167. data/test/unit/no_yield_test.rb +0 -18
  168. data/test/unit/object_inspect_test.rb +0 -37
  169. data/test/unit/object_test.rb +0 -165
  170. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  171. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  172. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  173. data/test/unit/parameter_matchers/has_entries_test.rb +0 -30
  174. data/test/unit/parameter_matchers/has_entry_test.rb +0 -40
  175. data/test/unit/parameter_matchers/has_key_test.rb +0 -25
  176. data/test/unit/parameter_matchers/has_value_test.rb +0 -25
  177. data/test/unit/parameter_matchers/includes_test.rb +0 -25
  178. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  179. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  180. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  181. data/test/unit/parameter_matchers/not_test.rb +0 -26
  182. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -25
  183. data/test/unit/parameter_matchers/stub_matcher.rb +0 -23
  184. data/test/unit/parameters_matcher_test.rb +0 -121
  185. data/test/unit/return_values_test.rb +0 -63
  186. data/test/unit/sequence_test.rb +0 -104
  187. data/test/unit/setup_and_teardown_test.rb +0 -76
  188. data/test/unit/single_return_value_test.rb +0 -33
  189. data/test/unit/single_yield_test.rb +0 -18
  190. data/test/unit/string_inspect_test.rb +0 -11
  191. data/test/unit/stub_test.rb +0 -24
  192. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,40 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
-
3
- require 'mocha/parameter_matchers/has_entry'
4
- require 'mocha/inspect'
5
-
6
- class HasEntryTest < Test::Unit::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_hash_including_specified_key_value_pair
11
- matcher = has_entry(:key_1, 'value_1')
12
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
13
- end
14
-
15
- def test_should_not_match_hash_not_including_specified_key_value_pair
16
- matcher = has_entry(:key_1, 'value_2')
17
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
18
- end
19
-
20
- def test_should_match_hash_including_specified_entry
21
- matcher = has_entry(:key_1 => 'value_1')
22
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
23
- end
24
-
25
- def test_should_not_match_hash_not_including_specified_entry
26
- matcher = has_entry(:key_1 => 'value_2')
27
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
28
- end
29
-
30
- def test_should_describe_matcher_with_key_value_pair
31
- matcher = has_entry(:key_1, 'value_1')
32
- assert_equal "has_entry(:key_1, 'value_1')", matcher.mocha_inspect
33
- end
34
-
35
- def test_should_describe_matcher_with_entry
36
- matcher = has_entry(:key_1 => 'value_1')
37
- assert_equal "has_entry(:key_1, 'value_1')", matcher.mocha_inspect
38
- end
39
-
40
- end
@@ -1,25 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
-
3
- require 'mocha/parameter_matchers/has_key'
4
- require 'mocha/inspect'
5
-
6
- class HasKeyTest < Test::Unit::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_hash_including_specified_key
11
- matcher = has_key(:key_1)
12
- assert matcher.matches?([{ :key_1 => 1, :key_2 => 2 }])
13
- end
14
-
15
- def test_should_not_match_hash_not_including_specified_key
16
- matcher = has_key(:key_1)
17
- assert !matcher.matches?([{ :key_2 => 2 }])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = has_key(:key)
22
- assert_equal 'has_key(:key)', matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,25 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
-
3
- require 'mocha/parameter_matchers/has_value'
4
- require 'mocha/inspect'
5
-
6
- class HasValueTest < Test::Unit::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_hash_including_specified_value
11
- matcher = has_value('value_1')
12
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
13
- end
14
-
15
- def test_should_not_match_hash_not_including_specified_value
16
- matcher = has_value('value_1')
17
- assert !matcher.matches?([{ :key_2 => 'value_2' }])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = has_value('value_1')
22
- assert_equal "has_value('value_1')", matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,25 +0,0 @@
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
- end
@@ -1,25 +0,0 @@
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(String)", matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,25 +0,0 @@
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
@@ -1,25 +0,0 @@
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
@@ -1,26 +0,0 @@
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
@@ -1,25 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
-
3
- require 'mocha/parameter_matchers/regexp_matches'
4
- require 'mocha/inspect'
5
-
6
- class MatchesTest < 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
- end
@@ -1,23 +0,0 @@
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
- end
22
-
23
- end
@@ -1,121 +0,0 @@
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
@@ -1,63 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
-
3
- require 'mocha/return_values'
4
-
5
- class ReturnValuesTest < Test::Unit::TestCase
6
-
7
- include Mocha
8
-
9
- def test_should_return_nil
10
- values = ReturnValues.new
11
- assert_nil values.next
12
- end
13
-
14
- def test_should_keep_returning_nil
15
- values = ReturnValues.new
16
- values.next
17
- assert_nil values.next
18
- assert_nil values.next
19
- end
20
-
21
- def test_should_return_evaluated_single_return_value
22
- values = ReturnValues.new(SingleReturnValue.new('value'))
23
- assert_equal 'value', values.next
24
- end
25
-
26
- def test_should_keep_returning_evaluated_single_return_value
27
- values = ReturnValues.new(SingleReturnValue.new('value'))
28
- values.next
29
- assert_equal 'value', values.next
30
- assert_equal 'value', values.next
31
- end
32
-
33
- def test_should_return_consecutive_evaluated_single_return_values
34
- values = ReturnValues.new(SingleReturnValue.new('value_1'), SingleReturnValue.new('value_2'))
35
- assert_equal 'value_1', values.next
36
- assert_equal 'value_2', values.next
37
- end
38
-
39
- def test_should_keep_returning_last_of_consecutive_evaluated_single_return_values
40
- values = ReturnValues.new(SingleReturnValue.new('value_1'), SingleReturnValue.new('value_2'))
41
- values.next
42
- values.next
43
- assert_equal 'value_2', values.next
44
- assert_equal 'value_2', values.next
45
- end
46
-
47
- def test_should_build_single_return_values_for_each_values
48
- values = ReturnValues.build('value_1', 'value_2', 'value_3').values
49
- assert_equal 'value_1', values[0].evaluate
50
- assert_equal 'value_2', values[1].evaluate
51
- assert_equal 'value_3', values[2].evaluate
52
- end
53
-
54
- def test_should_combine_two_sets_of_return_values
55
- values_1 = ReturnValues.build('value_1')
56
- values_2 = ReturnValues.build('value_2a', 'value_2b')
57
- values = (values_1 + values_2).values
58
- assert_equal 'value_1', values[0].evaluate
59
- assert_equal 'value_2a', values[1].evaluate
60
- assert_equal 'value_2b', values[2].evaluate
61
- end
62
-
63
- end
@@ -1,104 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
- require 'mocha/sequence'
3
- require 'mocha/expectation'
4
-
5
- class SequenceTest < Test::Unit::TestCase
6
-
7
- include Mocha
8
-
9
- class FakeExpectation
10
-
11
- attr_reader :ordering_constraints
12
-
13
- def initialize(satisfied = false)
14
- @satisfied = satisfied
15
- @ordering_constraints = []
16
- end
17
-
18
- def add_ordering_constraint(ordering_constraint)
19
- @ordering_constraints << ordering_constraint
20
- end
21
-
22
- def satisfied?
23
- @satisfied
24
- end
25
-
26
- end
27
-
28
- def test_should_be_satisfied_if_no_expectations_added
29
- sequence = Sequence.new('name')
30
- assert sequence.satisfied_to_index?(0)
31
- end
32
-
33
- def test_should_be_satisfied_if_one_unsatisfied_expectations_added_but_it_is_not_included_by_index
34
- sequence = Sequence.new('name')
35
- expectation = FakeExpectation.new(satisfied = false)
36
- sequence.constrain_as_next_in_sequence(expectation)
37
- assert sequence.satisfied_to_index?(0)
38
- end
39
-
40
- def test_should_not_be_satisfied_if_one_unsatisfied_expectations_added_and_it_is_included_by_index
41
- sequence = Sequence.new('name')
42
- expectation = FakeExpectation.new(satisfied = false)
43
- sequence.constrain_as_next_in_sequence(expectation)
44
- assert !sequence.satisfied_to_index?(1)
45
- end
46
-
47
- def test_should_be_satisfied_if_one_satisfied_expectations_added_and_it_is_included_by_index
48
- sequence = Sequence.new('name')
49
- expectation = FakeExpectation.new(satisfied = true)
50
- sequence.constrain_as_next_in_sequence(expectation)
51
- assert sequence.satisfied_to_index?(1)
52
- end
53
-
54
- def test_should_not_be_satisfied_if_one_satisfied_and_one_unsatisfied_expectation_added_and_both_are_included_by_index
55
- sequence = Sequence.new('name')
56
- expectation_one = FakeExpectation.new(satisfied = true)
57
- expectation_two = FakeExpectation.new(satisfied = false)
58
- sequence.constrain_as_next_in_sequence(expectation_one)
59
- sequence.constrain_as_next_in_sequence(expectation_two)
60
- assert !sequence.satisfied_to_index?(2)
61
- end
62
-
63
- def test_should_be_satisfied_if_two_satisfied_expectations_added_and_both_are_included_by_index
64
- sequence = Sequence.new('name')
65
- expectation_one = FakeExpectation.new(satisfied = true)
66
- expectation_two = FakeExpectation.new(satisfied = true)
67
- sequence.constrain_as_next_in_sequence(expectation_one)
68
- sequence.constrain_as_next_in_sequence(expectation_two)
69
- assert sequence.satisfied_to_index?(2)
70
- end
71
-
72
- def test_should_add_ordering_constraint_to_expectation
73
- sequence = Sequence.new('name')
74
- expectation = FakeExpectation.new
75
- sequence.constrain_as_next_in_sequence(expectation)
76
- assert_equal 1, expectation.ordering_constraints.length
77
- end
78
-
79
- def test_should_not_allow_invocation_of_second_method_when_first_n_sequence_has_not_been_invoked
80
- sequence = Sequence.new('name')
81
- expectation_one = FakeExpectation.new(satisfied = false)
82
- expectation_two = FakeExpectation.new(satisfied = false)
83
- sequence.constrain_as_next_in_sequence(expectation_one)
84
- sequence.constrain_as_next_in_sequence(expectation_two)
85
- assert !expectation_two.ordering_constraints[0].allows_invocation_now?
86
- end
87
-
88
- def test_should_allow_invocation_of_second_method_when_first_in_sequence_has_been_invoked
89
- sequence = Sequence.new('name')
90
- expectation_one = FakeExpectation.new(satisfied = true)
91
- expectation_two = FakeExpectation.new(satisfied = false)
92
- sequence.constrain_as_next_in_sequence(expectation_one)
93
- sequence.constrain_as_next_in_sequence(expectation_two)
94
- assert expectation_two.ordering_constraints[0].allows_invocation_now?
95
- end
96
-
97
- def test_should_describe_ordering_constraint_as_being_part_of_named_sequence
98
- sequence = Sequence.new('wibble')
99
- expectation = FakeExpectation.new
100
- sequence.constrain_as_next_in_sequence(expectation)
101
- assert_equal "in sequence 'wibble'", expectation.ordering_constraints[0].mocha_inspect
102
- end
103
-
104
- end
@@ -1,76 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
- require 'mocha/mock'
3
-
4
- require 'mocha/setup_and_teardown'
5
-
6
- class SetupAndTeardownTest < Test::Unit::TestCase
7
-
8
- include Mocha
9
-
10
- def test_should_instantiate_new_stubba
11
- test_case = stubbed_test_case_class.new
12
- test_case.setup_stubs
13
-
14
- assert $stubba
15
- assert $stubba.is_a?(Mocha::Central)
16
- end
17
-
18
- def test_should_verify_all_expectations
19
- test_case = stubbed_test_case_class.new
20
- stubba = Mock.new
21
- stubba.expects(:verify_all)
22
- $stubba = stubba
23
-
24
- test_case.verify_stubs
25
-
26
- stubba.verify
27
- end
28
-
29
- def test_should_yield_to_block_for_each_assertion
30
- test_case = stubbed_test_case_class.new
31
- $stubba = Mock.new
32
- $stubba.stubs(:verify_all).yields
33
- yielded = false
34
-
35
- test_case.verify_stubs { yielded = true }
36
-
37
- assert_equal true, yielded
38
- end
39
-
40
- def test_should_unstub_all_stubbed_methods
41
- test_case = stubbed_test_case_class.new
42
- stubba = Mock.new
43
- stubba.expects(:unstub_all)
44
- $stubba = stubba
45
-
46
- test_case.teardown_stubs
47
-
48
- stubba.verify
49
- end
50
-
51
- def test_should_set_stubba_to_nil
52
- test_case = stubbed_test_case_class.new
53
- $stubba = Mock.new
54
- $stubba.stubs(:unstub_all)
55
-
56
- test_case.teardown_stubs
57
-
58
- assert_nil $stubba
59
- end
60
-
61
- def test_should_not_raise_exception_if_no_stubba_central_available
62
- test_case = stubbed_test_case_class.new
63
- $stubba = nil
64
- assert_nothing_raised { test_case.teardown_stubs }
65
- end
66
-
67
- private
68
-
69
- def stubbed_test_case_class
70
- Class.new do
71
- include Mocha::SetupAndTeardown
72
- end
73
- end
74
-
75
- end
76
-
@@ -1,33 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
-
3
- require 'mocha/single_return_value'
4
- require 'deprecation_disabler'
5
-
6
- class SingleReturnValueTest < Test::Unit::TestCase
7
-
8
- include Mocha
9
- include DeprecationDisabler
10
-
11
- def test_should_return_value
12
- value = SingleReturnValue.new('value')
13
- assert_equal 'value', value.evaluate
14
- end
15
-
16
- def test_should_return_result_of_calling_proc
17
- proc = lambda { 'value' }
18
- value = SingleReturnValue.new(proc)
19
- result = nil
20
- disable_deprecations { result = value.evaluate }
21
- assert_equal 'value', result
22
- end
23
-
24
- def test_should_indicate_deprecated_use_of_expectation_returns_method
25
- proc = lambda {}
26
- value = SingleReturnValue.new(proc)
27
- Deprecation.messages = []
28
- disable_deprecations { value.evaluate }
29
- expected_message = "use of Expectation#returns with instance of Proc - see Expectation#returns RDoc for alternatives"
30
- assert_equal [expected_message], Deprecation.messages
31
- end
32
-
33
- end