mocha-macruby 0.9.8.20100129120100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. data/COPYING +3 -0
  2. data/MIT-LICENSE +7 -0
  3. data/README +39 -0
  4. data/RELEASE +294 -0
  5. data/Rakefile +214 -0
  6. data/examples/misc.rb +43 -0
  7. data/examples/mocha.rb +25 -0
  8. data/examples/stubba.rb +64 -0
  9. data/lib/mocha.rb +3 -0
  10. data/lib/mocha/any_instance_method.rb +59 -0
  11. data/lib/mocha/api.rb +173 -0
  12. data/lib/mocha/argument_iterator.rb +21 -0
  13. data/lib/mocha/backtrace_filter.rb +17 -0
  14. data/lib/mocha/cardinality.rb +95 -0
  15. data/lib/mocha/central.rb +27 -0
  16. data/lib/mocha/change_state_side_effect.rb +19 -0
  17. data/lib/mocha/class_method.rb +117 -0
  18. data/lib/mocha/configuration.rb +79 -0
  19. data/lib/mocha/deprecation.rb +22 -0
  20. data/lib/mocha/exception_raiser.rb +17 -0
  21. data/lib/mocha/expectation.rb +476 -0
  22. data/lib/mocha/expectation_error.rb +15 -0
  23. data/lib/mocha/expectation_list.rb +50 -0
  24. data/lib/mocha/in_state_ordering_constraint.rb +19 -0
  25. data/lib/mocha/inspect.rb +67 -0
  26. data/lib/mocha/instance_method.rb +16 -0
  27. data/lib/mocha/integration.rb +38 -0
  28. data/lib/mocha/integration/mini_test.rb +21 -0
  29. data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
  30. data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
  31. data/lib/mocha/integration/test_unit.rb +40 -0
  32. data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
  33. data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
  34. data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
  35. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
  36. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
  37. data/lib/mocha/is_a.rb +9 -0
  38. data/lib/mocha/logger.rb +15 -0
  39. data/lib/mocha/metaclass.rb +13 -0
  40. data/lib/mocha/method_matcher.rb +21 -0
  41. data/lib/mocha/mock.rb +200 -0
  42. data/lib/mocha/mockery.rb +181 -0
  43. data/lib/mocha/module_method.rb +16 -0
  44. data/lib/mocha/multiple_yields.rb +20 -0
  45. data/lib/mocha/names.rb +53 -0
  46. data/lib/mocha/no_yields.rb +11 -0
  47. data/lib/mocha/object.rb +187 -0
  48. data/lib/mocha/parameter_matchers.rb +27 -0
  49. data/lib/mocha/parameter_matchers/all_of.rb +42 -0
  50. data/lib/mocha/parameter_matchers/any_of.rb +47 -0
  51. data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
  52. data/lib/mocha/parameter_matchers/anything.rb +33 -0
  53. data/lib/mocha/parameter_matchers/base.rb +15 -0
  54. data/lib/mocha/parameter_matchers/equals.rb +42 -0
  55. data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
  56. data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
  57. data/lib/mocha/parameter_matchers/has_key.rb +43 -0
  58. data/lib/mocha/parameter_matchers/has_value.rb +43 -0
  59. data/lib/mocha/parameter_matchers/includes.rb +41 -0
  60. data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
  61. data/lib/mocha/parameter_matchers/is_a.rb +42 -0
  62. data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
  63. data/lib/mocha/parameter_matchers/not.rb +42 -0
  64. data/lib/mocha/parameter_matchers/object.rb +15 -0
  65. data/lib/mocha/parameter_matchers/optionally.rb +55 -0
  66. data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
  67. data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
  68. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
  69. data/lib/mocha/parameters_matcher.rb +37 -0
  70. data/lib/mocha/pretty_parameters.rb +28 -0
  71. data/lib/mocha/return_values.rb +31 -0
  72. data/lib/mocha/sequence.rb +42 -0
  73. data/lib/mocha/single_return_value.rb +17 -0
  74. data/lib/mocha/single_yield.rb +18 -0
  75. data/lib/mocha/standalone.rb +1 -0
  76. data/lib/mocha/state_machine.rb +91 -0
  77. data/lib/mocha/stubbing_error.rb +16 -0
  78. data/lib/mocha/unexpected_invocation.rb +18 -0
  79. data/lib/mocha/yield_parameters.rb +31 -0
  80. data/lib/mocha_standalone.rb +2 -0
  81. data/lib/stubba.rb +4 -0
  82. data/test/acceptance/acceptance_test_helper.rb +38 -0
  83. data/test/acceptance/api_test.rb +139 -0
  84. data/test/acceptance/bug_18914_test.rb +43 -0
  85. data/test/acceptance/bug_21465_test.rb +34 -0
  86. data/test/acceptance/bug_21563_test.rb +25 -0
  87. data/test/acceptance/expected_invocation_count_test.rb +196 -0
  88. data/test/acceptance/failure_messages_test.rb +64 -0
  89. data/test/acceptance/minitest_test.rb +153 -0
  90. data/test/acceptance/mocha_example_test.rb +98 -0
  91. data/test/acceptance/mocha_test_result_test.rb +84 -0
  92. data/test/acceptance/mock_test.rb +100 -0
  93. data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
  94. data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
  95. data/test/acceptance/optional_parameters_test.rb +70 -0
  96. data/test/acceptance/parameter_matcher_test.rb +209 -0
  97. data/test/acceptance/partial_mocks_test.rb +47 -0
  98. data/test/acceptance/return_value_test.rb +52 -0
  99. data/test/acceptance/sequence_test.rb +186 -0
  100. data/test/acceptance/states_test.rb +70 -0
  101. data/test/acceptance/stub_any_instance_method_test.rb +195 -0
  102. data/test/acceptance/stub_class_method_test.rb +203 -0
  103. data/test/acceptance/stub_everything_test.rb +56 -0
  104. data/test/acceptance/stub_instance_method_test.rb +203 -0
  105. data/test/acceptance/stub_module_method_test.rb +163 -0
  106. data/test/acceptance/stub_test.rb +52 -0
  107. data/test/acceptance/stubba_example_test.rb +102 -0
  108. data/test/acceptance/stubba_test.rb +15 -0
  109. data/test/acceptance/stubba_test_result_test.rb +66 -0
  110. data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
  111. data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
  112. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
  113. data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
  114. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
  115. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
  116. data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
  117. data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
  118. data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
  119. data/test/deprecation_disabler.rb +15 -0
  120. data/test/execution_point.rb +36 -0
  121. data/test/method_definer.rb +24 -0
  122. data/test/simple_counter.rb +13 -0
  123. data/test/test_helper.rb +25 -0
  124. data/test/test_runner.rb +33 -0
  125. data/test/unit/any_instance_method_test.rb +126 -0
  126. data/test/unit/array_inspect_test.rb +16 -0
  127. data/test/unit/backtrace_filter_test.rb +19 -0
  128. data/test/unit/cardinality_test.rb +56 -0
  129. data/test/unit/central_test.rb +65 -0
  130. data/test/unit/change_state_side_effect_test.rb +41 -0
  131. data/test/unit/class_method_test.rb +295 -0
  132. data/test/unit/configuration_test.rb +38 -0
  133. data/test/unit/date_time_inspect_test.rb +21 -0
  134. data/test/unit/exception_raiser_test.rb +42 -0
  135. data/test/unit/expectation_list_test.rb +57 -0
  136. data/test/unit/expectation_test.rb +480 -0
  137. data/test/unit/hash_inspect_test.rb +16 -0
  138. data/test/unit/in_state_ordering_constraint_test.rb +43 -0
  139. data/test/unit/metaclass_test.rb +22 -0
  140. data/test/unit/method_matcher_test.rb +23 -0
  141. data/test/unit/mock_test.rb +302 -0
  142. data/test/unit/mockery_test.rb +149 -0
  143. data/test/unit/multiple_yields_test.rb +18 -0
  144. data/test/unit/no_yields_test.rb +18 -0
  145. data/test/unit/object_inspect_test.rb +37 -0
  146. data/test/unit/object_test.rb +82 -0
  147. data/test/unit/parameter_matchers/all_of_test.rb +26 -0
  148. data/test/unit/parameter_matchers/any_of_test.rb +26 -0
  149. data/test/unit/parameter_matchers/anything_test.rb +21 -0
  150. data/test/unit/parameter_matchers/equals_test.rb +25 -0
  151. data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
  152. data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
  153. data/test/unit/parameter_matchers/has_key_test.rb +55 -0
  154. data/test/unit/parameter_matchers/has_value_test.rb +57 -0
  155. data/test/unit/parameter_matchers/includes_test.rb +44 -0
  156. data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  157. data/test/unit/parameter_matchers/is_a_test.rb +25 -0
  158. data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  159. data/test/unit/parameter_matchers/not_test.rb +26 -0
  160. data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
  161. data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
  162. data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
  163. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
  164. data/test/unit/parameters_matcher_test.rb +121 -0
  165. data/test/unit/return_values_test.rb +63 -0
  166. data/test/unit/sequence_test.rb +104 -0
  167. data/test/unit/single_return_value_test.rb +14 -0
  168. data/test/unit/single_yield_test.rb +18 -0
  169. data/test/unit/state_machine_test.rb +98 -0
  170. data/test/unit/string_inspect_test.rb +11 -0
  171. data/test/unit/yield_parameters_test.rb +93 -0
  172. metadata +240 -0
