ArgumentsWildcardSpec.php
5.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
namespace spec\Prophecy\Argument;
use PhpSpec\ObjectBehavior;
use Prophecy\Argument\Token\TokenInterface;
class ArgumentsWildcardSpec extends ObjectBehavior
{
/**
* @param \stdClass $object
*/
function it_wraps_non_token_arguments_into_ExactValueToken($object)
{
$this->beConstructedWith(array(42, 'zet', $object));
$class = get_class($object->getWrappedObject());
$hash = spl_object_hash($object->getWrappedObject());
$this->__toString()->shouldReturn("exact(42), exact(\"zet\"), exact($class:$hash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))");
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token1
* @param \Prophecy\Argument\Token\TokenInterface $token2
* @param \Prophecy\Argument\Token\TokenInterface $token3
*/
function it_generates_string_representation_from_all_tokens_imploded($token1, $token2, $token3)
{
$token1->__toString()->willReturn('token_1');
$token2->__toString()->willReturn('token_2');
$token3->__toString()->willReturn('token_3');
$this->beConstructedWith(array($token1, $token2, $token3));
$this->__toString()->shouldReturn('token_1, token_2, token_3');
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token
*/
function it_exposes_list_of_tokens($token)
{
$this->beConstructedWith(array($token));
$this->getTokens()->shouldReturn(array($token));
}
function it_returns_score_of_1_if_there_are_no_tokens_and_arguments()
{
$this->beConstructedWith(array());
$this->scoreArguments(array())->shouldReturn(1);
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token1
* @param \Prophecy\Argument\Token\TokenInterface $token2
* @param \Prophecy\Argument\Token\TokenInterface $token3
*/
function it_should_return_match_score_based_on_all_tokens_score($token1, $token2, $token3)
{
$token1->scoreArgument('one')->willReturn(3);
$token1->isLast()->willReturn(false);
$token2->scoreArgument(2)->willReturn(5);
$token2->isLast()->willReturn(false);
$token3->scoreArgument($obj = new \stdClass())->willReturn(10);
$token3->isLast()->willReturn(false);
$this->beConstructedWith(array($token1, $token2, $token3));
$this->scoreArguments(array('one', 2, $obj))->shouldReturn(18);
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token1
* @param \Prophecy\Argument\Token\TokenInterface $token2
* @param \Prophecy\Argument\Token\TokenInterface $token3
*/
function it_returns_false_if_there_is_less_arguments_than_tokens($token1, $token2, $token3)
{
$token1->scoreArgument('one')->willReturn(3);
$token1->isLast()->willReturn(false);
$token2->scoreArgument(2)->willReturn(5);
$token2->isLast()->willReturn(false);
$token3->scoreArgument(null)->willReturn(false);
$token3->isLast()->willReturn(false);
$this->beConstructedWith(array($token1, $token2, $token3));
$this->scoreArguments(array('one', 2))->shouldReturn(false);
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token1
* @param \Prophecy\Argument\Token\TokenInterface $token2
* @param \Prophecy\Argument\Token\TokenInterface $token3
*/
function it_returns_false_if_there_is_less_tokens_than_arguments($token1, $token2, $token3)
{
$token1->scoreArgument('one')->willReturn(3);
$token1->isLast()->willReturn(false);
$token2->scoreArgument(2)->willReturn(5);
$token2->isLast()->willReturn(false);
$token3->scoreArgument($obj = new \stdClass())->willReturn(10);
$token3->isLast()->willReturn(false);
$this->beConstructedWith(array($token1, $token2, $token3));
$this->scoreArguments(array('one', 2, $obj, 4))->shouldReturn(false);
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token1
* @param \Prophecy\Argument\Token\TokenInterface $token2
* @param \Prophecy\Argument\Token\TokenInterface $token3
*/
function it_should_return_false_if_one_of_the_tokens_returns_false($token1, $token2, $token3)
{
$token1->scoreArgument('one')->willReturn(3);
$token1->isLast()->willReturn(false);
$token2->scoreArgument(2)->willReturn(false);
$token2->isLast()->willReturn(false);
$token3->scoreArgument($obj = new \stdClass())->willReturn(10);
$token3->isLast()->willReturn(false);
$this->beConstructedWith(array($token1, $token2, $token3));
$this->scoreArguments(array('one', 2, $obj))->shouldReturn(false);
}
/**
* @param \Prophecy\Argument\Token\TokenInterface $token1
* @param \Prophecy\Argument\Token\TokenInterface $token2
* @param \Prophecy\Argument\Token\TokenInterface $token3
*/
function it_should_calculate_score_until_last_token($token1, $token2, $token3)
{
$token1->scoreArgument('one')->willReturn(3);
$token1->isLast()->willReturn(false);
$token2->scoreArgument(2)->willReturn(7);
$token2->isLast()->willReturn(true);
$token3->scoreArgument($obj = new \stdClass())->willReturn(10);
$token3->isLast()->willReturn(false);
$this->beConstructedWith(array($token1, $token2, $token3));
$this->scoreArguments(array('one', 2, $obj))->shouldReturn(10);
}
}