floehopper-mocha 0.9.3.20081220175348

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 (162) hide show
  1. data/COPYING +3 -0
  2. data/MIT-LICENSE +7 -0
  3. data/README +35 -0
  4. data/RELEASE +257 -0
  5. data/Rakefile +199 -0
  6. data/examples/misc.rb +44 -0
  7. data/examples/mocha.rb +26 -0
  8. data/examples/stubba.rb +65 -0
  9. data/lib/mocha/any_instance_method.rb +54 -0
  10. data/lib/mocha/argument_iterator.rb +21 -0
  11. data/lib/mocha/backtrace_filter.rb +17 -0
  12. data/lib/mocha/cardinality.rb +95 -0
  13. data/lib/mocha/central.rb +27 -0
  14. data/lib/mocha/change_state_side_effect.rb +19 -0
  15. data/lib/mocha/class_method.rb +86 -0
  16. data/lib/mocha/configuration.rb +60 -0
  17. data/lib/mocha/deprecation.rb +22 -0
  18. data/lib/mocha/exception_raiser.rb +17 -0
  19. data/lib/mocha/expectation.rb +451 -0
  20. data/lib/mocha/expectation_error.rb +15 -0
  21. data/lib/mocha/expectation_list.rb +50 -0
  22. data/lib/mocha/in_state_ordering_constraint.rb +19 -0
  23. data/lib/mocha/inspect.rb +67 -0
  24. data/lib/mocha/instance_method.rb +16 -0
  25. data/lib/mocha/is_a.rb +9 -0
  26. data/lib/mocha/logger.rb +15 -0
  27. data/lib/mocha/metaclass.rb +13 -0
  28. data/lib/mocha/method_matcher.rb +21 -0
  29. data/lib/mocha/mini_test_adapter.rb +50 -0
  30. data/lib/mocha/mock.rb +200 -0
  31. data/lib/mocha/mockery.rb +181 -0
  32. data/lib/mocha/module_method.rb +16 -0
  33. data/lib/mocha/multiple_yields.rb +20 -0
  34. data/lib/mocha/names.rb +53 -0
  35. data/lib/mocha/no_yields.rb +11 -0
  36. data/lib/mocha/object.rb +187 -0
  37. data/lib/mocha/parameter_matchers/all_of.rb +42 -0
  38. data/lib/mocha/parameter_matchers/any_of.rb +47 -0
  39. data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
  40. data/lib/mocha/parameter_matchers/anything.rb +33 -0
  41. data/lib/mocha/parameter_matchers/base.rb +15 -0
  42. data/lib/mocha/parameter_matchers/equals.rb +42 -0
  43. data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
  44. data/lib/mocha/parameter_matchers/has_entry.rb +56 -0
  45. data/lib/mocha/parameter_matchers/has_key.rb +42 -0
  46. data/lib/mocha/parameter_matchers/has_value.rb +42 -0
  47. data/lib/mocha/parameter_matchers/includes.rb +40 -0
  48. data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
  49. data/lib/mocha/parameter_matchers/is_a.rb +42 -0
  50. data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
  51. data/lib/mocha/parameter_matchers/not.rb +42 -0
  52. data/lib/mocha/parameter_matchers/object.rb +15 -0
  53. data/lib/mocha/parameter_matchers/optionally.rb +55 -0
  54. data/lib/mocha/parameter_matchers/regexp_matches.rb +43 -0
  55. data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
  56. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
  57. data/lib/mocha/parameter_matchers.rb +27 -0
  58. data/lib/mocha/parameters_matcher.rb +37 -0
  59. data/lib/mocha/pretty_parameters.rb +28 -0
  60. data/lib/mocha/return_values.rb +31 -0
  61. data/lib/mocha/sequence.rb +42 -0
  62. data/lib/mocha/single_return_value.rb +17 -0
  63. data/lib/mocha/single_yield.rb +18 -0
  64. data/lib/mocha/standalone.rb +166 -0
  65. data/lib/mocha/state_machine.rb +91 -0
  66. data/lib/mocha/stubbing_error.rb +16 -0
  67. data/lib/mocha/test_case_adapter.rb +103 -0
  68. data/lib/mocha/unexpected_invocation.rb +18 -0
  69. data/lib/mocha/yield_parameters.rb +31 -0
  70. data/lib/mocha.rb +47 -0
  71. data/lib/mocha_standalone.rb +2 -0
  72. data/lib/stubba.rb +4 -0
  73. data/test/acceptance/acceptance_test_helper.rb +38 -0
  74. data/test/acceptance/bug_18914_test.rb +43 -0
  75. data/test/acceptance/bug_21465_test.rb +34 -0
  76. data/test/acceptance/bug_21563_test.rb +25 -0
  77. data/test/acceptance/expected_invocation_count_test.rb +196 -0
  78. data/test/acceptance/failure_messages_test.rb +64 -0
  79. data/test/acceptance/minitest_test.rb +130 -0
  80. data/test/acceptance/mocha_example_test.rb +98 -0
  81. data/test/acceptance/mocha_test_result_test.rb +84 -0
  82. data/test/acceptance/mock_test.rb +100 -0
  83. data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
  84. data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
  85. data/test/acceptance/optional_parameters_test.rb +70 -0
  86. data/test/acceptance/parameter_matcher_test.rb +209 -0
  87. data/test/acceptance/partial_mocks_test.rb +47 -0
  88. data/test/acceptance/return_value_test.rb +52 -0
  89. data/test/acceptance/sequence_test.rb +186 -0
  90. data/test/acceptance/standalone_test.rb +139 -0
  91. data/test/acceptance/states_test.rb +70 -0
  92. data/test/acceptance/stub_any_instance_method_test.rb +195 -0
  93. data/test/acceptance/stub_class_method_test.rb +203 -0
  94. data/test/acceptance/stub_everything_test.rb +56 -0
  95. data/test/acceptance/stub_instance_method_test.rb +203 -0
  96. data/test/acceptance/stub_module_method_test.rb +163 -0
  97. data/test/acceptance/stub_test.rb +52 -0
  98. data/test/acceptance/stubba_example_test.rb +102 -0
  99. data/test/acceptance/stubba_test.rb +15 -0
  100. data/test/acceptance/stubba_test_result_test.rb +66 -0
  101. data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
  102. data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
  103. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
  104. data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
  105. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
  106. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
  107. data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
  108. data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
  109. data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
  110. data/test/deprecation_disabler.rb +15 -0
  111. data/test/execution_point.rb +36 -0
  112. data/test/method_definer.rb +24 -0
  113. data/test/simple_counter.rb +13 -0
  114. data/test/test_helper.rb +11 -0
  115. data/test/test_runner.rb +33 -0
  116. data/test/unit/any_instance_method_test.rb +126 -0
  117. data/test/unit/array_inspect_test.rb +16 -0
  118. data/test/unit/backtrace_filter_test.rb +19 -0
  119. data/test/unit/cardinality_test.rb +56 -0
  120. data/test/unit/central_test.rb +65 -0
  121. data/test/unit/change_state_side_effect_test.rb +41 -0
  122. data/test/unit/class_method_test.rb +237 -0
  123. data/test/unit/date_time_inspect_test.rb +21 -0
  124. data/test/unit/exception_raiser_test.rb +42 -0
  125. data/test/unit/expectation_list_test.rb +57 -0
  126. data/test/unit/expectation_test.rb +459 -0
  127. data/test/unit/hash_inspect_test.rb +16 -0
  128. data/test/unit/in_state_ordering_constraint_test.rb +43 -0
  129. data/test/unit/metaclass_test.rb +22 -0
  130. data/test/unit/method_matcher_test.rb +23 -0
  131. data/test/unit/mock_test.rb +295 -0
  132. data/test/unit/mockery_test.rb +149 -0
  133. data/test/unit/multiple_yields_test.rb +18 -0
  134. data/test/unit/no_yields_test.rb +18 -0
  135. data/test/unit/object_inspect_test.rb +37 -0
  136. data/test/unit/object_test.rb +82 -0
  137. data/test/unit/parameter_matchers/all_of_test.rb +26 -0
  138. data/test/unit/parameter_matchers/any_of_test.rb +26 -0
  139. data/test/unit/parameter_matchers/anything_test.rb +21 -0
  140. data/test/unit/parameter_matchers/equals_test.rb +25 -0
  141. data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
  142. data/test/unit/parameter_matchers/has_entry_test.rb +62 -0
  143. data/test/unit/parameter_matchers/has_key_test.rb +36 -0
  144. data/test/unit/parameter_matchers/has_value_test.rb +37 -0
  145. data/test/unit/parameter_matchers/includes_test.rb +25 -0
  146. data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  147. data/test/unit/parameter_matchers/is_a_test.rb +25 -0
  148. data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  149. data/test/unit/parameter_matchers/not_test.rb +26 -0
  150. data/test/unit/parameter_matchers/regexp_matches_test.rb +25 -0
  151. data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
  152. data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
  153. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
  154. data/test/unit/parameters_matcher_test.rb +121 -0
  155. data/test/unit/return_values_test.rb +63 -0
  156. data/test/unit/sequence_test.rb +104 -0
  157. data/test/unit/single_return_value_test.rb +14 -0
  158. data/test/unit/single_yield_test.rb +18 -0
  159. data/test/unit/state_machine_test.rb +98 -0
  160. data/test/unit/string_inspect_test.rb +11 -0
  161. data/test/unit/yield_parameters_test.rb +93 -0
  162. metadata +226 -0
