test_logger.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. require_once 'logger.php';
  3. use WebBasics\Logger;
  4. define('NAME', 'Testlogger');
  5. define('FORMAT', '%(level): %(message)');
  6. define('LOGFILE', 'build/temp.log');
  7. class LoggerTest extends PHPUnit_Extensions_OutputTestCase {
  8. function setUp() {
  9. $this->logger = new Logger();
  10. $this->logger->set_property('name', NAME);
  11. $this->logger->set_format(FORMAT);
  12. }
  13. function assert_dumps($expected) {
  14. $this->assertEquals($this->logger->dumps(), $expected);
  15. }
  16. function test_get_format() {
  17. $this->assertEquals($this->logger->get_format(), FORMAT);
  18. }
  19. function test_get_level() {
  20. $this->assertEquals($this->logger->get_level(), Logger::WARNING);
  21. $this->assertEquals($this->logger->get_level_name(), 'WARNING');
  22. }
  23. /**
  24. * @depends test_get_level
  25. */
  26. function test_set_level() {
  27. $this->logger->set_level('info');
  28. $this->assertEquals($this->logger->get_level(), Logger::INFO);
  29. $this->logger->set_level('DEBUG');
  30. $this->assertEquals($this->logger->get_level(), Logger::DEBUG);
  31. $this->logger->set_level('WaRnInG');
  32. $this->assertEquals($this->logger->get_level(), Logger::WARNING);
  33. $this->logger->set_level(Logger::ERROR);
  34. $this->assertEquals($this->logger->get_level(), Logger::ERROR);
  35. }
  36. function test_format() {
  37. $this->logger->error('test message');
  38. $this->assert_dumps('ERROR: test message');
  39. }
  40. function test_set_property() {
  41. $this->logger->set_property('name', 'Logger');
  42. $this->assertEquals($this->logger->get_formatted_property('name'), 'Logger');
  43. }
  44. /**
  45. * @depends test_format
  46. */
  47. function test_clear() {
  48. $this->logger->warning('test message');
  49. $this->logger->clear();
  50. $this->assert_dumps('');
  51. }
  52. /**
  53. * @depends test_set_level
  54. * @depends test_clear
  55. */
  56. function test_process_level() {
  57. $this->logger->info('test message');
  58. $this->assert_dumps('');
  59. $this->logger->warning('test message');
  60. $this->assert_dumps('WARNING: test message');
  61. $this->logger->critical('test message');
  62. $this->assert_dumps("WARNING: test message\nCRITICAL: test message");
  63. $this->logger->clear();
  64. $this->logger->set_level('debug');
  65. $this->logger->debug('test message');
  66. $this->assert_dumps('DEBUG: test message');
  67. }
  68. function test_get_formatted_property() {
  69. $this->assertEquals($this->logger->get_formatted_property('name'), NAME);
  70. $this->assertEquals($this->logger->get_formatted_property('loglevel'), 'WARNING');
  71. $this->assertRegExp('/^\d{2}-\d{2}-\d{4}$/',
  72. $this->logger->get_formatted_property('date'));
  73. $this->assertRegExp('/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}$/',
  74. $this->logger->get_formatted_property('datetime'));
  75. $this->assertRegExp('/^\d{2}:\d{2}:\d{2}$/',
  76. $this->logger->get_formatted_property('time'));
  77. $this->setExpectedException('\InvalidArgumentException');
  78. $this->logger->get_formatted_property('foo');
  79. }
  80. function test_dumps_property_format() {
  81. $this->logger->warning('test message');
  82. $this->logger->set_format('%(name): %(level): %(message)');
  83. $this->assert_dumps(NAME.': WARNING: test message');
  84. }
  85. /**
  86. * @depends test_process_level
  87. */
  88. function test_dump() {
  89. $this->logger->warning('test message');
  90. $this->expectOutputString('WARNING: test message');
  91. $this->logger->dump();
  92. }
  93. function test_handle_exception() {
  94. $this->logger->handle_exception(new Exception('test message'));
  95. $this->assertNotEquals($this->logger->dumps(), '');
  96. }
  97. function test_save() {
  98. $this->logger->warning('test message');
  99. $this->logger->save(LOGFILE);
  100. $this->assertStringEqualsFile(LOGFILE, 'WARNING: test message');
  101. $this->logger->warning('another test message');
  102. $this->logger->save(LOGFILE);
  103. $this->assertStringEqualsFile(LOGFILE, "WARNING: test message\nWARNING: another test message");
  104. file_exists(LOGFILE) && unlink(LOGFILE);
  105. }
  106. }
  107. ?>