@@ -0,0 +1,41 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/change_state_side_effect'
4
+
5
+ class ChangeStateSideEffectTest < Test::Unit::TestCase
6
+
7
+ include Mocha
8
+
9
+ class FakeState
10
+
11
+ attr_reader :active
12
+ attr_writer :description
13
+
14
+ def activate
15
+ @active = true
16
+ end
17
+
18
+ def mocha_inspect
19
+ @description
20
+ end
21
+
22
+ end
23
+
24
+ def test_should_activate_the_given_state
25
+ state = FakeState.new
26
+ side_effect = ChangeStateSideEffect.new(state)
27
+
28
+ side_effect.perform
29
+
30
+ assert state.active
31
+ end
32
+
33
+ def test_should_describe_itself_in_terms_of_the_activated_state
34
+ state = FakeState.new
35
+ state.description = 'the-new-state'
36
+ side_effect = ChangeStateSideEffect.new(state)
37
+
38
+ assert_equal 'then the-new-state', side_effect.mocha_inspect
39
+ end
40
+
41
+ end
@@ -0,0 +1,295 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'method_definer'
3
+ require 'mocha/mock'
4
+
5
+ require 'mocha/class_method'
6
+
7
+ class ClassMethodTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_provide_hidden_version_of_method_name_starting_with_prefix
12
+ method = ClassMethod.new(nil, :original_method_name)
13
+ assert_match(/^__stubba__/, method.hidden_method.to_s)
14
+ end
15
+
16
+ def test_should_provide_hidden_version_of_method_name_ending_with_suffix
17
+ method = ClassMethod.new(nil, :original_method_name)
18
+ assert_match(/__stubba__$/, method.hidden_method.to_s)
19
+ end
20
+
21
+ def test_should_provide_hidden_version_of_method_name_including_original_method_name
22
+ method = ClassMethod.new(nil, :original_method_name)
23
+ assert_match(/original_method_name/, method.hidden_method.to_s)
24
+ end
25
+
26
+ def test_should_provide_hidden_version_of_method_name_substituting_question_mark
27
+ method = ClassMethod.new(nil, :question_mark?)
28
+ assert_no_match(/\?/, method.hidden_method.to_s)
29
+ assert_match(/question_mark_substituted_character_63/, method.hidden_method.to_s)
30
+ end
31
+
32
+ def test_should_provide_hidden_version_of_method_name_substituting_exclamation_mark
33
+ method = ClassMethod.new(nil, :exclamation_mark!)
34
+ assert_no_match(/!/, method.hidden_method.to_s)
35
+ assert_match(/exclamation_mark_substituted_character_33/, method.hidden_method.to_s)
36
+ end
37
+
38
+ def test_should_provide_hidden_version_of_method_name_substituting_equals_sign
39
+ method = ClassMethod.new(nil, :equals_sign=)
40
+ assert_no_match(/\=/, method.hidden_method.to_s)
41
+ assert_match(/equals_sign_substituted_character_61/, method.hidden_method.to_s)
42
+ end
43
+
44
+ def test_should_provide_hidden_version_of_method_name_substituting_brackets
45
+ method = ClassMethod.new(nil, :[])
46
+ assert_no_match(/\[\]/, method.hidden_method.to_s)
47
+ assert_match(/substituted_character_91__substituted_character_93/, method.hidden_method.to_s)
48
+ end
49
+
50
+ def test_should_provide_hidden_version_of_method_name_substituting_plus_sign
51
+ method = ClassMethod.new(nil, :+)
52
+ assert_no_match(/\+/, method.hidden_method.to_s)
53
+ assert_match(/substituted_character_43/, method.hidden_method.to_s)
54
+ end
55
+
56
+ def test_should_hide_original_method
57
+ klass = Class.new { def self.method_x; end }
58
+ method = ClassMethod.new(klass, :method_x)
59
+ hidden_method_x = method.hidden_method
60
+
61
+ method.hide_original_method
62
+
63
+ assert klass.respond_to?(hidden_method_x)
64
+ end
65
+
66
+ def test_should_respond_to_original_method_name_after_original_method_has_been_hidden
67
+ klass = Class.new { def self.original_method_name; end }
68
+ method = ClassMethod.new(klass, :original_method_name)
69
+ hidden_method_x = method.hidden_method
70
+
71
+ method.hide_original_method
72
+
73
+ assert klass.respond_to?(:original_method_name)
74
+ end
75
+
76
+ def test_should_not_hide_original_method_if_method_not_defined
77
+ klass = Class.new
78
+ method = ClassMethod.new(klass, :method_x)
79
+ hidden_method_x = method.hidden_method
80
+
81
+ method.hide_original_method
82
+
83
+ assert_equal false, klass.respond_to?(hidden_method_x)
84
+ end
85
+
86
+ def test_should_define_a_new_method_which_should_call_mocha_method_missing
87
+ klass = Class.new { def self.method_x; end }
88
+ mocha = Mocha::Mock.new
89
+ klass.define_instance_method(:mocha) { mocha }
90
+ mocha.expects(:method_x).with(:param1, :param2).returns(:result)
91
+ method = ClassMethod.new(klass, :method_x)
92
+
93
+ method.hide_original_method
94
+ method.define_new_method
95
+ result = klass.method_x(:param1, :param2)
96
+
97
+ assert_equal :result, result
98
+ assert mocha.__verified__?
99
+ end
100
+
101
+ def test_should_remove_new_method
102
+ klass = Class.new { def self.method_x; end }
103
+ method = ClassMethod.new(klass, :method_x)
104
+
105
+ method.remove_new_method
106
+
107
+ assert_equal false, klass.respond_to?(:method_x)
108
+ end
109
+
110
+ def test_should_restore_original_method
111
+ klass = Class.new { def self.method_x; end }
112
+ method = ClassMethod.new(klass, :method_x)
113
+ hidden_method_x = method.hidden_method.to_sym
114
+ klass.define_instance_method(hidden_method_x) { :original_result }
115
+
116
+ method.remove_new_method
117
+ method.restore_original_method
118
+
119
+ assert_equal :original_result, klass.method_x
120
+ assert_equal false, klass.respond_to?(hidden_method_x)
121
+ end
122
+
123
+ def test_should_not_restore_original_method_if_hidden_method_is_not_defined
124
+ klass = Class.new { def self.method_x; :new_result; end }
125
+ method = ClassMethod.new(klass, :method_x)
126
+
127
+ method.restore_original_method
128
+
129
+ assert_equal :new_result, klass.method_x
130
+ end
131
+
132
+ def test_should_call_hide_original_method
133
+ klass = Class.new { def self.method_x; end }
134
+ method = ClassMethod.new(klass, :method_x)
135
+ method.hide_original_method
136
+ method.define_instance_accessor(:hide_called)
137
+ method.replace_instance_method(:hide_original_method) { self.hide_called = true }
138
+
139
+ method.stub
140
+
141
+ assert method.hide_called
142
+ end
143
+
144
+ def test_should_call_define_new_method
145
+ klass = Class.new { def self.method_x; end }
146
+ method = ClassMethod.new(klass, :method_x)
147
+ method.define_instance_accessor(:define_called)
148
+ method.replace_instance_method(:define_new_method) { self.define_called = true }
149
+
150
+ method.stub
151
+
152
+ assert method.define_called
153
+ end
154
+
155
+ def test_should_call_remove_new_method
156
+ klass = Class.new { def self.method_x; end }
157
+ klass.define_instance_method(:reset_mocha) { }
158
+ method = ClassMethod.new(klass, :method_x)
159
+ method.define_instance_accessor(:remove_called)
160
+ method.replace_instance_method(:remove_new_method) { self.remove_called = true }
161
+
162
+ method.unstub
163
+
164
+ assert method.remove_called
165
+ end
166
+
167
+ def test_should_call_restore_original_method
168
+ klass = Class.new { def self.method_x; end }
169
+ klass.define_instance_method(:reset_mocha) { }
170
+ method = ClassMethod.new(klass, :method_x)
171
+ method.define_instance_accessor(:restore_called)
172
+ method.replace_instance_method(:restore_original_method) { self.restore_called = true }
173
+
174
+ method.unstub
175
+
176
+ assert method.restore_called
177
+ end
178
+
179
+ def test_should_call_reset_mocha
180
+ klass = Class.new { def self.method_x; end }
181
+ klass.define_instance_accessor(:reset_called)
182
+ klass.define_instance_method(:reset_mocha) { self.reset_called = true }
183
+ method = ClassMethod.new(klass, :method_x)
184
+ method.replace_instance_method(:restore_original_method) { }
185
+
186
+ method.unstub
187
+
188
+ assert klass.reset_called
189
+ end
190
+
191
+ def test_should_return_mock_for_stubbee
192
+ mocha = Object.new
193
+ stubbee = Object.new
194
+ stubbee.define_instance_accessor(:mocha) { mocha }
195
+ stubbee.mocha = nil
196
+ method = ClassMethod.new(stubbee, :method_name)
197
+ assert_equal stubbee.mocha, method.mock
198
+ end
199
+
200
+ def test_should_not_be_equal_if_other_object_has_a_different_class
201
+ class_method = ClassMethod.new(Object.new, :method)
202
+ other_object = Object.new
203
+ assert class_method != other_object
204
+ end
205
+
206
+ def test_should_not_be_equal_if_other_class_method_has_different_stubbee
207
+ stubbee_1 = Object.new
208
+ stubbee_2 = Object.new
209
+ class_method_1 = ClassMethod.new(stubbee_1, :method)
210
+ class_method_2 = ClassMethod.new(stubbee_2, :method)
211
+ assert class_method_1 != class_method_2
212
+ end
213
+
214
+ def test_should_not_be_equal_if_other_class_method_has_different_method
215
+ stubbee = Object.new
216
+ class_method_1 = ClassMethod.new(stubbee, :method_1)
217
+ class_method_2 = ClassMethod.new(stubbee, :method_2)
218
+ assert class_method_1 != class_method_2
219
+ end
220
+
221
+ def test_should_be_equal_if_other_class_method_has_same_stubbee_and_same_method_so_no_attempt_is_made_to_stub_a_method_twice
222
+ stubbee = Object.new
223
+ class_method_1 = ClassMethod.new(stubbee, :method)
224
+ class_method_2 = ClassMethod.new(stubbee, :method)
225
+ assert class_method_1 == class_method_2
226
+ end
227
+
228
+ def test_should_be_equal_if_other_class_method_has_same_stubbee_and_same_method_but_stubbee_equal_method_lies_like_active_record_association_proxy
229
+ stubbee = Class.new do
230
+ def equal?(other); false; end
231
+ end.new
232
+ class_method_1 = ClassMethod.new(stubbee, :method)
233
+ class_method_2 = ClassMethod.new(stubbee, :method)
234
+ assert class_method_1 == class_method_2
235
+ end
236
+
237
+ end
238
+
239
+ if on_macruby?
240
+ class MacRubyClassMethodTest < Test::Unit::TestCase
241
+
242
+ include Mocha
243
+
244
+ def test_should_hide_original_method
245
+ klass = Class.new
246
+ klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); end", __FILE__, __LINE__)
247
+ method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
248
+
249
+ method.hide_original_method
250
+
251
+ assert klass.respond_to?(method.hidden_method)
252
+ end
253
+
254
+ def test_should_define_a_new_method_which_should_call_mocha_method_missing
255
+ klass = Class.new
256
+ klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); end", __FILE__, __LINE__)
257
+ mocha = Mocha::Mock.new
258
+ klass.define_instance_method(:mocha) { mocha }
259
+ mocha.expects('method:withExtraParam:andAnotherParam:').with(:method, :param1, :param2).returns(:result)
260
+ method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
261
+
262
+ method.hide_original_method
263
+ method.define_new_method
264
+ result = klass.send('method:withExtraParam:andAnotherParam:', :method, :param1, :param2)
265
+
266
+ assert_equal :result, result
267
+ assert mocha.__verified__?
268
+ end
269
+
270
+ def test_should_remove_new_method
271
+ klass = Class.new
272
+ klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); end", __FILE__, __LINE__)
273
+ method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
274
+
275
+ method.remove_new_method
276
+
277
+ assert_equal false, klass.respond_to?('method:withExtraParam:andAnotherParam:')
278
+ end
279
+
280
+ def test_should_restore_original_method
281
+ klass = Class.new
282
+ klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); :original_result; end", __FILE__, __LINE__)
283
+ method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
284
+ hidden_method = method.hidden_method.to_sym
285
+
286
+ method.hide_original_method
287
+ method.remove_new_method
288
+ method.restore_original_method
289
+
290
+ assert_equal :original_result, klass.send('method:withExtraParam:andAnotherParam:', :method, :param1, :param2)
291
+ assert_equal false, klass.respond_to?(hidden_method)
292
+ end
293
+
294
+ end
295
+ end
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require "mocha/configuration"
3
+
4
+ class ConfigurationTest < Test::Unit::TestCase
5
+ def test_allow_temporarily_changes_config_when_given_block
6
+ Mocha::Configuration.warn_when(:stubbing_method_unnecessarily)
7
+ yielded = false
8
+ Mocha::Configuration.allow(:stubbing_method_unnecessarily) do
9
+ yielded = true
10
+ assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
11
+ end
12
+ assert yielded
13
+ assert Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
14
+ end
15
+
16
+ def test_prevent_temporarily_changes_config_when_given_block
17
+ Mocha::Configuration.allow(:stubbing_method_unnecessarily)
18
+ yielded = false
19
+ Mocha::Configuration.prevent(:stubbing_method_unnecessarily) do
20
+ yielded = true
21
+ assert Mocha::Configuration.prevent?(:stubbing_method_unnecessarily)
22
+ end
23
+ assert yielded
24
+ assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
25
+ end
26
+
27
+ def test_warn_when_temporarily_changes_config_when_given_block
28
+ Mocha::Configuration.allow(:stubbing_method_unnecessarily)
29
+ yielded = false
30
+ Mocha::Configuration.warn_when(:stubbing_method_unnecessarily) do
31
+ yielded = true
32
+ assert Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
33
+ end
34
+ assert yielded
35
+ assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
36
+ end
37
+ end
38
+
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/inspect'
3
+
4
+ class DateTimeInspectTest < Test::Unit::TestCase
5
+
6
+ def test_should_use_include_date_in_seconds
7
+ time = Time.now
8
+ assert_equal "#{time.inspect} (#{time.to_f} secs)", time.mocha_inspect
9
+ end
10
+
11
+ def test_should_use_to_s_for_date
12
+ date = Date.new(2006, 1, 1)
13
+ assert_equal date.to_s, date.mocha_inspect
14
+ end
15
+
16
+ def test_should_use_to_s_for_datetime
17
+ datetime = DateTime.new(2006, 1, 1)
18
+ assert_equal datetime.to_s, datetime.mocha_inspect
19
+ end
20
+
21
+ end
@@ -0,0 +1,42 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/exception_raiser'
4
+ require 'timeout'
5
+
6
+ class ExceptionRaiserTest < Test::Unit::TestCase
7
+
8
+ include Mocha
9
+
10
+ def test_should_raise_exception_with_specified_class_and_default_message
11
+ exception_class = Class.new(StandardError)
12
+ raiser = ExceptionRaiser.new(exception_class, nil)
13
+ exception = assert_raises(exception_class) { raiser.evaluate }
14
+ assert_equal exception_class.to_s, exception.message
15
+ end
16
+
17
+ def test_should_raise_exception_with_specified_class_and_message
18
+ exception_class = Class.new(StandardError)
19
+ raiser = ExceptionRaiser.new(exception_class, 'message')
20
+ exception = assert_raises(exception_class) { raiser.evaluate }
21
+ assert_equal 'message', exception.message
22
+ end
23
+
24
+ def test_should_raise_exception_instance
25
+ exception_class = Class.new(StandardError)
26
+ raiser = ExceptionRaiser.new(exception_class.new('message'), nil)
27
+ exception = assert_raises(exception_class) { raiser.evaluate }
28
+ assert_equal 'message', exception.message
29
+ end
30
+
31
+ def test_should_raise_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
32
+ raiser = ExceptionRaiser.new(Interrupt, nil)
33
+ assert_raises(Interrupt) { raiser.evaluate }
34
+ end
35
+
36
+ def test_should_raise_subclass_of_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
37
+ exception_class = Class.new(Interrupt)
38
+ raiser = ExceptionRaiser.new(exception_class, nil)
39
+ assert_raises(exception_class) { raiser.evaluate }
40
+ end
41
+
42
+ end
@@ -0,0 +1,57 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/expectation_list'
3
+ require 'mocha/expectation'
4
+ require 'set'
5
+ require 'method_definer'
6
+
7
+ class ExpectationListTest < Test::Unit::TestCase
8
+
9
+ include Mocha
10
+
11
+ def test_should_return_added_expectation
12
+ expectation_list = ExpectationList.new
13
+ expectation = Expectation.new(nil, :my_method)
14
+ assert_same expectation, expectation_list.add(expectation)
15
+ end
16
+
17
+ def test_should_find_matching_expectation
18
+ expectation_list = ExpectationList.new
19
+ expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
20
+ expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
21
+ expectation_list.add(expectation1)
22
+ expectation_list.add(expectation2)
23
+ assert_same expectation1, expectation_list.match(:my_method, :argument1, :argument2)
24
+ end
25
+
26
+ def test_should_find_most_recent_matching_expectation
27
+ expectation_list = ExpectationList.new
28
+ expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
29
+ expectation2 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
30
+ expectation_list.add(expectation1)
31
+ expectation_list.add(expectation2)
32
+ assert_same expectation2, expectation_list.match(:my_method, :argument1, :argument2)
33
+ end
34
+
35
+ def test_should_find_matching_expectation_allowing_invocation
36
+ expectation_list = ExpectationList.new
37
+ expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
38
+ expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
39
+ expectation1.define_instance_method(:invocations_allowed?) { true }
40
+ expectation2.define_instance_method(:invocations_allowed?) { true }
41
+ expectation_list.add(expectation1)
42
+ expectation_list.add(expectation2)
43
+ assert_same expectation1, expectation_list.match_allowing_invocation(:my_method, :argument1, :argument2)
44
+ end
45
+
46
+ def test_should_find_most_recent_matching_expectation_allowing_invocation
47
+ expectation_list = ExpectationList.new
48
+ expectation1 = Expectation.new(nil, :my_method)
49
+ expectation2 = Expectation.new(nil, :my_method)
50
+ expectation1.define_instance_method(:invocations_allowed?) { true }
51
+ expectation2.define_instance_method(:invocations_allowed?) { false }
52
+ expectation_list.add(expectation1)
53
+ expectation_list.add(expectation2)
54
+ assert_same expectation1, expectation_list.match_allowing_invocation(:my_method)
55
+ end
56
+
57
+ end