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);
+ }
+
}