mocha 1.1.0 → 1.13.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.
Files changed (263) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +61 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/README.md +114 -28
  8. data/RELEASE.md +248 -1
  9. data/Rakefile +53 -35
  10. data/gemfiles/Gemfile.test-unit.latest +5 -1
  11. data/init.rb +1 -3
  12. data/lib/mocha/any_instance_method.rb +12 -72
  13. data/lib/mocha/api.rb +121 -56
  14. data/lib/mocha/argument_iterator.rb +4 -8
  15. data/lib/mocha/backtrace_filter.rb +1 -5
  16. data/lib/mocha/block_matcher.rb +31 -0
  17. data/lib/mocha/cardinality.rb +60 -49
  18. data/lib/mocha/central.rb +21 -12
  19. data/lib/mocha/change_state_side_effect.rb +0 -4
  20. data/lib/mocha/class_methods.rb +19 -20
  21. data/lib/mocha/configuration.rb +361 -18
  22. data/lib/mocha/debug.rb +3 -2
  23. data/lib/mocha/deprecation.rb +8 -11
  24. data/lib/mocha/detection/mini_test.rb +0 -2
  25. data/lib/mocha/detection/test_unit.rb +3 -5
  26. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  27. data/lib/mocha/exception_raiser.rb +4 -6
  28. data/lib/mocha/expectation.rb +125 -89
  29. data/lib/mocha/expectation_error.rb +1 -1
  30. data/lib/mocha/expectation_error_factory.rb +0 -1
  31. data/lib/mocha/expectation_list.rb +7 -11
  32. data/lib/mocha/hooks.rb +1 -3
  33. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  34. data/lib/mocha/inspect.rb +30 -38
  35. data/lib/mocha/instance_method.rb +15 -8
  36. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  37. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  38. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  39. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  40. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  41. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  48. data/lib/mocha/integration/mini_test.rb +7 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +8 -2
  50. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  51. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  52. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  53. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  55. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  56. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
  57. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  58. data/lib/mocha/integration/test_unit.rb +7 -0
  59. data/lib/mocha/integration.rb +2 -5
  60. data/lib/mocha/invocation.rb +77 -0
  61. data/lib/mocha/is_a.rb +0 -2
  62. data/lib/mocha/logger.rb +0 -4
  63. data/lib/mocha/macos_version.rb +5 -0
  64. data/lib/mocha/method_matcher.rb +1 -5
  65. data/lib/mocha/minitest.rb +8 -0
  66. data/lib/mocha/mock.rb +94 -46
  67. data/lib/mocha/mockery.rb +72 -98
  68. data/lib/mocha/names.rb +2 -12
  69. data/lib/mocha/not_initialized_error.rb +7 -0
  70. data/lib/mocha/object_methods.rb +25 -31
  71. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  72. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  74. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  75. data/lib/mocha/parameter_matchers/base.rb +6 -12
  76. data/lib/mocha/parameter_matchers/equals.rb +1 -7
  77. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  78. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  79. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  80. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  81. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  82. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  83. data/lib/mocha/parameter_matchers/includes.rb +50 -8
  84. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  85. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  86. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  87. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  88. data/lib/mocha/parameter_matchers/not.rb +2 -7
  89. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  90. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  91. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  92. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  93. data/lib/mocha/parameter_matchers.rb +3 -4
  94. data/lib/mocha/parameters_matcher.rb +6 -9
  95. data/lib/mocha/raised_exception.rb +11 -0
  96. data/lib/mocha/receivers.rb +10 -14
  97. data/lib/mocha/return_values.rb +4 -8
  98. data/lib/mocha/ruby_version.rb +4 -0
  99. data/lib/mocha/sequence.rb +4 -9
  100. data/lib/mocha/setup.rb +5 -0
  101. data/lib/mocha/single_return_value.rb +2 -5
  102. data/lib/mocha/singleton_class.rb +9 -0
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +125 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +7 -2
  107. data/lib/mocha/thrower.rb +4 -6
  108. data/lib/mocha/thrown_object.rb +12 -0
  109. data/lib/mocha/version.rb +1 -1
  110. data/lib/mocha/yield_parameters.rb +7 -17
  111. data/lib/mocha.rb +8 -0
  112. data/mocha.gemspec +42 -40
  113. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  114. data/yard-templates/default/layout/html/setup.rb +2 -3
  115. metadata +45 -191
  116. data/bin/build-matrix +0 -71
  117. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  120. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  125. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  128. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  129. data/lib/mocha/class_method.rb +0 -127
  130. data/lib/mocha/mini_test.rb +0 -3
  131. data/lib/mocha/module_method.rb +0 -16
  132. data/lib/mocha/module_methods.rb +0 -14
  133. data/lib/mocha/multiple_yields.rb +0 -20
  134. data/lib/mocha/no_yields.rb +0 -11
  135. data/lib/mocha/parameter_matchers/object.rb +0 -17
  136. data/lib/mocha/pretty_parameters.rb +0 -28
  137. data/lib/mocha/single_yield.rb +0 -18
  138. data/lib/mocha/standalone.rb +0 -4
  139. data/lib/mocha/unexpected_invocation.rb +0 -26
  140. data/lib/mocha_standalone.rb +0 -4
  141. data/test/acceptance/acceptance_test_helper.rb +0 -41
  142. data/test/acceptance/bug_18914_test.rb +0 -43
  143. data/test/acceptance/bug_21465_test.rb +0 -34
  144. data/test/acceptance/bug_21563_test.rb +0 -25
  145. data/test/acceptance/exception_rescue_test.rb +0 -55
  146. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  147. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  148. data/test/acceptance/failure_messages_test.rb +0 -64
  149. data/test/acceptance/issue_65_test.rb +0 -63
  150. data/test/acceptance/issue_70_test.rb +0 -55
  151. data/test/acceptance/mocha_example_test.rb +0 -98
  152. data/test/acceptance/mocha_test_result_test.rb +0 -84
  153. data/test/acceptance/mock_test.rb +0 -100
  154. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  155. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  156. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  157. data/test/acceptance/optional_parameters_test.rb +0 -70
  158. data/test/acceptance/parameter_matcher_test.rb +0 -337
  159. data/test/acceptance/partial_mocks_test.rb +0 -47
  160. data/test/acceptance/prepend_test.rb +0 -88
  161. data/test/acceptance/raise_exception_test.rb +0 -39
  162. data/test/acceptance/return_value_test.rb +0 -52
  163. data/test/acceptance/sequence_test.rb +0 -192
  164. data/test/acceptance/states_test.rb +0 -70
  165. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  166. data/test/acceptance/stub_any_instance_method_test.rb +0 -238
  167. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  168. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  169. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  170. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  171. data/test/acceptance/stub_everything_test.rb +0 -56
  172. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  173. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  174. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  176. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  179. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  180. data/test/acceptance/stub_module_method_test.rb +0 -163
  181. data/test/acceptance/stub_test.rb +0 -52
  182. data/test/acceptance/stubba_example_test.rb +0 -102
  183. data/test/acceptance/stubba_test_result_test.rb +0 -66
  184. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  185. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  186. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  187. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  188. data/test/acceptance/stubbing_nil_test.rb +0 -59
  189. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -130
  190. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  191. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  192. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  193. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  194. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  195. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  196. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  197. data/test/acceptance/throw_test.rb +0 -45
  198. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  199. data/test/acceptance/unstubbing_test.rb +0 -168
  200. data/test/assertions.rb +0 -6
  201. data/test/deprecation_disabler.rb +0 -15
  202. data/test/execution_point.rb +0 -36
  203. data/test/integration/mini_test_test.rb +0 -8
  204. data/test/integration/shared_tests.rb +0 -174
  205. data/test/integration/test_unit_test.rb +0 -8
  206. data/test/method_definer.rb +0 -24
  207. data/test/mini_test_result.rb +0 -90
  208. data/test/minitest_result.rb +0 -49
  209. data/test/simple_counter.rb +0 -13
  210. data/test/test_helper.rb +0 -50
  211. data/test/test_runner.rb +0 -58
  212. data/test/test_unit_result.rb +0 -20
  213. data/test/unit/any_instance_method_test.rb +0 -132
  214. data/test/unit/array_inspect_test.rb +0 -16
  215. data/test/unit/backtrace_filter_test.rb +0 -19
  216. data/test/unit/cardinality_test.rb +0 -56
  217. data/test/unit/central_test.rb +0 -100
  218. data/test/unit/change_state_side_effect_test.rb +0 -41
  219. data/test/unit/class_method_test.rb +0 -223
  220. data/test/unit/class_methods_test.rb +0 -40
  221. data/test/unit/configuration_test.rb +0 -38
  222. data/test/unit/date_time_inspect_test.rb +0 -21
  223. data/test/unit/exception_raiser_test.rb +0 -42
  224. data/test/unit/expectation_list_test.rb +0 -82
  225. data/test/unit/expectation_test.rb +0 -497
  226. data/test/unit/hash_inspect_test.rb +0 -16
  227. data/test/unit/hooks_test.rb +0 -29
  228. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  229. data/test/unit/method_matcher_test.rb +0 -28
  230. data/test/unit/mock_test.rb +0 -341
  231. data/test/unit/mockery_test.rb +0 -151
  232. data/test/unit/module_methods_test.rb +0 -19
  233. data/test/unit/multiple_yields_test.rb +0 -18
  234. data/test/unit/no_yields_test.rb +0 -18
  235. data/test/unit/object_inspect_test.rb +0 -38
  236. data/test/unit/object_methods_test.rb +0 -46
  237. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  238. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  239. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  240. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  241. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  242. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  243. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  244. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  245. data/test/unit/parameter_matchers/includes_test.rb +0 -59
  246. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  247. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  248. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/not_test.rb +0 -26
  250. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  251. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  252. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  253. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  254. data/test/unit/parameters_matcher_test.rb +0 -121
  255. data/test/unit/receivers_test.rb +0 -66
  256. data/test/unit/return_values_test.rb +0 -63
  257. data/test/unit/sequence_test.rb +0 -104
  258. data/test/unit/single_return_value_test.rb +0 -14
  259. data/test/unit/single_yield_test.rb +0 -18
  260. data/test/unit/state_machine_test.rb +0 -98
  261. data/test/unit/string_inspect_test.rb +0 -11
  262. data/test/unit/thrower_test.rb +0 -20
  263. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,64 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class FailureMessagesTest < Mocha::TestCase
