1
require File.join(File.dirname(__FILE__), "..", "test_helper")
2
require 'mocha/parameters_matcher'
4
class ParametersMatcherTest < Test::Unit::TestCase
8
def test_should_match_any_actual_parameters_if_no_expected_parameters_specified
9
parameters_matcher = ParametersMatcher.new
10
assert parameters_matcher.match?(actual_parameters = [1, 2, 3])
13
def test_should_match_if_actual_parameters_are_same_as_expected_parameters
14
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
15
assert parameters_matcher.match?(actual_parameters = [4, 5, 6])
18
def test_should_not_match_if_actual_parameters_are_different_from_expected_parameters
19
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
20
assert !parameters_matcher.match?(actual_parameters = [1, 2, 3])
23
def test_should_not_match_if_there_are_less_actual_parameters_than_expected_parameters
24
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, 6])
25
assert !parameters_matcher.match?(actual_parameters = [4, 5])
28
def test_should_not_match_if_there_are_more_actual_parameters_than_expected_parameters
29
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5])
30
assert !parameters_matcher.match?(actual_parameters = [4, 5, 6])
33
def test_should_not_match_if_not_all_required_parameters_are_supplied
34
optionals = ParameterMatchers::Optionally.new(6, 7)
35
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
36
assert !parameters_matcher.match?(actual_parameters = [4])
39
def test_should_match_if_all_required_parameters_match_and_no_optional_parameters_are_supplied
40
optionals = ParameterMatchers::Optionally.new(6, 7)
41
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
42
assert parameters_matcher.match?(actual_parameters = [4, 5])
45
def test_should_match_if_all_required_and_optional_parameters_match_and_some_optional_parameters_are_supplied
46
optionals = ParameterMatchers::Optionally.new(6, 7)
47
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
48
assert parameters_matcher.match?(actual_parameters = [4, 5, 6])
51
def test_should_match_if_all_required_and_optional_parameters_match_and_all_optional_parameters_are_supplied
52
optionals = ParameterMatchers::Optionally.new(6, 7)
53
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
54
assert parameters_matcher.match?(actual_parameters = [4, 5, 6, 7])
57
def test_should_not_match_if_all_required_and_optional_parameters_match_but_too_many_optional_parameters_are_supplied
58
optionals = ParameterMatchers::Optionally.new(6, 7)
59
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
60
assert !parameters_matcher.match?(actual_parameters = [4, 5, 6, 7, 8])
63
def test_should_not_match_if_all_required_parameters_match_but_some_optional_parameters_do_not_match
64
optionals = ParameterMatchers::Optionally.new(6, 7)
65
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
66
assert !parameters_matcher.match?(actual_parameters = [4, 5, 6, 0])
69
def test_should_not_match_if_some_required_parameters_do_not_match_although_all_optional_parameters_do_match
70
optionals = ParameterMatchers::Optionally.new(6, 7)
71
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
72
assert !parameters_matcher.match?(actual_parameters = [4, 0, 6])
75
def test_should_not_match_if_all_required_parameters_match_but_no_optional_parameters_match
76
optionals = ParameterMatchers::Optionally.new(6, 7)
77
parameters_matcher = ParametersMatcher.new(expected_parameters = [4, 5, optionals])
78
assert !parameters_matcher.match?(actual_parameters = [4, 5, 0, 0])
81
def test_should_match_if_actual_parameters_satisfy_matching_block
82
parameters_matcher = ParametersMatcher.new { |x, y| x + y == 3 }
83
assert parameters_matcher.match?(actual_parameters = [1, 2])
86
def test_should_not_match_if_actual_parameters_do_not_satisfy_matching_block
87
parameters_matcher = ParametersMatcher.new { |x, y| x + y == 3 }
88
assert !parameters_matcher.match?(actual_parameters = [2, 3])
91
def test_should_remove_outer_array_braces
92
params = [1, 2, [3, 4]]
93
parameters_matcher = ParametersMatcher.new(params)
94
assert_equal '(1, 2, [3, 4])', parameters_matcher.mocha_inspect
97
def test_should_display_numeric_arguments_as_is
99
parameters_matcher = ParametersMatcher.new(params)
100
assert_equal '(1, 2, 3)', parameters_matcher.mocha_inspect
103
def test_should_remove_curly_braces_if_hash_is_only_argument
104
params = [{:a => 1, :z => 2}]
105
parameters_matcher = ParametersMatcher.new(params)
106
assert_nil parameters_matcher.mocha_inspect.index('{')
107
assert_nil parameters_matcher.mocha_inspect.index('}')
110
def test_should_not_remove_curly_braces_if_hash_is_not_the_only_argument
111
params = [1, {:a => 1}]
112
parameters_matcher = ParametersMatcher.new(params)
113
assert_equal '(1, {:a => 1})', parameters_matcher.mocha_inspect
116
def test_should_indicate_that_matcher_will_match_any_actual_parameters
117
parameters_matcher = ParametersMatcher.new
118
assert_equal '(any_parameters)', parameters_matcher.mocha_inspect
b'\\ No newline at end of file'