blob: f3f2c1c17c26a191519ac59b745d2eab541718fa [file] [log] [blame]
<?php
/**
* 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.
*
* @category tests
* @package log4php
* @subpackage renderers
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version $Revision$
* @link http://logging.apache.org/log4php
*/
class CostumObjectRenderer implements LoggerRenderer {
public function render($o) {
return true;
}
}
class Fruit3 {
public $test1 = 'test1';
public $test2 = 'test2';
public $test3 = 'test3';
}
class Fruit3Descendant extends Fruit3 {
}
class FruitRenderer3 implements LoggerRenderer {
public function render($o) {
return $o->test1.','.$o->test2.','.$o->test3;
}
}
class SampleObject {
}
/**
* @group renderers
*/
class LoggerRendererMapTest extends PHPUnit_Framework_TestCase {
public function testFindAndRender() {
$fruit = new Fruit3();
Logger::configure(dirname(__FILE__).'/test4.properties');
$hierarchy = Logger::getHierarchy();
$map = $hierarchy->getRendererMap();
$e = $map->findAndRender($fruit);
self::assertEquals('test1,test2,test3', $e);
}
public function testFindAndRenderDescendants() {
$fruit = new Fruit3Descendant();
Logger::configure(dirname(__FILE__).'/test4.properties');
$hierarchy = Logger::getHierarchy();
$map = $hierarchy->getRendererMap();
$e = $map->findAndRender($fruit);
self::assertEquals('test1,test2,test3', $e);
}
public function testGetByObject() {
$fruit = new Fruit3();
Logger::configure(dirname(__FILE__).'/test4.properties');
$hierarchy = Logger::getHierarchy();
$map = $hierarchy->getRendererMap();
$e = $map->getByObject($fruit);
self::assertTrue($e instanceof FruitRenderer3);
}
public function testGetByClassName() {
Logger::configure(dirname(__FILE__).'/test4.properties');
$hierarchy = Logger::getHierarchy();
$map = $hierarchy->getRendererMap();
$e = $map->getByClassName('Fruit3');
self::assertTrue($e instanceof FruitRenderer3);
}
public function testUsage() {
Logger::resetConfiguration();
Logger::configure(dirname(__FILE__).'/test4.properties');
$logger = Logger::getRootLogger();
ob_start();
$logger->warn(new Fruit3());
$actual = ob_get_contents();
ob_end_clean();
$expected = "WARN - test1,test2,test3" . PHP_EOL;
self::assertEquals($expected, $actual);
}
public function testGetByObject_CostumRendererShouldRenderObject() {
$sampleObject = new SampleObject();
Logger::configure(dirname(__FILE__).'/test4.properties');
$hierarchy = Logger::getHierarchy();
$map = $hierarchy->getRendererMap();
$map->setDefaultObjectRenderer(new CostumObjectRenderer());
$actual = $map->findAndRender($sampleObject);
$this->assertTrue($actual, 'costumobjectrenderer was rendered object');
}
}