/var/www/hkosl.com/imusiccircle/webadmin/libraies/php-console/php-console/tests/Test/Dispatcher/Errors.php


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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php

namespace PhpConsole\Test;

class 
Dispatcher_Errors extends Dispatcher {

    
/** @var  \PhpConsole\Dispatcher\Errors */
    
protected $dispatcher;

    protected function 
initDispatcher(\PhpConsole\Connector $connector) {
        return new \
PhpConsole\Dispatcher\Errors($connector, new \PhpConsole\Dumper());
    }

    public function 
testDispatchErrorMessageData() {
        
$test $this;
        
$this->connector->expects($this->once())
            ->
method('sendMessage')
            ->
with($this->callback(function (\PhpConsole\ErrorMessage $message) use ($test) {
                
$test->assertContainsRecursive(array(
                    
'type' => 'error',
                    
'code' => E_WARNING,
                    
'class' => 'E_WARNING',
                    
'data' => 'error_text',
                    
'file' => __FILE__,
                    
'line' => 100,
                ), 
$message);
                return 
true;
            }));
        
$this->dispatcher->dispatchError(E_WARNING'error_text'__FILE__100);
    }

    public function 
testDispatchErrorMessageIsDumped() {
        
$test $this;
        
$this->connector->expects($this->once())
            ->
method('sendMessage')
            ->
with($this->callback(function (\PhpConsole\ErrorMessage $message) use ($test) {
                
$test->assertEquals('123456...'$message->data);
                return 
true;
            }));
        
$this->dispatcher->setDumper(new \PhpConsole\Dumper(119));
        
$this->dispatcher->dispatchError(null1234567890);
    }

    public function 
testDispatchErrorActualTrace() {
        
$test $this;
        
$this->connector->expects($this->once())
            ->
method('sendMessage')
            ->
with($this->callback(function (\PhpConsole\ErrorMessage $message) use ($test) {
                
$lastCall end($message->trace);
                
$test->assertContains(__CLASS__$lastCall->call);
                
$test->assertContains($test->getName(), $lastCall->call);
                return 
true;
            }));
        
$this->dispatcher->dispatchError();
    }

    public function 
testDispatchExceptionMessageData() {
        
$test $this;
        
$exception = new \Exception('exception_test'100);
        
$this->connector->expects($this->once())
            ->
method('sendMessage')
            ->
with($this->callback(function (\PhpConsole\ErrorMessage $message) use ($test$exception) {
                
$test->assertContainsRecursive(array(
                    
'type' => 'error',
                    
'code' => $exception->getCode(),
                    
'class' => get_class($exception),
                    
'data' => $exception->getMessage(),
                    
'file' => $exception->getFile(),
                    
'line' => $exception->getLine(),
                ), 
$message);
                return 
true;
            }));
        
$this->dispatcher->dispatchException($exception);
    }

    public function 
testDispatchExceptionMessageIsDumped() {
        
$test $this;
        
$this->connector->expects($this->once())
            ->
method('sendMessage')
            ->
with($this->callback(function (\PhpConsole\ErrorMessage $message) use ($test) {
                
$test->assertEquals('123456...'$message->data);
                return 
true;
            }));
        
$this->dispatcher->setDumper(new \PhpConsole\Dumper(119));
        
$this->dispatcher->dispatchException(new \Exception(1234567890));
    }

    public function 
testDispatchExceptionActualTrace() {
        
$test $this;
        
$exception = new \Exception();
        
$this->connector->expects($this->once())
            ->
method('sendMessage')
            ->
with($this->callback(function (\PhpConsole\ErrorMessage $message) use ($test) {
                
$lastCall end($message->trace);
                
$test->assertContains(__CLASS__$lastCall->call);
                
$test->assertContains($test->getName(), $lastCall->call);
                return 
true;
            }));
        
$this->dispatcher->dispatchException($exception);
    }

    public function 
testDispatchPreviousExceptions() {
        
$this->connector->expects($this->exactly(3))->method('sendMessage');
        
$this->dispatcher->dispatchException(new \Exception(null0,
            new \
Exception(null0,
                new \
Exception())));
    }

    public function 
testDisableDispatchPreviousExceptions() {
        
$this->connector->expects($this->once())->method('sendMessage');
        
$this->dispatcher->dispatchPreviousExceptions false;
        
$this->dispatcher->dispatchException(new \Exception(null0,
            new \
Exception(null0,
                new \
Exception())));
    }

    public function 
testDispatchErrorIgnoreRepeatedSource() {
        
$this->connector->expects($this->once())->method('sendMessage');
        
$this->dispatcher->dispatchError(nullnull__FILE__100);
        
$this->dispatcher->dispatchError(nullnull__FILE__100);
    }

    public function 
testDispatchErrorNotIgnoreRepeatedSourceDifferentClass() {
        
$this->connector->expects($this->exactly(2))->method('sendMessage');
        
$this->dispatcher->dispatchError(E_WARNINGnull__FILE__100);
        
$this->dispatcher->dispatchError(E_NOTICEnull__FILE__100);
    }

    public function 
testDispatchErrorWithDisabledIgnoreRepeatedSource() {
        
$this->dispatcher->ignoreRepeatedSource false;
        
$this->connector->expects($this->exactly(2))->method('sendMessage');
        
$this->dispatcher->dispatchError(nullnull__FILE__100);
        
$this->dispatcher->dispatchError(nullnull__FILE__100);
    }

    public function 
testDispatchExceptionIgnoreRepeatedSource() {
        
$this->connector->expects($this->once())->method('sendMessage');
        
$exception = new \Exception();
        
$this->dispatcher->dispatchException($exception);
        
$this->dispatcher->dispatchException($exception);
    }

    public function 
testDispatchExceptionNotIgnoreRepeatedSourceDifferentClass() {
        
$this->connector->expects($this->exactly(2))->method('sendMessage');
        
$exception1 = new \Exception(''0$exception2 = new Dispatcher_ErrorsDraftException());
        
$this->dispatcher->dispatchException($exception1);
        
$this->dispatcher->dispatchException($exception2);
    }

    public function 
testDispatchExceptionWithDisabledIgnoreRepeatedSource() {
        
$this->dispatcher->ignoreRepeatedSource false;
        
$this->connector->expects($this->exactly(2))->method('sendMessage');
        
$exception = new \Exception();
        
$this->dispatcher->dispatchException($exception);
        
$this->dispatcher->dispatchException($exception);
    }
}

class 
Dispatcher_ErrorsDraftException extends \Exception {

}