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 12namespace Monolog; 13 14class 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} 154