5
-
6
- OBJECT_ADDRESS_PATTERN = '0x[0-9A-Fa-f]{1,12}'
7
-
8
- include AcceptanceTest
9
-
10
- def setup
11
- setup_acceptance_test
12
- end
13
-
14
- def teardown
15
- teardown_acceptance_test
16
- end
17
-
18
- class Foo; end
19
-
20
- def test_should_display_class_name_when_expectation_was_on_class
21
- test_result = run_as_test do
22
- Foo.expects(:bar)
23
- end
24
- assert_match Regexp.new('FailureMessagesTest::Foo'), test_result.failures[0].message
25
- end
26
-
27
- def test_should_display_class_name_and_address_when_expectation_was_on_instance
28
- test_result = run_as_test do
29
- Foo.new.expects(:bar)
30
- end
31
- assert_match Regexp.new("#<FailureMessagesTest::Foo:#{OBJECT_ADDRESS_PATTERN}>"), test_result.failures[0].message
32
- end
33
-
34
- def test_should_display_class_name_and_any_instance_prefix_when_expectation_was_on_any_instance
35
- test_result = run_as_test do
36
- Foo.any_instance.expects(:bar)
37
- end
38
- assert_match Regexp.new('#<AnyInstance:FailureMessagesTest::Foo>'), test_result.failures[0].message
39
- end
40
-
41
- def test_should_display_mock_name_when_expectation_was_on_named_mock
42
- test_result = run_as_test do
43
- foo = mock('foo')
44
- foo.expects(:bar)
45
- end
46
- assert_match Regexp.new('#<Mock:foo>'), test_result.failures[0].message
47
- end
48
-
49
- def test_should_display_mock_address_when_expectation_was_on_unnamed_mock
50
- test_result = run_as_test do
51
- foo = mock()
52
- foo.expects(:bar)
53
- end
54
- assert_match Regexp.new("#<Mock:#{OBJECT_ADDRESS_PATTERN}>"), test_result.failures[0].message
55
- end
56
-
57
- def test_should_display_string_when_expectation_was_on_string
58
- test_result = run_as_test do
59
- 'Foo'.expects(:bar)
60
- end
61
- assert_match Regexp.new("'Foo'"), test_result.failures[0].message
62
- end
63
-
64
- end
@@ -1,63 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Issue65Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_expectations_on_class_methods_on_same_class_should_be_verified_in_consecutive_tests
17
- klass = Class.new do
18
- def self.foo; end
19
- def self.bar; end
20
- end
21
- test_1 = run_as_test do
22
- klass.expects(:foo)
23
- klass.foo
24
- end
25
- assert_passed(test_1)
26
- test_2 = run_as_test do
27
- klass.expects(:bar)
28
- end
29
- assert_failed(test_2)
30
- end
31
-
32
- def test_expectations_on_any_instance_methods_on_same_class_should_be_verified_in_consecutive_tests
33
- klass = Class.new do
34
- def foo; end
35
- def bar; end
36
- end
37
- test_1 = run_as_test do
38
- klass.any_instance.expects(:foo)
39
- klass.new.foo
40
- end
41
- assert_passed(test_1)
42
- test_2 = run_as_test do
43
- klass.any_instance.expects(:bar)
44
- end
45
- assert_failed(test_2)
46
- end
47
-
48
- def test_expectations_on_instance_methods_on_same_object_should_be_verified_in_consecutive_tests
49
- instance = Class.new do
50
- def foo; end
51
- def bar; end
52
- end.new
53
- test_1 = run_as_test do
54
- instance.expects(:foo)
55
- instance.foo
56
- end
57
- assert_passed(test_1)
58
- test_2 = run_as_test do
59
- instance.expects(:bar)
60
- end
61
- assert_failed(test_2)
62
- end
63
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Issue70Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_stub_expectations_instance_method
17
- instance = Class.new do
18
- def expectations
19
- :original_return_value
20
- end
21
- end.new
22
- test_result = run_as_test do
23
- instance.stubs(:expectations).returns(:stubbed_return_value)
24
- assert_equal :stubbed_return_value, instance.expectations
25
- end
26
- assert_passed(test_result)
27
- end
28
-
29
- def test_should_stub_expectations_class_method
30
- klass = Class.new do
31
- def self.expectations
32
- :original_return_value
33
- end
34
- end
35
- test_result = run_as_test do
36
- klass.stubs(:expectations).returns(:stubbed_return_value)
37
- assert_equal :stubbed_return_value, klass.expectations
38
- end
39
- assert_passed(test_result)
40
- end
41
-
42
- def test_should_stub_expectations_any_instance_method
43
- klass = Class.new do
44
- def expectations
45
- :original_return_value
46
- end
47
- end
48
- instance = klass.new
49
- test_result = run_as_test do
50
- klass.any_instance.stubs(:expectations).returns(:stubbed_return_value)
51
- assert_equal :stubbed_return_value, instance.expectations
52
- end
53
- assert_passed(test_result)
54
- end
55
- end
@@ -1,98 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class MochaExampleTest < Mocha::TestCase
5
-
6
- class Rover
7
-
8
- def initialize(left_track, right_track, steps_per_metre, steps_per_degree)
9
- @left_track, @right_track, @steps_per_metre, @steps_per_degree = left_track, right_track, steps_per_metre, steps_per_degree
10
- end
11
-
12
- def forward(metres)
13
- @left_track.step(metres * @steps_per_metre)
14
- @right_track.step(metres * @steps_per_metre)
15
- wait
16
- end
17
-
18
- def backward(metres)
19
- forward(-metres)
20
- end
21
-
22
- def left(degrees)
23
- @left_track.step(-degrees * @steps_per_degree)
24
- @right_track.step(+degrees * @steps_per_degree)
25
- wait
26
- end
27
-
28
- def right(degrees)
29
- left(-degrees)
30
- end
31
-
32
- def wait
33
- while (@left_track.moving? or @right_track.moving?); end
34
- end
35
-
36
- end
37
-
38
- def test_should_step_both_tracks_forward_ten_steps
39
- left_track = mock('left_track')
40
- right_track = mock('right_track')
41
- steps_per_metre = 5
42
- rover = Rover.new(left_track, right_track, steps_per_metre, nil)
43
-
44
- left_track.expects(:step).with(10)
45
- right_track.expects(:step).with(10)
46
-
47
- left_track.stubs(:moving?).returns(false)
48
- right_track.stubs(:moving?).returns(false)
49
-
50
- rover.forward(2)
51
- end
52
-
53
- def test_should_step_both_tracks_backward_ten_steps
54
- left_track = mock('left_track')
55
- right_track = mock('right_track')
56
- steps_per_metre = 5
57
- rover = Rover.new(left_track, right_track, steps_per_metre, nil)
58
-
59
- left_track.expects(:step).with(-10)
60
- right_track.expects(:step).with(-10)
61
-
62
- left_track.stubs(:moving?).returns(false)
63
- right_track.stubs(:moving?).returns(false)
64
-
65
- rover.backward(2)
66
- end
67
-
68
- def test_should_step_left_track_forwards_five_steps_and_right_track_backwards_five_steps
69
- left_track = mock('left_track')
70
- right_track = mock('right_track')
71
- steps_per_degree = 5.0 / 90.0
72
- rover = Rover.new(left_track, right_track, nil, steps_per_degree)
73
-
74
- left_track.expects(:step).with(+5)
75
- right_track.expects(:step).with(-5)
76
-
77
- left_track.stubs(:moving?).returns(false)
78
- right_track.stubs(:moving?).returns(false)
79
-
80
- rover.right(90)
81
- end
82
-
83
- def test_should_step_left_track_backwards_five_steps_and_right_track_forwards_five_steps
84
- left_track = mock('left_track')
85
- right_track = mock('right_track')
86
- steps_per_degree = 5.0 / 90.0
87
- rover = Rover.new(left_track, right_track, nil, steps_per_degree)
88
-
89
- left_track.expects(:step).with(-5)
90
- right_track.expects(:step).with(+5)
91
-
92
- left_track.stubs(:moving?).returns(false)
93
- right_track.stubs(:moving?).returns(false)
94
-
95
- rover.left(90)
96
- end
97
-
98
- end
@@ -1,84 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
- require 'execution_point'
4
-
5
- class MochaTestResultTest < Mocha::TestCase
6
-
7
- include AcceptanceTest
8
-
9
- def setup
10
- setup_acceptance_test
11
- end
12
-
13
- def teardown
14
- teardown_acceptance_test
15
- end
16
-
17
- def test_should_include_expectation_verification_in_assertion_count
18
- test_result = run_as_test do
19
- object = mock()
20
- object.expects(:message)
21
- object.message
22
- end
23
- assert_equal 1, test_result.assertion_count
24
- end
25
-
26
- def test_should_include_assertions_in_assertion_count
27
- test_result = run_as_test do
28
- assert true
29
- end
30
- assert_equal 1, test_result.assertion_count
31
- end
32
-
33
- def test_should_not_include_stubbing_expectation_verification_in_assertion_count
34
- test_result = run_as_test do
35
- object = mock()
36
- object.stubs(:message)
37
- object.message
38
- end
39
- assert_equal 0, test_result.assertion_count
40
- end
41
-
42
- def test_should_include_expectation_verification_failure_in_failure_count
43
- test_result = run_as_test do
44
- object = mock()
45
- object.expects(:message)
46
- end
47
- assert_equal 1, test_result.failure_count
48
- end
49
-
50
- def test_should_include_unexpected_verification_failure_in_failure_count
51
- test_result = run_as_test do
52
- object = mock()
53
- object.message
54
- end
55
- assert_equal 1, test_result.failure_count
56
- end
57
-
58
- def test_should_include_assertion_failure_in_failure_count
59
- test_result = run_as_test do
60
- flunk
61
- end
62
- assert_equal 1, test_result.failure_count
63
- end
64
-
65
- def test_should_display_backtrace_indicating_line_number_where_unexpected_method_was_called
66
- execution_point = nil
67
- test_result = run_as_test do
68
- object = mock()
69
- execution_point = ExecutionPoint.current; object.message
70
- end
71
- assert_equal 1, test_result.failure_count
72
- assert_equal execution_point, ExecutionPoint.new(test_result.failures[0].location)
73
- end
74
-
75
- def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
76
- execution_point = nil
77
- test_result = run_as_test do
78
- execution_point = ExecutionPoint.current; flunk
79
- end
80
- assert_equal 1, test_result.failure_count
81
- assert_equal execution_point, ExecutionPoint.new(test_result.failures[0].location)
82
- end
83
-
84
- end
@@ -1,100 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class MockTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_build_mock_and_explicitly_add_an_expectation_which_is_satisfied
17
- test_result = run_as_test do
18
- foo = mock()
19
- foo.expects(:bar)
20
- foo.bar
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_build_mock_and_explicitly_add_an_expectation_which_is_not_satisfied
26
- test_result = run_as_test do
27
- foo = mock()
28
- foo.expects(:bar)
29
- end
30
- assert_failed(test_result)
31
- end
32
-
33
- def test_should_build_named_mock_and_explicitly_add_an_expectation_which_is_satisfied
34
- test_result = run_as_test do
35
- foo = mock('foo')
36
- foo.expects(:bar)
37
- foo.bar
38
- end
39
- assert_passed(test_result)
40
- end
41
-
42
- def test_should_build_named_mock_and_explicitly_add_an_expectation_which_is_not_satisfied
43
- test_result = run_as_test do
44
- foo = mock('foo')
45
- foo.expects(:bar)
46
- end
47
- assert_failed(test_result)
48
- end
49
-
50
- def test_should_build_mock_incorporating_two_expectations_which_are_satisifed
51
- test_result = run_as_test do
52
- foo = mock(:bar => 'bar', :baz => 'baz')
53
- foo.bar
54
- foo.baz
55
- end
56
- assert_passed(test_result)
57
- end
58
-
59
- def test_should_build_mock_incorporating_two_expectations_the_first_of_which_is_not_satisifed
60
- test_result = run_as_test do
61
- foo = mock(:bar => 'bar', :baz => 'baz')
62
- foo.baz
63
- end
64
- assert_failed(test_result)
65
- end
66
-
67
- def test_should_build_mock_incorporating_two_expectations_the_second_of_which_is_not_satisifed
68
- test_result = run_as_test do
69
- foo = mock(:bar => 'bar', :baz => 'baz')
70
- foo.bar
71
- end
72
- assert_failed(test_result)
73
- end
74
-
75
- def test_should_build_named_mock_incorporating_two_expectations_which_are_satisifed
76
- test_result = run_as_test do
77
- foo = mock('foo', :bar => 'bar', :baz => 'baz')
78
- foo.bar
79
- foo.baz
80
- end
81
- assert_passed(test_result)
82
- end
83
-
84
- def test_should_build_named_mock_incorporating_two_expectations_the_first_of_which_is_not_satisifed
85
- test_result = run_as_test do
86
- foo = mock('foo', :bar => 'bar', :baz => 'baz')
87
- foo.baz
88
- end
89
- assert_failed(test_result)
90
- end
91
-
92
- def test_should_build_named_mock_incorporating_two_expectations_the_second_of_which_is_not_satisifed
93
- test_result = run_as_test do
94
- foo = mock('foo', :bar => 'bar', :baz => 'baz')
95
- foo.bar
96
- end
97
- assert_failed(test_result)
98
- end
99
-
100
- end
@@ -1,51 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class MockWithInitializerBlockTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_expect_two_method_invocations_and_receive_both_of_them
17
- test_result = run_as_test do
18
- mock = mock() do
19
- expects(:method_1)
20
- expects(:method_2)
21
- end
22
- mock.method_1
23
- mock.method_2
24
- end
25
- assert_passed(test_result)
26
- end
27
-
28
- def test_should_expect_two_method_invocations_but_receive_only_one_of_them
29
- test_result = run_as_test do
30
- mock = mock() do
31
- expects(:method_1)
32
- expects(:method_2)
33
- end
34
- mock.method_1
35
- end
36
- assert_failed(test_result)
37
- end
38
-
39
- def test_should_stub_methods
40
- test_result = run_as_test do
41
- mock = mock() do
42
- stubs(:method_1).returns(1)
43
- stubs(:method_2).returns(2)
44
- end
45
- assert_equal 1, mock.method_1
46
- assert_equal 2, mock.method_2
47
- end
48
- assert_passed(test_result)
49
- end
50
-
51
- end
@@ -1,78 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class MockedMethodDispatchTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_find_latest_matching_expectation
17
- test_result = run_as_test do
18
- mock = mock()
19
- mock.stubs(:method).returns(1)
20
- mock.stubs(:method).returns(2)
21
- assert_equal 2, mock.method
22
- assert_equal 2, mock.method
23
- assert_equal 2, mock.method
24
- end
25
- assert_passed(test_result)
26
- end
27
-
28
- def test_should_find_latest_expectation_which_has_not_stopped_matching
29
- test_result = run_as_test do
30
- mock = mock()
31
- mock.stubs(:method).returns(1)
32
- mock.stubs(:method).once.returns(2)
33
- assert_equal 2, mock.method
34
- assert_equal 1, mock.method
35
- assert_equal 1, mock.method
36
- end
37
- assert_passed(test_result)
38
- end
39
-
40
- def test_should_keep_finding_later_stub_and_so_never_satisfy_earlier_expectation
41
- test_result = run_as_test do
42
- mock = mock()
43
- mock.expects(:method).returns(1)
44
- mock.stubs(:method).returns(2)
45
- assert_equal 2, mock.method
46
- assert_equal 2, mock.method
47
- assert_equal 2, mock.method
48
- end
49
- assert_failed(test_result)
50
- end
51
-
52
- def test_should_find_later_expectation_until_it_stops_matching_then_find_earlier_stub
53
- test_result = run_as_test do
54
- mock = mock()
55
- mock.stubs(:method).returns(1)
56
- mock.expects(:method).returns(2)
57
- assert_equal 2, mock.method
58
- assert_equal 1, mock.method
59
- assert_equal 1, mock.method
60
- end
61
- assert_passed(test_result)
62
- end
63
-
64
- def test_should_find_latest_expectation_with_range_of_expected_invocation_count_which_has_not_stopped_matching
65
- test_result = run_as_test do
66
- mock = mock()
67
- mock.stubs(:method).returns(1)
68
- mock.stubs(:method).times(2..3).returns(2)
69
- assert_equal 2, mock.method
70
- assert_equal 2, mock.method
71
- assert_equal 2, mock.method
72
- assert_equal 1, mock.method
73
- assert_equal 1, mock.method
74
- end
75
- assert_passed(test_result)
76
- end
77
-
78
- end
@@ -1,68 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class FailureMessageTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_include_unexpected_invocation_in_unsatisfied_expectation_message
17
- test_result = run_as_test do
18
- mock = mock('mock')
19
- mock.expects(:method_one).once
20
- 2.times { mock.method_one }
21
- end
22
- assert_failed(test_result)
23
- assert_equal [
24
- "unexpected invocation: #<Mock:mock>.method_one()",
25
- "unsatisfied expectations:",
26
- "- expected exactly once, invoked twice: #<Mock:mock>.method_one(any_parameters)"
27
- ], test_result.failure_message_lines
28
- end
29
-
30
- def test_should_report_satisfied_expectations_as_well_as_unsatisfied_expectations
31
- test_result = run_as_test do
32
- mock = mock('mock')
33
- mock.expects(:method_one).once
34
- mock.expects(:method_two).twice
35
- 1.times { mock.method_one }
36
- 1.times { mock.method_two }
37
- end
38
- assert_failed(test_result)
39
- assert_equal [
40
- "not all expectations were satisfied",
41
- "unsatisfied expectations:",
42
- "- expected exactly twice, invoked once: #<Mock:mock>.method_two(any_parameters)",
43
- "satisfied expectations:",
44
- "- expected exactly once, invoked once: #<Mock:mock>.method_one(any_parameters)"
45
- ], test_result.failure_message_lines
46
- end
47
-
48
- def test_should_report_multiple_satisfied_expectations
49
- test_result = run_as_test do
50
- mock = mock('mock')
51
- mock.expects(:method_one).once
52
- mock.expects(:method_two).twice
53
- mock.expects(:method_three).times(3)
54
- 1.times { mock.method_one }
55
- 2.times { mock.method_two }
56
- 2.times { mock.method_three }
57
- end
58
- assert_failed(test_result)
59
- assert_equal [
60
- "not all expectations were satisfied",
61
- "unsatisfied expectations:",
62
- "- expected exactly 3 times, invoked twice: #<Mock:mock>.method_three(any_parameters)",
63
- "satisfied expectations:",
64
- "- expected exactly twice, invoked twice: #<Mock:mock>.method_two(any_parameters)",
65
- "- expected exactly once, invoked once: #<Mock:mock>.method_one(any_parameters)"
66
- ], test_result.failure_message_lines
67
- end
68
- end