Author: grobmeier
Date: Mon Mar 22 06:40:47 2010
New Revision: 925975

URL: http://svn.apache.org/viewvc?rev=925975&view=rev
Log:
Added patch from Ivan Habunek: new testcases for LoggerLayoutPattern

Modified:
    incubator/log4php/trunk/src/changes/changes.xml
    incubator/log4php/trunk/src/test/php/layouts/LoggerLayoutPatternTest.php

Modified: incubator/log4php/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/changes/changes.xml?rev=925975&r1=925974&r2=925975&view=diff
==============================================================================
--- incubator/log4php/trunk/src/changes/changes.xml (original)
+++ incubator/log4php/trunk/src/changes/changes.xml Mon Mar 22 06:40:47 2010
@@ -24,6 +24,7 @@
   </properties>
   <body>
        <release version="2.1" description="Stabilizing">
+               <action type="update" by="Ivan Habunek">Included new 
LoggerLayoutPattern tests</action>
                <action type="fix" issue="LOG4PHP-103" by="Moritz 
Schmidt">Exception when using more than one LoggerAppenderFile</action>
                <action type="fix" issue="LOG4PHP-102" by="Ivan 
Habunek">LoggerLayoutPattern fails tests</action>
                <action type="update" issue="LOG4PHP-100" by="Moritz 
Schmidt">Directly assign an array on Logger PHP configuration</action>

Modified: 
incubator/log4php/trunk/src/test/php/layouts/LoggerLayoutPatternTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/layouts/LoggerLayoutPatternTest.php?rev=925975&r1=925974&r2=925975&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/layouts/LoggerLayoutPatternTest.php 
(original)
+++ incubator/log4php/trunk/src/test/php/layouts/LoggerLayoutPatternTest.php 
Mon Mar 22 06:40:47 2010
@@ -23,28 +23,74 @@
  * @link       http://logging.apache.org/log4php
  */
 
-// TODO: Should also test complex patterns like: "%d{Y-m-d H:i:s} %-5p %c 
%X{username}: %m in %F at %L%n"
 class LoggerLayoutPatternTest extends PHPUnit_Framework_TestCase {
-        
+
+       /** Pattern used for testing. */
+       private $pattern = "%d{Y-m-d H:i:s.u} %-5p %c (%C): %m in %F at %L%n";
+       
        public function testErrorLayout() {
                $event = new LoggerLoggingEvent("LoggerLayoutXml", new 
Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
 
-               $layout = new LoggerLayoutPattern();
-               $layout->setConversionPattern("%-5p %c %X{username}: %m in %F 
at %L%n");
-               $v = $layout->format($event);
-               $e = 'ERROR TEST : testmessage in NA at NA'.PHP_EOL;
-
+               $v = $this->formatEvent($event, $this->pattern);
+               $dt = $this->getEventDateTime($event);
+               $e = "$dt ERROR TEST (LoggerLayoutXml): testmessage in NA at 
NA".PHP_EOL;
                self::assertEquals($v, $e);
     }
     
     public function testWarnLayout() {
                $event = new LoggerLoggingEvent("LoggerLayoutXml", new 
Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
 
-               $layout = new LoggerLayoutPattern();
-               $layout->setConversionPattern("%-5p %c %X{username}: %m in %F 
at %L%n");
-               $v = $layout->format($event);
-               $e = 'WARN  TEST : testmessage in NA at NA'.PHP_EOL;
+               $v = $this->formatEvent($event, $this->pattern);
+               $dt = $this->getEventDateTime($event);
+               $e = "$dt WARN  TEST (LoggerLayoutXml): testmessage in NA at 
NA".PHP_EOL;
+               self::assertEquals($v, $e);
+    }
+    
+    public function testInfoLayout() {
+               $event = new LoggerLoggingEvent("LoggerLayoutXml", new 
Logger("TEST"), LoggerLevel::getLevelInfo(), "testmessage");
+
+               $v = $this->formatEvent($event, $this->pattern);
+               $dt = $this->getEventDateTime($event);
+               $e = "$dt INFO  TEST (LoggerLayoutXml): testmessage in NA at 
NA".PHP_EOL;
+               self::assertEquals($v, $e);
+    }
+    
+    public function testDebugLayout() {
+               $event = new LoggerLoggingEvent("LoggerLayoutXml", new 
Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
+
+               $v = $this->formatEvent($event, $this->pattern);
+               $dt = $this->getEventDateTime($event);
+               $e = "$dt DEBUG TEST (LoggerLayoutXml): testmessage in NA at 
NA".PHP_EOL;
+               self::assertEquals($v, $e);
+    }
+    
+    public function testTraceLayout() {
+               $event = new LoggerLoggingEvent("LoggerLayoutXml", new 
Logger("TEST"), LoggerLevel::getLevelTrace(), "testmessage");
                
+               $v = $this->formatEvent($event, $this->pattern);
+               $dt = $this->getEventDateTime($event);
+               $e = "$dt TRACE TEST (LoggerLayoutXml): testmessage in NA at 
NA".PHP_EOL;
                self::assertEquals($v, $e);
     }
+    
+    /** 
+     *  Returns the datetime of an event in "Y-m-d H:i:s.u" format. This is 
required because
+     *  the PHP date() function does not handle the microseconds on windows 
(returns zeros).  
+     *  
+     *  @see http://www.php.net/manual/en/function.date.php#93752
+     */
+    private function getEventDateTime($event) {
+       
+               $ts = $event->getTimeStamp();
+               $micros = round(($ts - floor($ts)) * 1000); // microseconds to 
3 decimal places
+               $micros = str_pad($micros, 3, '0', STR_PAD_LEFT);
+               return date('Y-m-d H:i:s', $ts).".$micros";
+    }
+    
+       private function formatEvent($event, $pattern) {
+               $layout = new LoggerLayoutPattern();
+               $layout->setConversionPattern($pattern);
+               return $layout->format($event);
+       }
+    
 }


Reply via email to