暫無描述

RegistryTest.php 3.9KB

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