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.
- data/COPYING +3 -0
- data/MIT-LICENSE +7 -0
- data/README +39 -0
- data/RELEASE +294 -0
- data/Rakefile +214 -0
- data/examples/misc.rb +43 -0
- data/examples/mocha.rb +25 -0
- data/examples/stubba.rb +64 -0
- data/lib/mocha.rb +3 -0
- data/lib/mocha/any_instance_method.rb +59 -0
- data/lib/mocha/api.rb +173 -0
- data/lib/mocha/argument_iterator.rb +21 -0
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +95 -0
- data/lib/mocha/central.rb +27 -0
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +117 -0
- data/lib/mocha/configuration.rb +79 -0
- data/lib/mocha/deprecation.rb +22 -0
- data/lib/mocha/exception_raiser.rb +17 -0
- data/lib/mocha/expectation.rb +476 -0
- data/lib/mocha/expectation_error.rb +15 -0
- data/lib/mocha/expectation_list.rb +50 -0
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/inspect.rb +67 -0
- data/lib/mocha/instance_method.rb +16 -0
- data/lib/mocha/integration.rb +38 -0
- data/lib/mocha/integration/mini_test.rb +21 -0
- data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
- data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
- data/lib/mocha/integration/test_unit.rb +40 -0
- data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
- data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
- data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
- data/lib/mocha/is_a.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/metaclass.rb +13 -0
- data/lib/mocha/method_matcher.rb +21 -0
- data/lib/mocha/mock.rb +200 -0
- data/lib/mocha/mockery.rb +181 -0
- data/lib/mocha/module_method.rb +16 -0
- data/lib/mocha/multiple_yields.rb +20 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/no_yields.rb +11 -0
- data/lib/mocha/object.rb +187 -0
- data/lib/mocha/parameter_matchers.rb +27 -0
- data/lib/mocha/parameter_matchers/all_of.rb +42 -0
- data/lib/mocha/parameter_matchers/any_of.rb +47 -0
- data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
- data/lib/mocha/parameter_matchers/anything.rb +33 -0
- data/lib/mocha/parameter_matchers/base.rb +15 -0
- data/lib/mocha/parameter_matchers/equals.rb +42 -0
- data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
- data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
- data/lib/mocha/parameter_matchers/has_key.rb +43 -0
- data/lib/mocha/parameter_matchers/has_value.rb +43 -0
- data/lib/mocha/parameter_matchers/includes.rb +41 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
- data/lib/mocha/parameter_matchers/is_a.rb +42 -0
- data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
- data/lib/mocha/parameter_matchers/not.rb +42 -0
- data/lib/mocha/parameter_matchers/object.rb +15 -0
- data/lib/mocha/parameter_matchers/optionally.rb +55 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/parameters_matcher.rb +37 -0
- data/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/mocha/return_values.rb +31 -0
- data/lib/mocha/sequence.rb +42 -0
- data/lib/mocha/single_return_value.rb +17 -0
- data/lib/mocha/single_yield.rb +18 -0
- data/lib/mocha/standalone.rb +1 -0
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/unexpected_invocation.rb +18 -0
- data/lib/mocha/yield_parameters.rb +31 -0
- data/lib/mocha_standalone.rb +2 -0
- data/lib/stubba.rb +4 -0
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/api_test.rb +139 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/bug_21465_test.rb +34 -0
- data/test/acceptance/bug_21563_test.rb +25 -0
- data/test/acceptance/expected_invocation_count_test.rb +196 -0
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/minitest_test.rb +153 -0
- data/test/acceptance/mocha_example_test.rb +98 -0
- data/test/acceptance/mocha_test_result_test.rb +84 -0
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
- data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
- data/test/acceptance/optional_parameters_test.rb +70 -0
- data/test/acceptance/parameter_matcher_test.rb +209 -0
- data/test/acceptance/partial_mocks_test.rb +47 -0
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/sequence_test.rb +186 -0
- data/test/acceptance/states_test.rb +70 -0
- data/test/acceptance/stub_any_instance_method_test.rb +195 -0
- data/test/acceptance/stub_class_method_test.rb +203 -0
- data/test/acceptance/stub_everything_test.rb +56 -0
- data/test/acceptance/stub_instance_method_test.rb +203 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/stubba_example_test.rb +102 -0
- data/test/acceptance/stubba_test.rb +15 -0
- data/test/acceptance/stubba_test_result_test.rb +66 -0
- data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/deprecation_disabler.rb +15 -0
- data/test/execution_point.rb +36 -0
- data/test/method_definer.rb +24 -0
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +25 -0
- data/test/test_runner.rb +33 -0
- data/test/unit/any_instance_method_test.rb +126 -0
- data/test/unit/array_inspect_test.rb +16 -0
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +65 -0
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +295 -0
- data/test/unit/configuration_test.rb +38 -0
- data/test/unit/date_time_inspect_test.rb +21 -0
- data/test/unit/exception_raiser_test.rb +42 -0
- data/test/unit/expectation_list_test.rb +57 -0
- data/test/unit/expectation_test.rb +480 -0
- data/test/unit/hash_inspect_test.rb +16 -0
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/metaclass_test.rb +22 -0
- data/test/unit/method_matcher_test.rb +23 -0
- data/test/unit/mock_test.rb +302 -0
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/multiple_yields_test.rb +18 -0
- data/test/unit/no_yields_test.rb +18 -0
- data/test/unit/object_inspect_test.rb +37 -0
- data/test/unit/object_test.rb +82 -0
- data/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
- data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
- data/test/unit/parameter_matchers/has_key_test.rb +55 -0
- data/test/unit/parameter_matchers/has_value_test.rb +57 -0
- data/test/unit/parameter_matchers/includes_test.rb +44 -0
- data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/test/unit/parameter_matchers/is_a_test.rb +25 -0
- data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/test/unit/parameter_matchers/not_test.rb +26 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/parameters_matcher_test.rb +121 -0
- data/test/unit/return_values_test.rb +63 -0
- data/test/unit/sequence_test.rb +104 -0
- data/test/unit/single_return_value_test.rb +14 -0
- data/test/unit/single_yield_test.rb +18 -0
- data/test/unit/state_machine_test.rb +98 -0
- data/test/unit/string_inspect_test.rb +11 -0
- data/test/unit/yield_parameters_test.rb +93 -0
- metadata +240 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'mocha/deprecation'
|
2
|
+
|
3
|
+
module DeprecationDisabler
|
4
|
+
|
5
|
+
def disable_deprecations
|
6
|
+
original_mode = Mocha::Deprecation.mode
|
7
|
+
Mocha::Deprecation.mode = :disabled
|
8
|
+
begin
|
9
|
+
yield
|
10
|
+
ensure
|
11
|
+
Mocha::Deprecation.mode = original_mode
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class ExecutionPoint
|
2
|
+
|
3
|
+
attr_reader :backtrace
|
4
|
+
|
5
|
+
def self.current
|
6
|
+
new(caller)
|
7
|
+
end
|
8
|
+
|
9
|
+
def initialize(backtrace)
|
10
|
+
@backtrace = backtrace
|
11
|
+
end
|
12
|
+
|
13
|
+
def file_name
|
14
|
+
return "unknown" unless @backtrace && @backtrace.first
|
15
|
+
/\A(.*?):\d+/.match(@backtrace.first)[1]
|
16
|
+
end
|
17
|
+
|
18
|
+
def line_number
|
19
|
+
return "unknown" unless @backtrace && @backtrace.first
|
20
|
+
Integer(/\A.*?:(\d+)/.match(@backtrace.first)[1])
|
21
|
+
end
|
22
|
+
|
23
|
+
def ==(other)
|
24
|
+
return false unless other.is_a?(ExecutionPoint)
|
25
|
+
(file_name == other.file_name) and (line_number == other.line_number)
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_s
|
29
|
+
"file: #{file_name}; line: #{line_number}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def inspect
|
33
|
+
to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'mocha/metaclass'
|
2
|
+
|
3
|
+
module Mocha
|
4
|
+
|
5
|
+
module ObjectMethods
|
6
|
+
def define_instance_method(method_symbol, &block)
|
7
|
+
__metaclass__.send(:define_method, method_symbol, block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def replace_instance_method(method_symbol, &block)
|
11
|
+
raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless self.respond_to?(method_symbol)
|
12
|
+
define_instance_method(method_symbol, &block)
|
13
|
+
end
|
14
|
+
|
15
|
+
def define_instance_accessor(*symbols)
|
16
|
+
symbols.each { |symbol| __metaclass__.send(:attr_accessor, symbol) }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
class Object
|
23
|
+
include Mocha::ObjectMethods
|
24
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
unless defined?(STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS)
|
2
|
+
STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS = Object.public_instance_methods
|
3
|
+
end
|
4
|
+
|
5
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
|
6
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
|
7
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit'))
|
8
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit', 'parameter_matchers'))
|
9
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'acceptance'))
|
10
|
+
|
11
|
+
if ENV['MOCHA_OPTIONS'] == 'use_test_unit_gem'
|
12
|
+
gem 'test-unit'
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'test/unit'
|
16
|
+
|
17
|
+
module Kernel
|
18
|
+
private
|
19
|
+
|
20
|
+
# TODO: Currently need to check for existence of the method.
|
21
|
+
# This is probably because the test_helper.rb file isn't required with a consistent path from somewhere.
|
22
|
+
def on_macruby?
|
23
|
+
defined? MACRUBY_VERSION
|
24
|
+
end unless respond_to?(:on_macruby?, true)
|
25
|
+
end
|
data/test/test_runner.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test/unit/testresult'
|
2
|
+
require 'test/unit/testcase'
|
3
|
+
|
4
|
+
module TestRunner
|
5
|
+
|
6
|
+
def run_as_test(test_result = Test::Unit::TestResult.new, &block)
|
7
|
+
test_class = Class.new(Test::Unit::TestCase) do
|
8
|
+
define_method(:test_me, &block)
|
9
|
+
end
|
10
|
+
test = test_class.new(:test_me)
|
11
|
+
test.run(test_result) {}
|
12
|
+
class << test_result
|
13
|
+
attr_reader :failures, :errors
|
14
|
+
def failure_messages
|
15
|
+
failures.map { |failure| failure.message }
|
16
|
+
end
|
17
|
+
def error_messages
|
18
|
+
errors.map { |error| error.message }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
test_result
|
22
|
+
end
|
23
|
+
|
24
|
+
def assert_passed(test_result)
|
25
|
+
flunk "Test failed unexpectedly with message: #{test_result.failures}" if test_result.failure_count > 0
|
26
|
+
flunk "Test failed unexpectedly with message: #{test_result.errors}" if test_result.error_count > 0
|
27
|
+
end
|
28
|
+
|
29
|
+
def assert_failed(test_result)
|
30
|
+
flunk "Test passed unexpectedly" if test_result.passed?
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'method_definer'
|
3
|
+
require 'mocha/mock'
|
4
|
+
require 'mocha/any_instance_method'
|
5
|
+
|
6
|
+
class AnyInstanceMethodTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include Mocha
|
9
|
+
|
10
|
+
def test_should_hide_original_method
|
11
|
+
klass = Class.new { def method_x; end }
|
12
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
13
|
+
hidden_method_x = method.hidden_method.to_sym
|
14
|
+
|
15
|
+
method.hide_original_method
|
16
|
+
|
17
|
+
assert klass.method_defined?(hidden_method_x)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_should_not_hide_original_method_if_it_is_not_defined
|
21
|
+
klass = Class.new
|
22
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
23
|
+
hidden_method_x = method.hidden_method.to_sym
|
24
|
+
|
25
|
+
method.hide_original_method
|
26
|
+
|
27
|
+
assert_equal false, klass.method_defined?(hidden_method_x)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_should_define_a_new_method
|
31
|
+
klass = Class.new { def method_x; end }
|
32
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
33
|
+
mocha = Mock.new
|
34
|
+
mocha.expects(:method_x).with(:param1, :param2).returns(:result)
|
35
|
+
any_instance = Object.new
|
36
|
+
any_instance.define_instance_method(:mocha) { mocha }
|
37
|
+
klass.define_instance_method(:any_instance) { any_instance }
|
38
|
+
|
39
|
+
method.hide_original_method
|
40
|
+
method.define_new_method
|
41
|
+
|
42
|
+
instance = klass.new
|
43
|
+
result = instance.method_x(:param1, :param2)
|
44
|
+
|
45
|
+
assert_equal :result, result
|
46
|
+
assert mocha.__verified__?
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_should_restore_original_method
|
50
|
+
klass = Class.new { def method_x; end }
|
51
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
52
|
+
hidden_method_x = method.hidden_method.to_sym
|
53
|
+
klass.send(:define_method, hidden_method_x, Proc.new { :original_result })
|
54
|
+
|
55
|
+
method.remove_new_method
|
56
|
+
method.restore_original_method
|
57
|
+
|
58
|
+
instance = klass.new
|
59
|
+
assert_equal :original_result, instance.method_x
|
60
|
+
assert !klass.method_defined?(hidden_method_x)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_should_not_restore_original_method_if_hidden_method_not_defined
|
64
|
+
klass = Class.new { def method_x; :new_result; end }
|
65
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
66
|
+
|
67
|
+
method.restore_original_method
|
68
|
+
|
69
|
+
instance = klass.new
|
70
|
+
assert_equal :new_result, instance.method_x
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_should_call_remove_new_method
|
74
|
+
klass = Class.new { def method_x; end }
|
75
|
+
any_instance = Mock.new
|
76
|
+
any_instance.stubs(:reset_mocha)
|
77
|
+
klass.define_instance_method(:any_instance) { any_instance }
|
78
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
79
|
+
method.replace_instance_method(:restore_original_method) { }
|
80
|
+
method.define_instance_accessor(:remove_called)
|
81
|
+
method.replace_instance_method(:remove_new_method) { self.remove_called = true }
|
82
|
+
|
83
|
+
method.unstub
|
84
|
+
|
85
|
+
assert method.remove_called
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_should_call_restore_original_method
|
89
|
+
klass = Class.new { def method_x; end }
|
90
|
+
any_instance = Mock.new
|
91
|
+
any_instance.stubs(:reset_mocha)
|
92
|
+
klass.define_instance_method(:any_instance) { any_instance }
|
93
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
94
|
+
method.replace_instance_method(:remove_new_method) { }
|
95
|
+
method.define_instance_accessor(:restore_called)
|
96
|
+
method.replace_instance_method(:restore_original_method) { self.restore_called = true }
|
97
|
+
|
98
|
+
method.unstub
|
99
|
+
|
100
|
+
assert method.restore_called
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_should_call_reset_mocha
|
104
|
+
klass = Class.new { def method_x; end }
|
105
|
+
any_instance = Class.new { attr_accessor :mocha_was_reset; def reset_mocha; self.mocha_was_reset = true; end }.new
|
106
|
+
klass.define_instance_method(:any_instance) { any_instance }
|
107
|
+
method = AnyInstanceMethod.new(klass, :method_x)
|
108
|
+
method.replace_instance_method(:remove_new_method) { }
|
109
|
+
method.replace_instance_method(:restore_original_method) { }
|
110
|
+
|
111
|
+
method.unstub
|
112
|
+
|
113
|
+
assert any_instance.mocha_was_reset
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_should_return_any_instance_mocha_for_stubbee
|
117
|
+
mocha = Object.new
|
118
|
+
any_instance = Object.new
|
119
|
+
any_instance.define_instance_method(:mocha) { mocha }
|
120
|
+
stubbee = Class.new
|
121
|
+
stubbee.define_instance_method(:any_instance) { any_instance }
|
122
|
+
method = AnyInstanceMethod.new(stubbee, :method_name)
|
123
|
+
assert_equal stubbee.any_instance.mocha, method.mock
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'mocha/inspect'
|
3
|
+
|
4
|
+
class ArrayInspectTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_should_use_inspect
|
7
|
+
array = [1, 2]
|
8
|
+
assert_equal array.inspect, array.mocha_inspect
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_should_use_mocha_inspect_on_each_item
|
12
|
+
array = [1, 2, "chris"]
|
13
|
+
assert_equal "[1, 2, 'chris']", array.mocha_inspect
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'mocha/backtrace_filter'
|
3
|
+
|
4
|
+
class BacktraceFilterTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include Mocha
|
7
|
+
|
8
|
+
def test_should_exclude_mocha_locations_from_backtrace
|
9
|
+
mocha_lib = "/username/workspace/mocha_wibble/lib/"
|
10
|
+
backtrace = [ mocha_lib + 'exclude/me/1', mocha_lib + 'exclude/me/2', '/keep/me', mocha_lib + 'exclude/me/3']
|
11
|
+
filter = BacktraceFilter.new(mocha_lib)
|
12
|
+
assert_equal ['/keep/me'], filter.filtered(backtrace)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_should_determine_path_for_mocha_lib_directory
|
16
|
+
assert_match Regexp.new("/lib/$"), BacktraceFilter::LIB_DIRECTORY
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'mocha/cardinality'
|
3
|
+
|
4
|
+
class CardinalityTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include Mocha
|
7
|
+
|
8
|
+
def test_should_allow_invocations_if_invocation_count_has_not_yet_reached_maximum
|
9
|
+
cardinality = Cardinality.new(2, 3)
|
10
|
+
assert cardinality.invocations_allowed?(0)
|
11
|
+
assert cardinality.invocations_allowed?(1)
|
12
|
+
assert cardinality.invocations_allowed?(2)
|
13
|
+
assert !cardinality.invocations_allowed?(3)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_be_satisfied_if_invocations_so_far_have_reached_required_threshold
|
17
|
+
cardinality = Cardinality.new(2, 3)
|
18
|
+
assert !cardinality.satisfied?(0)
|
19
|
+
assert !cardinality.satisfied?(1)
|
20
|
+
assert cardinality.satisfied?(2)
|
21
|
+
assert cardinality.satisfied?(3)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_describe_cardinality
|
25
|
+
assert_equal 'allowed any number of times', Cardinality.at_least(0).mocha_inspect
|
26
|
+
|
27
|
+
assert_equal 'expected at most once', Cardinality.at_most(1).mocha_inspect
|
28
|
+
assert_equal 'expected at most twice', Cardinality.at_most(2).mocha_inspect
|
29
|
+
assert_equal 'expected at most 3 times', Cardinality.at_most(3).mocha_inspect
|
30
|
+
|
31
|
+
assert_equal 'expected at least once', Cardinality.at_least(1).mocha_inspect
|
32
|
+
assert_equal 'expected at least twice', Cardinality.at_least(2).mocha_inspect
|
33
|
+
assert_equal 'expected at least 3 times', Cardinality.at_least(3).mocha_inspect
|
34
|
+
|
35
|
+
assert_equal 'expected never', Cardinality.exactly(0).mocha_inspect
|
36
|
+
assert_equal 'expected exactly once', Cardinality.exactly(1).mocha_inspect
|
37
|
+
assert_equal 'expected exactly twice', Cardinality.exactly(2).mocha_inspect
|
38
|
+
assert_equal 'expected exactly 3 times', Cardinality.times(3).mocha_inspect
|
39
|
+
|
40
|
+
assert_equal 'expected between 2 and 4 times', Cardinality.times(2..4).mocha_inspect
|
41
|
+
assert_equal 'expected between 1 and 3 times', Cardinality.times(1..3).mocha_inspect
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_should_need_verifying
|
45
|
+
assert Cardinality.exactly(2).needs_verifying?
|
46
|
+
assert Cardinality.at_least(3).needs_verifying?
|
47
|
+
assert Cardinality.at_most(2).needs_verifying?
|
48
|
+
assert Cardinality.times(4).needs_verifying?
|
49
|
+
assert Cardinality.times(2..4).needs_verifying?
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_not_need_verifying
|
53
|
+
assert_equal false, Cardinality.at_least(0).needs_verifying?
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
|
3
|
+
require 'mocha/central'
|
4
|
+
require 'mocha/mock'
|
5
|
+
require 'method_definer'
|
6
|
+
|
7
|
+
class CentralTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Mocha
|
10
|
+
|
11
|
+
def test_should_start_with_empty_stubba_methods
|
12
|
+
stubba = Central.new
|
13
|
+
|
14
|
+
assert_equal [], stubba.stubba_methods
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_stub_method_if_not_already_stubbed
|
18
|
+
method = Mock.new
|
19
|
+
method.expects(:stub)
|
20
|
+
stubba = Central.new
|
21
|
+
|
22
|
+
stubba.stub(method)
|
23
|
+
|
24
|
+
assert method.__verified__?
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_should_not_stub_method_if_already_stubbed
|
28
|
+
method = Mock.new
|
29
|
+
method.expects(:stub).times(0)
|
30
|
+
stubba = Central.new
|
31
|
+
stubba_methods = Mock.new
|
32
|
+
stubba_methods.stubs(:include?).with(method).returns(true)
|
33
|
+
stubba.stubba_methods = stubba_methods
|
34
|
+
|
35
|
+
stubba.stub(method)
|
36
|
+
|
37
|
+
assert method.__verified__?
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_should_record_method
|
41
|
+
method = Mock.new
|
42
|
+
method.expects(:stub)
|
43
|
+
stubba = Central.new
|
44
|
+
|
45
|
+
stubba.stub(method)
|
46
|
+
|
47
|
+
assert_equal [method], stubba.stubba_methods
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_unstub_all_methods
|
51
|
+
stubba = Central.new
|
52
|
+
method_1 = Mock.new
|
53
|
+
method_1.expects(:unstub)
|
54
|
+
method_2 = Mock.new
|
55
|
+
method_2.expects(:unstub)
|
56
|
+
stubba.stubba_methods = [method_1, method_2]
|
57
|
+
|
58
|
+
stubba.unstub_all
|
59
|
+
|
60
|
+
assert_equal [], stubba.stubba_methods
|
61
|
+
assert method_1.__verified__?
|
62
|
+
assert method_2.__verified__?
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|