Author: ihabunek
Date: Sat Oct 15 15:38:45 2011
New Revision: 1183662

URL: http://svn.apache.org/viewvc?rev=1183662&view=rev
Log:
Improved tests.

Added:
    logging/log4php/branches/experimental/config-adapters/xsd/
      - copied from r1173517, 
logging/log4php/branches/experimental/config-adapters/src/main/php/xml/
Modified:
    
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php
    
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php
    
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderConsoleTest.php
    
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderFileTest.php
    
logging/log4php/branches/experimental/config-adapters/src/test/php/configurators/config1.ini
    
logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php
    logging/log4php/branches/experimental/config-adapters/xsd/log4php.xsd

Modified: 
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php?rev=1183662&r1=1183661&r2=1183662&view=diff
==============================================================================
--- 
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php
 (original)
+++ 
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php
 Sat Oct 15 15:38:45 2011
@@ -34,7 +34,7 @@
                $this->assertInstanceOf('LoggerAppenderEcho', $appender);
                
                $layout = $appender->getLayout();
-               $this->assertInstanceOf('LoggerLayoutSimple', $layout);
+               $this->assertInstanceOf('LoggerLayoutTTCC', $layout);
                
                $root = Logger::getRootLogger();
                $appenders = $root->getAllAppenders();
@@ -42,8 +42,8 @@
                $this->assertEquals(count($appenders), 1);
                
                $actual = $root->getLevel();
