Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
103 - 1
<?php
2
 
3
/*
4
 * This file is part of the Monolog package.
5
 *
6
 * (c) Jordi Boggiano <j.boggiano@seld.be>
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 Monolog;
13
 
14
class RegistryTest extends \PHPUnit_Framework_TestCase
15
{
16
    protected function setUp()
17
    {
18
        Registry::clear();
19
    }
20
 
21
    /**
22
     * @dataProvider hasLoggerProvider
23
     * @covers Monolog\Registry::hasLogger
24
     */
25
    public function testHasLogger(array $loggersToAdd, array $loggersToCheck, array $expectedResult)
26
    {
27
        foreach ($loggersToAdd as $loggerToAdd) {
28
            Registry::addLogger($loggerToAdd);
29
        }
30
        foreach ($loggersToCheck as $index => $loggerToCheck) {
31
            $this->assertSame($expectedResult[$index], Registry::hasLogger($loggerToCheck));
32
        }
33
    }
34
 
35
    public function hasLoggerProvider()
36
    {
37
        $logger1 = new Logger('test1');
38
        $logger2 = new Logger('test2');
39
        $logger3 = new Logger('test3');
40
 
41
        return array(
42
            // only instances
43
            array(
44
                array($logger1),
45
                array($logger1, $logger2),
46
                array(true, false),
47
            ),
48
            // only names
49
            array(
50
                array($logger1),
51
                array('test1', 'test2'),
52
                array(true, false),
53
            ),
54
            // mixed case
55
            array(
56
                array($logger1, $logger2),
57
                array('test1', $logger2, 'test3', $logger3),
58
                array(true, true, false, false),
59
            ),
60
        );
61
    }
62
 
63
    /**
64
     * @covers Monolog\Registry::clear
65
     */
66
    public function testClearClears()
67
    {
68
        Registry::addLogger(new Logger('test1'), 'log');
69
        Registry::clear();
70
 
71
        $this->setExpectedException('\InvalidArgumentException');
72
        Registry::getInstance('log');
73
    }
74
 
75
    /**
76
     * @dataProvider removedLoggerProvider
77
     * @covers Monolog\Registry::addLogger
78
     * @covers Monolog\Registry::removeLogger
79
     */
80
    public function testRemovesLogger($loggerToAdd, $remove)
81
    {
82
        Registry::addLogger($loggerToAdd);
83
        Registry::removeLogger($remove);
84
 
85
        $this->setExpectedException('\InvalidArgumentException');
86
        Registry::getInstance($loggerToAdd->getName());
87
    }
88
 
89
    public function removedLoggerProvider()
90
    {
91
        $logger1 = new Logger('test1');
92
 
93
        return array(
94
            array($logger1, $logger1),
95
            array($logger1, 'test1'),
96
        );
97
    }
98
 
99
    /**
100
     * @covers Monolog\Registry::addLogger
101
     * @covers Monolog\Registry::getInstance
102
     * @covers Monolog\Registry::__callStatic
103
     */
104
    public function testGetsSameLogger()
105
    {
106
        $logger1 = new Logger('test1');
107
        $logger2 = new Logger('test2');
108
 
109
        Registry::addLogger($logger1, 'test1');
110
        Registry::addLogger($logger2);
111
 
112
        $this->assertSame($logger1, Registry::getInstance('test1'));
113
        $this->assertSame($logger2, Registry::test2());
114
    }
115
 
116
    /**
117
     * @expectedException \InvalidArgumentException
118
     * @covers Monolog\Registry::getInstance
119
     */
120
    public function testFailsOnNonExistantLogger()
121
    {
122
        Registry::getInstance('test1');
123
    }
124
 
125
    /**
126
     * @covers Monolog\Registry::addLogger
127
     */
128
    public function testReplacesLogger()
129
    {
130
        $log1 = new Logger('test1');
131
        $log2 = new Logger('test2');
132
 
133
        Registry::addLogger($log1, 'log');
134
 
135
        Registry::addLogger($log2, 'log', true);
136
 
137
        $this->assertSame($log2, Registry::getInstance('log'));
138
    }
139
 
140
    /**
141
     * @expectedException \InvalidArgumentException
142
     * @covers Monolog\Registry::addLogger
143
     */
144
    public function testFailsOnUnspecifiedReplacement()
145
    {
146
        $log1 = new Logger('test1');
147
        $log2 = new Logger('test2');
148
 
149
        Registry::addLogger($log1, 'log');
150
 
151
        Registry::addLogger($log2, 'log');
152
    }
153
}