Project

General

Profile

1 36485 argiro.kok
<?php
2
3
/*
4
 * This file is part of the Predis package.
5
 *
6
 * (c) Daniele Alessandri <suppakilla@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Predis\Command\Processor;
13
14
use PredisTestCase;
15
16
/**
17
 *
18
 */
19
class ProcessorChainTest extends PredisTestCase
20
{
21
    /**
22
     * @group disconnected
23
     */
24
    public function testConstructor()
25
    {
26
        $chain = new ProcessorChain();
27
28
        $this->assertInstanceOf('Predis\Command\Processor\CommandProcessorInterface', $chain);
29
        $this->assertInstanceOf('Predis\Command\Processor\CommandProcessorChainInterface', $chain);
30
        $this->assertEmpty($chain->getProcessors());
31
    }
32
33
    /**
34
     * @group disconnected
35
     */
36
    public function testConstructorWithProcessorsArray()
37
    {
38
        $processors = array(
39
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
40
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
41
        );
42
43
        $chain = new ProcessorChain($processors);
44
45
        $this->assertSame($processors, $chain->getProcessors());
46
    }
47
48
    /**
49
     * @group disconnected
50
     */
51
    public function testCountProcessors()
52
    {
53
        $processors = array(
54
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
55
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
56
        );
57
58
        $chain = new ProcessorChain($processors);
59
60
        $this->assertEquals(2, $chain->count());
61
    }
62
63
    /**
64
     * @group disconnected
65
     */
66
    public function testAddProcessors()
67
    {
68
        $processors = array(
69
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
70
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
71
        );
72
73
        $chain = new ProcessorChain();
74
        $chain->add($processors[0]);
75
        $chain->add($processors[1]);
76
77
        $this->assertSame($processors, $chain->getProcessors());
78
    }
79
80
    /**
81
     * @group disconnected
82
     */
83
    public function testAddMoreProcessors()
84
    {
85
        $processors1 = array(
86
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
87
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
88
        );
89
90
        $processors2 = array(
91
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
92
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
93
        );
94
95
        $chain = new ProcessorChain($processors1);
96
        $chain->add($processors2[0]);
97
        $chain->add($processors2[1]);
98
99
        $this->assertSame(array_merge($processors1, $processors2), $chain->getProcessors());
100
    }
101
102
    /**
103
     * @group disconnected
104
     */
105
    public function testRemoveProcessors()
106
    {
107
        $processors = array(
108
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
109
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
110
        );
111
112
        $chain = new ProcessorChain($processors);
113
114
        $chain->remove($processors[0]);
115
        $this->assertSame(array($processors[1]), $chain->getProcessors());
116
117
        $chain->remove($processors[1]);
118
        $this->assertEmpty($chain->getProcessors());
119
    }
120
121
    /**
122
     * @group disconnected
123
     */
124
    public function testRemoveProcessorNotInChain()
125
    {
126
        $processor = $this->getMock('Predis\Command\Processor\CommandProcessorInterface');
127
        $processors = array(
128
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
129
            $this->getMock('Predis\Command\Processor\CommandProcessorInterface'),
130
        );
131
132
        $chain = new ProcessorChain($processors);
133
        $chain->remove($processor);
134
135
        $this->assertSame($processors, $chain->getProcessors());
136
    }
137
138
    /**
139
     * @group disconnected
140
     */
141
    public function testRemoveProcessorFromEmptyChain()
142
    {
143
        $processor = $this->getMock('Predis\Command\Processor\CommandProcessorInterface');
144
145
        $chain = new ProcessorChain();
146
        $this->assertEmpty($chain->getProcessors());
147
148
        $chain->remove($processor);
149
        $this->assertEmpty($chain->getProcessors());
150
    }
151
152
    /**
153
     * @group disconnected
154
     */
155
    public function testProcessChain()
156
    {
157
        $command = $this->getMock('Predis\Command\CommandInterface');
158
159
        $processor1 = $this->getMock('Predis\Command\Processor\CommandProcessorInterface');
160
        $processor1->expects($this->once())->method('process')->with($command);
161
162
        $processor2 = $this->getMock('Predis\Command\Processor\CommandProcessorInterface');
163
        $processor2->expects($this->once())->method('process')->with($command);
164
165
        $processors = array($processor1, $processor2);
166
167
        $chain = new ProcessorChain($processors);
168
        $chain->process($command);
169
    }
170
}