-               $expected = LoggerLevel::getLevelInfo();
-               $this->assertSame($expected, $actual);
+               $expected = LoggerLevel::getLevelDebug();
+               $this->assertEquals($expected, $actual);
        }
        
        /**

Modified: 
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php?rev=1183662&r1=1183661&r2=1183662&view=diff
==============================================================================
--- 
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php
 (original)
+++ 
logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php
 Sat Oct 15 15:38:45 2011
@@ -3,30 +3,40 @@
 /** A set of helper functions for running tests. */
 class LoggerTestHelper {
        
+       /** Returns a test logging event with level set to TRACE. */
        public static function getTraceEvent($message = 'test') {
                return new LoggerLoggingEvent(__CLASS__, new Logger("test"), 
LoggerLevel::getLevelTrace(), $message);
        }
        
+       /** Returns a test logging event with level set to DEBUG. */
        public static function getDebugEvent($message = 'test') {
                return new LoggerLoggingEvent(__CLASS__, new Logger("test"), 
LoggerLevel::getLevelDebug(), $message);
        }
        
+       /** Returns a test logging event with level set to INFO. */
        public static function getInfoEvent($message = 'test') {
                return new LoggerLoggingEvent(__CLASS__, new Logger("test"), 
LoggerLevel::getLevelInfo(), $message);
        }
        
+       /** Returns a test logging event with level set to WARN. */
        public static function getWarnEvent($message = 'test') {
                return new LoggerLoggingEvent(__CLASS__, new Logger("test"), 
LoggerLevel::getLevelWarn(), $message);
        }
        
+       /** Returns a test logging event with level set to ERROR. */
        public static function getErrorEvent($message = 'test') {
                return new LoggerLoggingEvent(__CLASS__, new Logger("test"), 
LoggerLevel::getLevelError(), $message);
        }
        
+       /** Returns a test logging event with level set to FATAL. */
        public static function getFatalEvent($message = 'test') {
                return new LoggerLoggingEvent(__CLASS__, new Logger("test"), 
LoggerLevel::getLevelFatal(), $message);
        }
        
+       /** 
+        * Returns an array of logging events, one for each level, sorted 
ascending
+        * by severitiy. 
+        */
        public static function getAllEvents($message = 'test') {
                return array(
                        self::getTraceEvent($message),
@@ -37,11 +47,46 @@ class LoggerTestHelper {
                        self::getFatalEvent($message),
                );
        }
+       
+       /** Returns an array of all existing levels, sorted ascending by 
severity. */
+       public static function getAllLevels() {
+               return array(
+                       LoggerLevel::getLevelTrace(),
+                       LoggerLevel::getLevelDebug(),
+                       LoggerLevel::getLevelInfo(),
+                       LoggerLevel::getLevelWarn(),
+                       LoggerLevel::getLevelError(),
+                       LoggerLevel::getLevelFatal(),
+               );
+       }
+       
+       /** Returns a string representation of a filter decision. */
+       public static function decisionToString($decision) {
+               switch($decision) {
+                       case LoggerFilter::ACCEPT: return 'ACCEPT';
+                       case LoggerFilter::NEUTRAL: return 'NEUTRAL';
+                       case LoggerFilter::DENY: return 'DENY';
+               }
+       }
+       
+       /** Returns a simple configuration with one echo appender tied to root 
logger. */
+       public static function getEchoConfig() {
+               return array(
+               'threshold' => 'ALL',
+               'rootLogger' => array(
+                   'level' => 'trace',
+                   'appenders' => array('default'),
+                       ),
+               'appenders' => array(
+                   'default' => array(
+                       'class' => 'LoggerAppenderEcho',
+                       'layout' => array(
+                           'class' => 'LoggerLayoutSimple',
+                                       ),
+                               ),
+                       ),
+               );
+       }
 }
 
-
-
-
-
-
 ?>
\ No newline at end of file

Modified: 
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderConsoleTest.php
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderConsoleTest.php?rev=1183662&r1=1183661&r2=1183662&view=diff
==============================================================================
--- 
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderConsoleTest.php
 (original)
+++ 
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderConsoleTest.php
 Sat Oct 15 15:38:45 2011
@@ -41,6 +41,7 @@ class LoggerAppenderConsoleTest extends 
                                'layout' => array(
                                        'class' => 'LoggerLayoutPattern',
                                        'params' => array(
+                                               // Intentionally blank so 
output doesn't clutter phpunit output
                                                'conversionPattern' => '' 
                                        )
                                ),

Modified: 
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderFileTest.php
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderFileTest.php?rev=1183662&r1=1183661&r2=1183662&view=diff
==============================================================================
--- 
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderFileTest.php
 (original)
+++ 
logging/log4php/branches/experimental/config-adapters/src/test/php/appenders/LoggerAppenderFileTest.php
 Sat Oct 15 15:38:45 2011
@@ -47,10 +47,6 @@ class LoggerAppenderFileTest extends PHP
        
        public function __construct() {
                $this->testPath = PHPUNIT_TEMP_DIR . '/TEST.txt';
-               
-               if (is_dir(PHPUNIT_TEMP_DIR)) {
-                       rmdir(PHPUNIT_TEMP_DIR);
-               }
        }
        
        public function setUp() {

Modified: 
logging/log4php/branches/experimental/config-adapters/src/test/php/configurators/config1.ini
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/configurators/config1.ini?rev=1183662&r1=1183661&r2=1183662&view=diff
==============================================================================
--- 
logging/log4php/branches/experimental/config-adapters/src/test/php/configurators/config1.ini
 (original)
+++ 
logging/log4php/branches/experimental/config-adapters/src/test/php/configurators/config1.ini
 Sat Oct 15 15:38:45 2011
@@ -5,7 +5,7 @@ log4php.appender.default.layout = Logger
 
 log4php.appender.file = LoggerAppenderDailyFile
 log4php.appender.file.layout = LoggerLayoutPattern
-log4php.appender.file.layout.conversionPattern =%d{ISO8601} [%p] %c: %m (at %F 
line %L)%n
+log4php.appender.file.layout.conversionPattern = %d{ISO8601} [%p] %c: %m (at 
%F line %L)%n
 log4php.appender.file.datePattern = Ymd
 log4php.appender.file.file = target/examples/daily_%s.log
 log4php.appender.file.threshold = warn

Modified: 
logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php?rev=1183662&r1=1183661&r2=1183662&view=diff
==============================================================================
--- 
logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php
 (original)
+++ 
logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php
 Sat Oct 15 15:38:45 2011
@@ -27,114 +27,98 @@
  * @group filters
  */
 class LoggerFilterLevelMatchTest extends PHPUnit_Framework_TestCase {
-               
-       public function testDecideAcceptErrorLevel() {
+
+       /** 
+        * Tests all possible combinations of event level and filter 
levelToMatch 
+        * option, with acceptOnMatch set to TRUE. 
+        */
+       public function testDecideAccept() {
                $filter = new LoggerFilterLevelMatch();
-               $filter->setAcceptOnMatch(true);
-               $filter->setLevelToMatch(LoggerLevel::getLevelError());
-               
-               $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-               $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
-               $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
-               
-               $result = $filter->decide($eventError);
-               self::assertEquals($result, LoggerFilter::ACCEPT);
+               $filter->setAcceptOnMatch("true");
                
-               $result = $filter->decide($eventDebug);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
+               $levels = LoggerTestHelper::getAllLevels();
+               $events = LoggerTestHelper::getAllEvents();
                
-               $result = $filter->decide($eventWarn);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-       }
-       
-       public function testDecideDenyErrorLevel() {
+               foreach($levels as $level) {
+                       $filter->setLevelToMatch($level);
+                       
+                       foreach($events as $event) {
+                               // Expecting given level to be accepted, 
neutral for others
+                               $expected = ($event->getLevel() == $level) ? 
LoggerFilter::ACCEPT : LoggerFilter::NEUTRAL;
+                               $actual = $filter->decide($event);
+                                       
+                               // Get string represenations for logging
+                               $sExpected = 
LoggerTestHelper::decisionToString($expected);
+                               $sActual = 
LoggerTestHelper::decisionToString($actual);
+                               
+                               $this->assertSame($expected, $actual, "Failed 
asserting filter decision for event level <$level>. Expected <$sExpected>, 
found <$sActual>.");
+                       }
+               }
+       }
+       
+       /**
+        * Tests all possible combinations of event level and filter 
levelToMatch
+        * option, with acceptOnMatch set to TRUE.
+        */
+       public function testDecideDeny() {
                $filter = new LoggerFilterLevelMatch();
                $filter->setAcceptOnMatch("false");
-               $filter->setLevelToMatch(LoggerLevel::getLevelError());
-               
-               $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-               $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
-               $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
-               
-               $result = $filter->decide($eventError);
-               self::assertEquals($result, LoggerFilter::DENY);
-               
-               $result = $filter->decide($eventDebug);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-               
-               $result = $filter->decide($eventWarn);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-       }
        
-       public function testDecideAcceptWarnLevel() {
-               $filter = new LoggerFilterLevelMatch();
-               $filter->setAcceptOnMatch("true");
-               $filter->setLevelToMatch(LoggerLevel::getLevelWarn());
-               
-               $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-               $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
-               $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
-               
-               $result = $filter->decide($eventError);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-               
-               $result = $filter->decide($eventDebug);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-               
-               $result = $filter->decide($eventWarn);
-               self::assertEquals($result, LoggerFilter::ACCEPT);
-       }
+               $levels = LoggerTestHelper::getAllLevels();
+               $events = LoggerTestHelper::getAllEvents();
        
-       public function testDecideDenyWarnLevel() {
-               $filter = new LoggerFilterLevelMatch();
-               $filter->setAcceptOnMatch("false");
-               $filter->setLevelToMatch(LoggerLevel::getLevelWarn());
-               
-               $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-               $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
-               $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
-               
-               $result = $filter->decide($eventError);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-               
-               $result = $filter->decide($eventDebug);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-               
-               $result = $filter->decide($eventWarn);
-               self::assertEquals($result, LoggerFilter::DENY);
+               foreach($levels as $level) {
+                       $filter->setLevelToMatch($level);
+                               
+                       foreach($events as $event) {
+                               // Expecting given level to be denied, neutral 
for others
+                               $expected = ($event->getLevel() == $level) ? 
LoggerFilter::DENY : LoggerFilter::NEUTRAL;
+                               $actual = $filter->decide($event);
+                                       
+                               // Get string represenations for logging
+                               $sExpected = 
LoggerTestHelper::decisionToString($expected);
+                               $sActual = 
LoggerTestHelper::decisionToString($actual);
+       
+                               $this->assertSame($expected, $actual, "Failed 
asserting filter decision for event level <$level>. Expected <$sExpected>, 
found <$sActual>.");
+                       }
+               }
        }
        
-       public function testDecideDenyDebugLevel() {
+       /** Test that filter always decides NEUTRAL when levelToMatch is not 
set. */
+       public function testDecideNull() {
                $filter = new LoggerFilterLevelMatch();
-               $filter->setAcceptOnMatch("false");
-               $filter->setLevelToMatch(LoggerLevel::getLevelDebug());
-               
-               $eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-               $eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
-               $eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", 
new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+               $events = LoggerTestHelper::getAllEvents();
                
-               $result = $filter->decide($eventError);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
+               foreach($events as $event) {
+                       $expected = LoggerFilter::NEUTRAL;
+                       $actual = $filter->decide($event);
+                               
+                       // Get string represenations for logging
+                       $sExpected = 
LoggerTestHelper::decisionToString($expected);
+                       $sActual = LoggerTestHelper::decisionToString($actual);
+                       $level = $event->getLevel();
+                       
+                       $this->assertSame($expected, $actual, "Failed asserting 
filter decision for event level <$level>. Expected <$sExpected>, found 
<$sActual>.");
+               }
+       }
+       
+       /** Test logger configuration. */
+       public function testAcceptConfig() {
+               $config = LoggerTestHelper::getEchoConfig();
                
-               $result = $filter->decide($eventDebug);
-               self::assertEquals($result, LoggerFilter::DENY);
-               
-               $result = $filter->decide($eventWarn);
-               self::assertEquals($result, LoggerFilter::NEUTRAL);
-       }
-       
-       public function testConfiguration() {
-               $config = LoggerConfigurator::getDefaultConfiguration();
-               
-               // Add filters to accept debug and deny all others
+               // Add filters to default appender
                $config['appenders']['default']['filters'] = array(
+                       
+                       // Accepts only INFO events
                        array(
                                'class' => 'LoggerFilterLevelMatch',
                                'params' => array(
-                                       'levelToMatch' => 'error',
+                                       'levelToMatch' => 'info',
                                        'acceptOnMatch' => true
                                )
                        ),
+                       
+                       // Denies all events not accepted by first filter
                        array(
                                'class' => 'LoggerFilterDenyAll',
                        )
@@ -150,13 +134,48 @@ class LoggerFilterLevelMatchTest extends
                $logger->warn('Test');
                $logger->error('Test');
                $logger->fatal('Test');
-               $actual = ob_get_clean();
                
-               var_dump($actual);
+               $actual = ob_get_clean();
+
                
-               $this->assertEmpty($actual);
+               $expected = "INFO - Test" . PHP_EOL;
        }
        
+       public function testDenyConfig() {
+               $config = LoggerTestHelper::getEchoConfig();
+       
+               // Add filter which denies INFO events
+               $config['appenders']['default']['filters'] = array(
+                       array(
+                               'class' => 'LoggerFilterLevelMatch',
+                               'params' => array(
+                                       'levelToMatch' => 'info',
+                                       'acceptOnMatch' => false
+                               )
+                       )
+               );
+                       
+               Logger::configure($config);
+               $logger = Logger::getRootLogger();
+                       
+               ob_start();
+               $logger->trace('Test');
+               $logger->debug('Test');
+               $logger->info('Test');
+               $logger->warn('Test');
+               $logger->error('Test');
+               $logger->fatal('Test');
        
+               $actual = ob_get_clean();
+               
+               // Should log all except info
+               $expected = 
+                       "TRACE - Test" . PHP_EOL . 
+                       "DEBUG - Test" . PHP_EOL . 
+                       "WARN - Test"  . PHP_EOL . 
+                       "ERROR - Test" . PHP_EOL . 
+                       "FATAL - Test" . PHP_EOL;       
        
+               $this->assertSame($expected, $actual);
+       }
 }

Modified: logging/log4php/branches/experimental/config-adapters/xsd/log4php.xsd
URL: 
http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/xsd/log4php.xsd?rev=1183662&r1=1173517&r2=1183662&view=diff
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/xsd/log4php.xsd 
(original)
+++ logging/log4php/branches/experimental/config-adapters/xsd/log4php.xsd Sat 
Oct 15 15:38:45 2011
@@ -1,9 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ 
+         http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
        elementFormDefault="unqualified" 
        targetNamespace="http://logging.apache.org/log4php";
        xmlns="http://logging.apache.org/log4php";>
        
+       <!-- ============================================== -->
+       <!--               Configuration                    -->
+       <!-- ============================================== -->
+
        <xs:element name="configuration">
                <xs:annotation>
                        <xs:documentation>
@@ -44,6 +64,11 @@
                </xs:complexType>
        </xs:element>
        <xs:element name="appender">
+               <xs:annotation>
+                       <xs:documentation>
+                               Defines an appender.
+                       </xs:documentation>
+               </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element minOccurs="0" ref="layout" />
@@ -56,6 +81,11 @@
                </xs:complexType>
        </xs:element>
        <xs:element name="layout">
+               <xs:annotation>
+                       <xs:documentation>
+                               Defines a layout.
+                       </xs:documentation>
+               </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="param" />
@@ -64,6 +94,11 @@
                </xs:complexType>
        </xs:element>
        <xs:element name="filter">
+               <xs:annotation>
+                       <xs:documentation>
+                               Defines a filter.
+                       </xs:documentation>
+               </xs:annotation>
                <xs:complexType>
                        <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" 
ref="param" />
@@ -114,6 +149,11 @@
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
+       
+       <!-- ============================================== -->
+       <!--                   Events                       -->
+       <!-- ============================================== -->
+       
        <xs:element name="eventSet">
                <xs:complexType>
                        <xs:sequence>
@@ -137,6 +177,7 @@
                        </xs:attribute>
                </xs:complexType>
        </xs:element>
+       
        <xs:element name="event">
                <xs:complexType>
                        <xs:sequence>


Reply via email to