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,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
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
|
2
|
+
|
3
|
+
require 'mocha/parameter_matchers/has_entries'
|
4
|
+
require 'mocha/parameter_matchers/object'
|
5
|
+
require 'mocha/inspect'
|
6
|
+
|
7
|
+
class HasEntriesTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Mocha::ParameterMatchers
|
10
|
+
|
11
|
+
def test_should_match_hash_including_specified_entries
|
12
|
+
matcher = has_entries(:key_1 => 'value_1', :key_2 => 'value_2')
|
13
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_not_match_hash_not_including_specified_entries
|
17
|
+
matcher = has_entries(:key_1 => 'value_2', :key_2 => 'value_2', :key_3 => 'value_3')
|
18
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_should_describe_matcher
|
22
|
+
matcher = has_entries(:key_1 => 'value_1', :key_2 => 'value_2')
|
23
|
+
description = matcher.mocha_inspect
|
24
|
+
matches = /has_entries\((.*)\)/.match(description)
|
25
|
+
assert_not_nil matches[0]
|
26
|
+
entries = eval(matches[1], binding, __FILE__, __LINE__)
|
27
|
+
assert_equal 'value_1', entries[:key_1]
|
28
|
+
assert_equal 'value_2', entries[:key_2]
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_should_match_hash_including_specified_entries_with_nested_key_matchers
|
32
|
+
matcher = has_entries(equals(:key_1) => 'value_1', equals(:key_2) => 'value_2')
|
33
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_not_match_hash_not_including_specified_entries_with_nested_key_matchers
|
37
|
+
matcher = has_entries(equals(:key_1) => 'value_2', equals(:key_2) => 'value_2', equals(:key_3) => 'value_3')
|
38
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_should_match_hash_including_specified_entries_with_nested_value_matchers
|
42
|
+
matcher = has_entries(:key_1 => equals('value_1'), :key_2 => equals('value_2'))
|
43
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_not_match_hash_not_including_specified_entries_with_nested_value_matchers
|
47
|
+
matcher = has_entries(:key_1 => equals('value_2'), :key_2 => equals('value_2'), :key_3 => equals('value_3'))
|
48
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
|
2
|
+
|
3
|
+
require 'mocha/parameter_matchers/has_entry'
|
4
|
+
require 'mocha/parameter_matchers/object'
|
5
|
+
require 'mocha/parameter_matchers/equals'
|
6
|
+
require 'mocha/inspect'
|
7
|
+
|
8
|
+
class HasEntryTest < Test::Unit::TestCase
|
9
|
+
|
10
|
+
include Mocha::ParameterMatchers
|
11
|
+
|
12
|
+
def test_should_match_hash_including_specified_key_value_pair
|
13
|
+
matcher = has_entry(:key_1, 'value_1')
|
14
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_not_match_hash_not_including_specified_key_value_pair
|
18
|
+
matcher = has_entry(:key_1, 'value_2')
|
19
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_should_match_hash_including_specified_entry
|
23
|
+
matcher = has_entry(:key_1 => 'value_1')
|
24
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_should_not_match_hash_not_including_specified_entry
|
28
|
+
matcher = has_entry(:key_1 => 'value_2')
|
29
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_should_describe_matcher_with_key_value_pair
|
33
|
+
matcher = has_entry(:key_1, 'value_1')
|
34
|
+
assert_equal "has_entry(:key_1 => 'value_1')", matcher.mocha_inspect
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_should_describe_matcher_with_entry
|
38
|
+
matcher = has_entry(:key_1 => 'value_1')
|
39
|
+
assert_equal "has_entry(:key_1 => 'value_1')", matcher.mocha_inspect
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_match_hash_including_specified_entry_with_nested_key_matcher
|
43
|
+
matcher = has_entry(equals(:key_1) => 'value_1')
|
44
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_should_match_hash_including_specified_entry_with_nested_value_matcher
|
48
|
+
matcher = has_entry(:key_1 => equals('value_1'))
|
49
|
+
assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_not_match_hash_not_including_specified_entry_with_nested_key_matcher
|
53
|
+
matcher = has_entry(equals(:key_1) => 'value_2')
|
54
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_should_not_match_hash_not_including_specified_entry_with_nested_value_matcher
|
58
|
+
matcher = has_entry(:key_1 => equals('value_2'))
|
59
|
+
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_should_not_match_object_that_doesnt_respond_to_keys
|
63
|
+
matcher = has_entry(:key_1 => equals('value_2'))
|
64
|
+
object = Class.new do
|
65
|
+
def [](key)
|
66
|
+
'value_2'
|
67
|
+
end
|
68
|
+
end.new
|
69
|
+
assert !matcher.matches?([object])
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_should_not_match_object_that_doesnt_respond_to_square_bracket
|
73
|
+
matcher = has_entry(:key_1 => equals('value_2'))
|
74
|
+
object = Class.new do
|
75
|
+
def keys
|
76
|
+
[:key_1]
|
77
|
+
end
|
78
|
+
end.new
|
79
|
+
assert !matcher.matches?([object])
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "test_helper")
|
2
|
+
|
3
|
+
require 'mocha/parameter_matchers/has_key'
|
4
|
+
require 'mocha/parameter_matchers/object'
|
5
|
+
require 'mocha/inspect'
|
6
|
+
|
7
|
+
class HasKeyTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Mocha::ParameterMatchers
|
10
|
+
|
11
|
+
def test_should_match_hash_including_specified_key
|
12
|
+
matcher = has_key(:key_1)
|
13
|
+
assert matcher.matches?([{ :key_1 => 1, :key_2 => 2 }])
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_not_match_hash_not_including_specified_key
|
17
|
+
matcher = has_key(:key_1)
|
18
|
+
assert !matcher.matches?([{ :key_2 => 2 }])
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_should_describe_matcher
|
22
|
+
matcher = has_key(:key)
|
23
|
+
assert_equal 'has_key(:key)', matcher.mocha_inspect
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_match_hash_including_specified_key_with_nested_key_matcher
|
27
|
+
matcher = has_key(equals(:key_1))
|
28
|
+
assert matcher.matches?([{ :key_1 => 1, :key_2 => 2 }])
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_should_not_match_hash_not_including_specified_key_with_nested_key_matcher
|
32
|
+
matcher = has_key(equals(:key_1))
|
33
|
+
assert !matcher.matches?([{ :key_2 => 2 }])
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_not_raise_error_on_empty_arguments
|
37
|
+
matcher = has_key(:key)
|
38
|
+
assert_nothing_raised { matcher.matches?([]) }
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_should_not_match_on_empty_arguments
|
42
|
+
matcher = has_key(:key)
|
43
|
+
assert !matcher.matches?([])
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_not_raise_error_on_argument_that_does_not_respond_to_keys
|
47
|
+
matcher = has_key(:key)
|
48
|
+
assert_nothing_raised { matcher.matches?([:key]) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_should_not_match_on_argument_that_does_not_respond_to_keys
|
52
|
+
matcher = has_key(:key)
|
53
|
+
assert !matcher.matches?([:key])
|
54
|
+
end
|
55
|
+
end
|