@@ -0,0 +1,295 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/mock'
3
+ require 'mocha/expectation_error'
4
+ require 'set'
5
+ require 'simple_counter'
6
+
7
+ class MockTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_set_single_expectation
12
+ mock = Mock.new
13
+ mock.expects(:method1).returns(1)
14
+ assert_nothing_raised(ExpectationError) do
15
+ assert_equal 1, mock.method1
16
+ end
17
+ end
18
+
19
+ def test_should_build_and_store_expectations
20
+ mock = Mock.new
21
+ expectation = mock.expects(:method1)
22
+ assert_not_nil expectation
23
+ assert_equal [expectation], mock.expectations.to_a
24
+ end
25
+
26
+ def test_should_not_stub_everything_by_default
27
+ mock = Mock.new
28
+ assert_equal false, mock.everything_stubbed
29
+ end
30
+
31
+ def test_should_stub_everything
32
+ mock = Mock.new
33
+ mock.stub_everything
34
+ assert_equal true, mock.everything_stubbed
35
+ end
36
+
37
+ def test_should_be_able_to_extend_mock_object_with_module
38
+ mock = Mock.new
39
+ assert_nothing_raised(ExpectationError) { mock.extend(Module.new) }
40
+ end
41
+
42
+ def test_should_be_equal
43
+ mock = Mock.new
44
+ assert_equal true, mock.eql?(mock)
45
+ end
46
+
47
+ if RUBY_VERSION < '1.9'
48
+ OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ }
49
+ else
50
+ OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ || m == :object_id }
51
+ end
52
+
53
+ def test_should_be_able_to_mock_standard_object_methods
54
+ mock = Mock.new
55
+ OBJECT_METHODS.each { |method| mock.__expects__(method.to_sym).returns(method) }
56
+ OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
57
+ assert mock.__verified__?
58
+ end
59
+
60
+ def test_should_be_able_to_stub_standard_object_methods
61
+ mock = Mock.new
62
+ OBJECT_METHODS.each { |method| mock.__stubs__(method.to_sym).returns(method) }
63
+ OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
64
+ end
65
+
66
+ def test_should_create_and_add_expectations
67
+ mock = Mock.new
68
+ expectation1 = mock.expects(:method1)
69
+ expectation2 = mock.expects(:method2)
70
+ assert_equal [expectation1, expectation2].to_set, mock.expectations.to_set
71
+ end
72
+
73
+ def test_should_pass_backtrace_into_expectation
74
+ mock = Mock.new
75
+ backtrace = Object.new
76
+ expectation = mock.expects(:method1, backtrace)
77
+ assert_equal backtrace, expectation.backtrace
78
+ end
79
+
80
+ def test_should_pass_backtrace_into_stub
81
+ mock = Mock.new
82
+ backtrace = Object.new
83
+ stub = mock.stubs(:method1, backtrace)
84
+ assert_equal backtrace, stub.backtrace
85
+ end
86
+
87
+ def test_should_create_and_add_stubs
88
+ mock = Mock.new
89
+ stub1 = mock.stubs(:method1)
90
+ stub2 = mock.stubs(:method2)
91
+ assert_equal [stub1, stub2].to_set, mock.expectations.to_set
92
+ end
93
+
94
+ def test_should_invoke_expectation_and_return_result
95
+ mock = Mock.new
96
+ mock.expects(:my_method).returns(:result)
97
+ result = mock.my_method
98
+ assert_equal :result, result
99
+ end
100
+
101
+ def test_should_not_raise_error_if_stubbing_everything
102
+ mock = Mock.new
103
+ mock.stub_everything
104
+ result = nil
105
+ assert_nothing_raised(ExpectationError) do
106
+ result = mock.unexpected_method
107
+ end
108
+ assert_nil result
109
+ end
110
+
111
+ def test_should_raise_assertion_error_for_unexpected_method_call
112
+ mock = Mock.new
113
+ error = assert_raise(ExpectationError) do
114
+ mock.unexpected_method_called(:my_method, :argument1, :argument2)
115
+ end
116
+ assert_match(/unexpected invocation/, error.message)
117
+ assert_match(/my_method/, error.message)
118
+ assert_match(/argument1/, error.message)
119
+ assert_match(/argument2/, error.message)
120
+ end
121
+
122
+ def test_should_not_verify_successfully_because_not_all_expectations_have_been_satisfied
123
+ mock = Mock.new
124
+ mock.expects(:method1)
125
+ mock.expects(:method2)
126
+ mock.method1
127
+ assert !mock.__verified__?
128
+ end
129
+
130
+ def test_should_increment_assertion_counter_for_every_verified_expectation
131
+ mock = Mock.new
132
+
133
+ mock.expects(:method1)
134
+ mock.method1
135
+
136
+ mock.expects(:method2)
137
+ mock.method2
138
+
139
+ assertion_counter = SimpleCounter.new
140
+
141
+ mock.__verified__?(assertion_counter)
142
+
143
+ assert_equal 2, assertion_counter.count
144
+ end
145
+
146
+ def test_should_yield_supplied_parameters_to_block
147
+ mock = Mock.new
148
+ parameters_for_yield = [1, 2, 3]
149
+ mock.expects(:method1).yields(*parameters_for_yield)
150
+ yielded_parameters = nil
151
+ mock.method1() { |*parameters| yielded_parameters = parameters }
152
+ assert_equal parameters_for_yield, yielded_parameters
153
+ end
154
+
155
+ def test_should_set_up_multiple_expectations_with_return_values
156
+ mock = Mock.new
157
+ mock.expects(:method1 => :result1, :method2 => :result2)
158
+ assert_equal :result1, mock.method1
159
+ assert_equal :result2, mock.method2
160
+ end
161
+
162
+ def test_should_set_up_multiple_stubs_with_return_values
163
+ mock = Mock.new
164
+ mock.stubs(:method1 => :result1, :method2 => :result2)
165
+ assert_equal :result1, mock.method1
166
+ assert_equal :result2, mock.method2
167
+ end
168
+
169
+ def test_should_keep_returning_specified_value_for_stubs
170
+ mock = Mock.new
171
+ mock.stubs(:method1).returns(1)
172
+ assert_equal 1, mock.method1
173
+ assert_equal 1, mock.method1
174
+ end
175
+
176
+ def test_should_keep_returning_specified_value_for_expects
177
+ mock = Mock.new
178
+ mock.expects(:method1).times(2).returns(1)
179
+ assert_equal 1, mock.method1
180
+ assert_equal 1, mock.method1
181
+ end
182
+
183
+ def test_should_match_most_recent_call_to_expects
184
+ mock = Mock.new
185
+ mock.expects(:method1).returns(0)
186
+ mock.expects(:method1).returns(1)
187
+ assert_equal 1, mock.method1
188
+ end
189
+
190
+ def test_should_match_most_recent_call_to_stubs
191
+ mock = Mock.new
192
+ mock.stubs(:method1).returns(0)
193
+ mock.stubs(:method1).returns(1)
194
+ assert_equal 1, mock.method1
195
+ end
196
+
197
+ def test_should_match_most_recent_call_to_stubs_or_expects
198
+ mock = Mock.new
199
+ mock.stubs(:method1).returns(0)
200
+ mock.expects(:method1).returns(1)
201
+ assert_equal 1, mock.method1
202
+ end
203
+
204
+ def test_should_match_most_recent_call_to_expects_or_stubs
205
+ mock = Mock.new
206
+ mock.expects(:method1).returns(0)
207
+ mock.stubs(:method1).returns(1)
208
+ assert_equal 1, mock.method1
209
+ end
210
+
211
+ def test_should_respond_to_expected_method
212
+ mock = Mock.new
213
+ mock.expects(:method1)
214
+ assert_equal true, mock.respond_to?(:method1)
215
+ end
216
+
217
+ def test_should_not_respond_to_unexpected_method
218
+ mock = Mock.new
219
+ assert_equal false, mock.respond_to?(:method1)
220
+ end
221
+
222
+ def test_should_respond_to_methods_which_the_responder_does_responds_to
223
+ instance = Class.new do
224
+ define_method(:respond_to?) { |symbol| true }
225
+ end.new
226
+ mock = Mock.new
227
+ mock.responds_like(instance)
228
+ assert_equal true, mock.respond_to?(:invoked_method)
229
+ end
230
+
231
+ def test_should_not_respond_to_methods_which_the_responder_does_not_responds_to
232
+ instance = Class.new do
233
+ define_method(:respond_to?) { |symbol| false }
234
+ end.new
235
+ mock = Mock.new
236
+ mock.responds_like(instance)
237
+ assert_equal false, mock.respond_to?(:invoked_method)
238
+ end
239
+
240
+ def test_should_return_itself_to_allow_method_chaining
241
+ mock = Mock.new
242
+ assert_same mock.responds_like(Object.new), mock
243
+ end
244
+
245
+ def test_should_not_raise_no_method_error_if_mock_is_not_restricted_to_respond_like_a_responder
246
+ instance = Class.new do
247
+ define_method(:respond_to?) { true }
248
+ end.new
249
+ mock = Mock.new
250
+ mock.stubs(:invoked_method)
251
+ assert_nothing_raised(NoMethodError) { mock.invoked_method }
252
+ end
253
+
254
+ def test_should_not_raise_no_method_error_if_responder_does_respond_to_invoked_method
255
+ instance = Class.new do
256
+ define_method(:respond_to?) { |symbol| true }
257
+ end.new
258
+ mock = Mock.new
259
+ mock.responds_like(instance)
260
+ mock.stubs(:invoked_method)
261
+ assert_nothing_raised(NoMethodError) { mock.invoked_method }
262
+ end
263
+
264
+ def test_should_raise_no_method_error_if_responder_does_not_respond_to_invoked_method
265
+ instance = Class.new do
266
+ define_method(:respond_to?) { |symbol| false }
267
+ define_method(:mocha_inspect) { 'mocha_inspect' }
268
+ end.new
269
+ mock = Mock.new
270
+ mock.responds_like(instance)
271
+ mock.stubs(:invoked_method)
272
+ assert_raises(NoMethodError) { mock.invoked_method }
273
+ end
274
+
275
+ def test_should_raise_no_method_error_with_message_indicating_that_mock_is_constrained_to_respond_like_responder
276
+ instance = Class.new do
277
+ define_method(:respond_to?) { |symbol| false }
278
+ define_method(:mocha_inspect) { 'mocha_inspect' }
279
+ end.new
280
+ mock = Mock.new
281
+ mock.responds_like(instance)
282
+ mock.stubs(:invoked_method)
283
+ begin
284
+ mock.invoked_method
285
+ rescue NoMethodError => e
286
+ assert_match(/which responds like mocha_inspect/, e.message)
287
+ end
288
+ end
289
+
290
+ def test_should_handle_respond_to_with_private_methods_param_without_error
291
+ mock = Mock.new
292
+ assert_nothing_raised{ mock.respond_to?(:object_id, false) }
293
+ end
294
+
295
+ end
@@ -0,0 +1,149 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/mockery'
3
+ require 'mocha/state_machine'
4
+
5
+ class MockeryTest < Test::Unit::TestCase
6
+
7
+ include Mocha
8
+
9
+ def test_should_build_instance_of_mockery
10
+ mockery = Mockery.instance
11
+ assert_not_nil mockery
12
+ assert_kind_of Mockery, mockery
13
+ end
14
+
15
+ def test_should_cache_instance_of_mockery
16
+ mockery_1 = Mockery.instance
17
+ mockery_2 = Mockery.instance
18
+ assert_same mockery_1, mockery_2
19
+ end
20
+
21
+ def test_should_expire_mockery_instance_cache
22
+ mockery_1 = Mockery.instance
23
+ Mockery.reset_instance
24
+ mockery_2 = Mockery.instance
25
+ assert_not_same mockery_1, mockery_2
26
+ end
27
+
28
+ def test_should_raise_expectation_error_because_not_all_expectations_are_satisfied
29
+ mockery = Mockery.new
30
+ mock_1 = mockery.named_mock('mock-1') { expects(:method_1) }
31
+ mock_2 = mockery.named_mock('mock-2') { expects(:method_2) }
32
+ 1.times { mock_1.method_1 }
33
+ 0.times { mock_2.method_2 }
34
+ assert_raises(ExpectationError) { mockery.verify }
35
+ end
36
+
37
+ def test_should_reset_list_of_mocks_on_teardown
38
+ mockery = Mockery.new
39
+ mock = mockery.unnamed_mock { expects(:my_method) }
40
+ mockery.teardown
41
+ assert_nothing_raised(ExpectationError) { mockery.verify }
42
+ end
43
+
44
+ def test_should_build_instance_of_stubba_on_instantiation
45
+ mockery = Mockery.new
46
+ assert_not_nil mockery.stubba
47
+ assert_kind_of Central, mockery.stubba
48
+ end
49
+
50
+ def test_should_build_new_instance_of_stubba_on_teardown
51
+ mockery = Mockery.new
52
+ stubba_1 = mockery.stubba
53
+ mockery.teardown
54
+ stubba_2 = mockery.stubba
55
+ assert_not_same stubba_1, stubba_2
56
+ end
57
+
58
+ def test_should_build_and_store_new_state_machine
59
+ mockery = Mockery.new
60
+ mockery.new_state_machine('state-machine-name')
61
+ assert_equal 1, mockery.state_machines.length
62
+ assert_kind_of StateMachine, mockery.state_machines[0]
63
+ end
64
+
65
+ def test_should_reset_list_of_state_machines_on_teardown
66
+ mockery = Mockery.new
67
+ mockery.new_state_machine('state-machine-name')
68
+ mockery.teardown
69
+ assert_equal 0, mockery.state_machines.length
70
+ end
71
+
72
+ class FakeMethod
73
+ def stub; end
74
+ def unstub; end
75
+ end
76
+
77
+ def test_should_unstub_all_methods_on_teardown
78
+ mockery = Mockery.new
79
+ stubba = mockery.stubba
80
+ stubba.stub(FakeMethod.new)
81
+ mockery.teardown
82
+ assert stubba.stubba_methods.empty?
83
+ end
84
+
85
+ def test_should_display_object_id_for_mocha_inspect_if_mock_has_no_name
86
+ mockery = Mockery.new
87
+ mock = mockery.unnamed_mock
88
+ assert_match Regexp.new("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.mocha_inspect
89
+ end
90
+
91
+ def test_should_display_object_id_for_inspect_if_mock_has_no_name
92
+ mockery = Mockery.new
93
+ mock = mockery.unnamed_mock
94
+ assert_match Regexp.new("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.inspect
95
+ end
96
+
97
+ def test_should_display_name_for_mocha_inspect_if_mock_has_string_name
98
+ mockery = Mockery.new
99
+ mock = mockery.named_mock('named_mock')
100
+ assert_equal "#<Mock:named_mock>", mock.mocha_inspect
101
+ end
102
+
103
+ def test_should_display_name_for_mocha_inspect_if_mock_has_symbol_name
104
+ mockery = Mockery.new
105
+ mock = mockery.named_mock(:named_mock)
106
+ assert_equal "#<Mock:named_mock>", mock.mocha_inspect
107
+ end
108
+
109
+ def test_should_display_name_for_inspect_if_mock_has_string_name
110
+ mockery = Mockery.new
111
+ mock = mockery.named_mock('named_mock')
112
+ assert_equal "#<Mock:named_mock>", mock.inspect
113
+ end
114
+
115
+ def test_should_display_name_for_inspect_if_mock_has_symbol_name
116
+ mockery = Mockery.new
117
+ mock = mockery.named_mock(:named_mock)
118
+ assert_equal "#<Mock:named_mock>", mock.inspect
119
+ end
120
+
121
+ def test_should_display_impersonated_object_for_mocha_inspect
122
+ mockery = Mockery.new
123
+ instance = Object.new
124
+ mock = mockery.mock_impersonating(instance)
125
+ assert_equal "#{instance.mocha_inspect}", mock.mocha_inspect
126
+ end
127
+
128
+ def test_should_display_impersonated_object_for_inspect
129
+ mockery = Mockery.new
130
+ instance = Object.new
131
+ mock = mockery.mock_impersonating(instance)
132
+ assert_equal "#{instance.mocha_inspect}", mock.inspect
133
+ end
134
+
135
+ class FakeClass; end
136
+
137
+ def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_mocha_inspect
138
+ mockery = Mockery.new
139
+ mock = mockery.mock_impersonating_any_instance_of(FakeClass)
140
+ assert_equal "#<AnyInstance:MockeryTest::FakeClass>", mock.mocha_inspect
141
+ end
142
+
143
+ def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_inspect
144
+ mockery = Mockery.new
145
+ mock = mockery.mock_impersonating_any_instance_of(FakeClass)
146
+ assert_equal "#<AnyInstance:MockeryTest::FakeClass>", mock.inspect
147
+ end
148
+
149
+ end
@@ -0,0 +1,18 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/multiple_yields'
4
+
5
+ class MultipleYieldsTest < Test::Unit::TestCase
6
+
7
+ include Mocha
8
+
9
+ def test_should_provide_parameters_for_multiple_yields_in_single_invocation
10
+ parameter_group = MultipleYields.new([1, 2, 3], [4, 5])
11
+ parameter_groups = []
12
+ parameter_group.each do |parameters|
13
+ parameter_groups << parameters
14
+ end
15
+ assert_equal [[1, 2, 3], [4, 5]], parameter_groups
16
+ end
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/no_yields'
4
+
5
+ class NoYieldsTest < Test::Unit::TestCase
6
+
7
+ include Mocha
8
+
9
+ def test_should_provide_parameters_for_no_yields_in_single_invocation
10
+ parameter_group = NoYields.new
11
+ parameter_groups = []
12
+ parameter_group.each do |parameters|
13
+ parameter_groups << parameters
14
+ end
15
+ assert_equal [], parameter_groups
16
+ end
17
+
18
+ end
@@ -0,0 +1,37 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/inspect'
3
+ require 'method_definer'
4
+
5
+ class ObjectInspectTest < Test::Unit::TestCase
6
+
7
+ def test_should_return_default_string_representation_of_object_not_including_instance_variables
8
+ object = Object.new
9
+ class << object
10
+ attr_accessor :attribute
11
+ end
12
+ object.attribute = 'instance_variable'
13
+ assert_match Regexp.new("^#<Object:0x[0-9A-Fa-f]{1,8}.*>$"), object.mocha_inspect
14
+ assert_no_match(/instance_variable/, object.mocha_inspect)
15
+ end
16
+
17
+ def test_should_return_customized_string_representation_of_object
18
+ object = Object.new
19
+ class << object
20
+ define_method(:inspect) { 'custom_inspect' }
21
+ end
22
+ assert_equal 'custom_inspect', object.mocha_inspect
23
+ end
24
+
25
+ def test_should_use_underscored_id_instead_of_object_id_or_id_so_that_they_can_be_stubbed
26
+ object = Object.new
27
+ object.define_instance_accessor(:called)
28
+ object.called = false
29
+ object.replace_instance_method(:object_id) { self.called = true; 1 }
30
+ if RUBY_VERSION < '1.9'
31
+ object.replace_instance_method(:id) { self.called = true; 1 }
32
+ end
33
+ object.mocha_inspect
34
+ assert_equal false, object.called
35
+ end
36
+
37
+ end
@@ -0,0 +1,82 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/object'
3
+ require 'mocha/mockery'
4
+ require 'mocha/mock'
5
+ require 'method_definer'
6
+
7
+ class ObjectTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_build_mocha_referring_to_self
12
+ instance = Object.new
13
+ mocha = instance.mocha
14
+ assert_not_nil mocha
15
+ assert mocha.is_a?(Mock)
16
+ assert_equal instance.mocha_inspect, mocha.mocha_inspect
17
+ end
18
+
19
+ def test_should_reuse_existing_mocha
20
+ instance = Object.new
21
+ mocha_1 = instance.mocha
22
+ mocha_2 = instance.mocha
23
+ assert_equal mocha_1, mocha_2
24
+ end
25
+
26
+ def test_should_reset_mocha
27
+ instance = Object.new
28
+ assert_nil instance.reset_mocha
29
+ end
30
+
31
+ def test_should_build_any_instance_object
32
+ klass = Class.new
33
+ any_instance = klass.any_instance
34
+ assert_not_nil any_instance
35
+ assert any_instance.is_a?(Class::AnyInstance)
36
+ end
37
+
38
+ def test_should_return_same_any_instance_object
39
+ klass = Class.new
40
+ any_instance_1 = klass.any_instance
41
+ any_instance_2 = klass.any_instance
42
+ assert_equal any_instance_1, any_instance_2
43
+ end
44
+
45
+ def test_should_use_stubba_instance_method_for_object
46
+ assert_equal Mocha::InstanceMethod, Object.new.stubba_method
47
+ end
48
+
49
+ def test_should_use_stubba_module_method_for_module
50
+ assert_equal Mocha::ModuleMethod, Module.new.stubba_method
51
+ end
52
+
53
+ def test_should_use_stubba_class_method_for_class
54
+ assert_equal Mocha::ClassMethod, Class.new.stubba_method
55
+ end
56
+
57
+ def test_should_use_stubba_class_method_for_any_instance
58
+ assert_equal Mocha::AnyInstanceMethod, Class::AnyInstance.new(nil).stubba_method
59
+ end
60
+
61
+ def test_should_stub_self_for_object
62
+ object = Object.new
63
+ assert_equal object, object.stubba_object
64
+ end
65
+
66
+ def test_should_stub_self_for_module
67
+ mod = Module.new
68
+ assert_equal mod, mod.stubba_object
69
+ end
70
+
71
+ def test_should_stub_self_for_class
72
+ klass = Class.new
73
+ assert_equal klass, klass.stubba_object
74
+ end
75
+
76
+ def test_should_stub_relevant_class_for_any_instance
77
+ klass = Class.new
78
+ any_instance = Class::AnyInstance.new(klass)
79
+ assert_equal klass, any_instance.stubba_object
80
+ end
81
+
82
+ end
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/all_of'
4
+ require 'mocha/inspect'
5
+ require 'stub_matcher'
6
+
7
+ class AllOfTest < Test::Unit::TestCase
8
+
9
+ include Mocha::ParameterMatchers
10
+
11
+ def test_should_match_if_all_matchers_match
12
+ matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(true), Stub::Matcher.new(true))
13
+ assert matcher.matches?(['any_old_value'])
14
+ end
15
+
16
+ def test_should_not_match_if_any_matcher_does_not_match
17
+ matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
18
+ assert !matcher.matches?(['any_old_value'])
19
+ end
20
+
21
+ def test_should_describe_matcher
22
+ matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
23
+ assert_equal 'all_of(matcher(true), matcher(false), matcher(true))', matcher.mocha_inspect
24
+ end
25
+
26
+ end
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/any_of'
4
+ require 'mocha/inspect'
5
+ require 'stub_matcher'
6
+
7
+ class AnyOfTest < Test::Unit::TestCase
8
+
9
+ include Mocha::ParameterMatchers
10
+
11
+ def test_should_match_if_any_matchers_match
12
+ matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
13
+ assert matcher.matches?(['any_old_value'])
14
+ end
15
+
16
+ def test_should_not_match_if_no_matchers_match
17
+ matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(false), Stub::Matcher.new(false))
18
+ assert !matcher.matches?(['any_old_value'])
19
+ end
20
+
21
+ def test_should_describe_matcher
22
+ matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
23
+ assert_equal 'any_of(matcher(false), matcher(true), matcher(false))', matcher.mocha_inspect
24
+ end
25
+
26
+ end
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/anything'
4
+ require 'mocha/inspect'
5
+
6
+ class AnythingTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_anything
11
+ matcher = anything
12
+ assert matcher.matches?([:something])
13
+ assert matcher.matches?([{'x' => 'y'}])
14
+ end
15
+
16
+ def test_should_describe_matcher
17
+ matcher = anything
18
+ assert_equal "anything", matcher.mocha_inspect
19
+ end
20
+
21
+ end
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
2
+
3
+ require 'mocha/parameter_matchers/equals'
4
+ require 'mocha/inspect'
5
+
6
+ class EqualsTest < Test::Unit::TestCase
7
+
8
+ include Mocha::ParameterMatchers
9
+
10
+ def test_should_match_object_that_equals_value
11
+ matcher = equals('x')
12
+ assert matcher.matches?(['x'])
13
+ end
14
+
15
+ def test_should_not_match_object_that_does_not_equal_value
16
+ matcher = equals('x')
17
+ assert !matcher.matches?(['y'])
18
+ end
19
+
20
+ def test_should_describe_matcher
21
+ matcher = equals('x')
22
+ assert_equal "'x'", matcher.mocha_inspect
23
+ end
24
+
25
+ end