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,64 @@
1
+ require File.join(File.dirname(__FILE__), "acceptance_test_helper")
2
+ require 'mocha'
3
+
4
+ class FailureMessagesTest < Test::Unit::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
@@ -0,0 +1,153 @@
1
+ require File.join(File.dirname(__FILE__), "acceptance_test_helper")
2
+
3
+ begin
4
+ require 'rubygems'
5
+ gem 'minitest'
6
+ rescue Gem::LoadError
7
+ # MiniTest gem not available
8
+ end
9
+
10
+ begin
11
+ require 'minitest/unit'
12
+ rescue LoadError
13
+ # MiniTest not available
14
+ end
15
+
16
+ if defined?(MiniTest)
17
+
18
+ # monkey-patch MiniTest now that it has hopefully been loaded
19
+ require 'mocha/integration/mini_test'
20
+
21
+ class MiniTestSampleTest < MiniTest::Unit::TestCase
22
+
23
+ def test_mocha_with_fulfilled_expectation
24
+ mockee = mock()
25
+ mockee.expects(:blah)
26
+ mockee.blah
27
+ end
28
+
29
+ def test_mocha_with_unfulfilled_expectation
30
+ mockee = mock()
31
+ mockee.expects(:blah)
32
+ end
33
+
34
+ def test_mocha_with_unexpected_invocation
35
+ mockee = mock()
36
+ mockee.blah
37
+ end
38
+
39
+ def test_stubba_with_fulfilled_expectation
40
+ stubbee = Class.new { define_method(:blah) {} }.new
41
+ stubbee.expects(:blah)
42
+ stubbee.blah
43
+ end
44
+
45
+ def test_stubba_with_unfulfilled_expectation
46
+ stubbee = Class.new { define_method(:blah) {} }.new
47
+ stubbee.expects(:blah)
48
+ end
49
+
50
+ def test_mocha_with_matching_parameter
51
+ mockee = mock()
52
+ mockee.expects(:blah).with(has_key(:wibble))
53
+ mockee.blah(:wibble => 1)
54
+ end
55
+
56
+ def test_mocha_with_non_matching_parameter
57
+ mockee = mock()
58
+ mockee.expects(:blah).with(has_key(:wibble))
59
+ mockee.blah(:wobble => 2)
60
+ end
61
+
62
+ end
63
+
64
+ class MiniTestTest < Test::Unit::TestCase
65
+
66
+ def setup
67
+ @output = StringIO.new
68
+ MiniTest::Unit.output = @output
69
+ @runner = MiniTest::Unit.new
70
+ end
71
+
72
+ attr_reader :runner
73
+
74
+ def test_should_pass_mocha_test
75
+ runner.run(%w(-n test_mocha_with_fulfilled_expectation))
76
+
77
+ assert_equal 0, runner.failures
78
+ assert_equal 0, runner.errors
79
+ assert_equal 1, runner.assertion_count
80
+ end
81
+
82
+ def test_should_fail_mocha_test_due_to_unfulfilled_expectation
83
+ runner.run(%w(-n test_mocha_with_unfulfilled_expectation))
84
+
85
+ assert_equal 1, runner.failures
86
+ assert_equal 0, runner.errors
87
+ assert_equal 1, runner.assertion_count
88
+ assert_not_all_expectation_were_satisfied
89
+ end
90
+
91
+ def test_should_fail_mocha_test_due_to_unexpected_invocation
92
+ runner.run(%w(-n test_mocha_with_unexpected_invocation))
93
+
94
+ assert_equal 1, runner.failures
95
+ assert_equal 0, runner.errors
96
+ assert_equal 0, runner.assertion_count
97
+ assert_unexpected_invocation
98
+ end
99
+
100
+ def test_should_pass_stubba_test
101
+ runner.run(%w(-n test_stubba_with_fulfilled_expectation))
102
+
103
+ assert_equal 0, runner.failures
104
+ assert_equal 0, runner.errors
105
+ assert_equal 1, runner.assertion_count
106
+ end
107
+
108
+ def test_should_fail_stubba_test_due_to_unfulfilled_expectation
109
+ runner.run(%w(-n test_stubba_with_unfulfilled_expectation))
110
+
111
+ assert_equal 1, runner.failures
112
+ assert_equal 0, runner.errors
113
+ assert_equal 1, runner.assertion_count
114
+ assert_not_all_expectation_were_satisfied
115
+ end
116
+
117
+ def test_should_pass_mocha_test_with_matching_parameter
118
+ runner.run(%w(-n test_mocha_with_matching_parameter))
119
+
120
+ assert_equal 0, runner.failures
121
+ assert_equal 0, runner.errors
122
+ assert_equal 1, runner.assertion_count
123
+ end
124
+
125
+ def test_should_fail_mocha_test_with_non_matching_parameter
126
+ runner.run(%w(-n test_mocha_with_non_matching_parameter))
127
+
128
+ assert_equal 1, runner.failures
129
+ assert_equal 0, runner.errors
130
+ assert_equal 0, runner.assertion_count # unexpected invocation occurs before expectation is verified
131
+ assert_unexpected_invocation
132
+ end
133
+
134
+ private
135
+
136
+ def output
137
+ @output.rewind
138
+ @output.read
139
+ end
140
+
141
+ def assert_unexpected_invocation
142
+ assert_match Regexp.new('unexpected invocation'), output, "MiniTest output:\n#{output}"
143
+ end
144
+
145
+ def assert_not_all_expectation_were_satisfied
146
+ assert_match Regexp.new('not all expectations were satisfied'), output, "MiniTest output:\n#{output}"
147
+ end
148
+
149
+ end
150
+
151
+ else
152
+ warn "MiniTest is not available, so MiniTestAdapterTest has not been run."
153
+ end
@@ -0,0 +1,98 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha'
3
+
4
+ class MochaExampleTest < Test::Unit::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
@@ -0,0 +1,84 @@
1
+ require File.join(File.dirname(__FILE__), "acceptance_test_helper")
2
+ require 'mocha'
3
+ require 'execution_point'
4
+
5
+ class MochaTestResultTest < Test::Unit::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
@@ -0,0 +1,100 @@
1
+ require File.join(File.dirname(__FILE__), "acceptance_test_helper")
2
+ require 'mocha'
3
+
4
+ class MockTest < Test::Unit::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