Вход Регистрация
Файл: sngine-v2.8/Script/includes/libs/PayPal/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
Строк: 134
<?php

namespace PsrLogTest;

use 
PsrLogLoggerInterface;
use 
PsrLogLogLevel;

/**
 * Provides a base test class for ensuring compliance with the LoggerInterface.
 *
 * Implementors can extend the class and implement abstract methods to run this
 * as part of their test suite.
 */
abstract class LoggerInterfaceTest extends PHPUnit_Framework_TestCase
{
    
/**
     * @return LoggerInterface
     */
    
abstract public function getLogger();

    
/**
     * This must return the log messages in order.
     *
     * The simple formatting of the messages is: "<LOG LEVEL> <MESSAGE>".
     *
     * Example ->error('Foo') would yield "error Foo".
     *
     * @return string[]
     */
    
abstract public function getLogs();

    public function 
testImplements()
    {
        
$this->assertInstanceOf('PsrLogLoggerInterface'$this->getLogger());
    }

    
/**
     * @dataProvider provideLevelsAndMessages
     */
    
public function testLogsAtAllLevels($level$message)
    {
        
$logger $this->getLogger();
        
$logger->{$level}($message, array('user' => 'Bob'));
        
$logger->log($level$message, array('user' => 'Bob'));

        
$expected = array(
            
$level.' message of level '.$level.' with context: Bob',
            
$level.' message of level '.$level.' with context: Bob',
        );
        
$this->assertEquals($expected$this->getLogs());
    }

    public function 
provideLevelsAndMessages()
    {
        return array(
            
LogLevel::EMERGENCY => array(LogLevel::EMERGENCY'message of level emergency with context: {user}'),
            
LogLevel::ALERT => array(LogLevel::ALERT'message of level alert with context: {user}'),
            
LogLevel::CRITICAL => array(LogLevel::CRITICAL'message of level critical with context: {user}'),
            
LogLevel::ERROR => array(LogLevel::ERROR'message of level error with context: {user}'),
            
LogLevel::WARNING => array(LogLevel::WARNING'message of level warning with context: {user}'),
            
LogLevel::NOTICE => array(LogLevel::NOTICE'message of level notice with context: {user}'),
            
LogLevel::INFO => array(LogLevel::INFO'message of level info with context: {user}'),
            
LogLevel::DEBUG => array(LogLevel::DEBUG'message of level debug with context: {user}'),
        );
    }

    
/**
     * @expectedException PsrLogInvalidArgumentException
     */
    
public function testThrowsOnInvalidLevel()
    {
        
$logger $this->getLogger();
        
$logger->log('invalid level''Foo');
    }

    public function 
testContextReplacement()
    {
        
$logger $this->getLogger();
        
$logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob''foo.bar' => 'Bar'));

        
$expected = array('info {Message {nothing} Bob Bar a}');
        
$this->assertEquals($expected$this->getLogs());
    }

    public function 
testObjectCastToString()
    {
        if (
method_exists($this'createPartialMock')) {
            
$dummy $this->createPartialMock('PsrLogTestDummyTest', array('__toString'));
        } else {
            
$dummy $this->getMock('PsrLogTestDummyTest', array('__toString'));
        }
        
$dummy->expects($this->once())
            ->
method('__toString')
            ->
will($this->returnValue('DUMMY'));

        
$this->getLogger()->warning($dummy);

        
$expected = array('warning DUMMY');
        
$this->assertEquals($expected$this->getLogs());
    }

    public function 
testContextCanContainAnything()
    {
        
$closed fopen('php://memory''r');
        
fclose($closed);

        
$context = array(
            
'bool' => true,
            
'null' => null,
            
'string' => 'Foo',
            
'int' => 0,
            
'float' => 0.5,
            
'nested' => array('with object' => new DummyTest),
            
'object' => new DateTime,
            
'resource' => fopen('php://memory''r'),
            
'closed' => $closed,
        );

        
$this->getLogger()->warning('Crazy context data'$context);

        
$expected = array('warning Crazy context data');
        
$this->assertEquals($expected$this->getLogs());
    }

    public function 
testContextExceptionKeyCanBeExceptionOrOtherValues()
    {
        
$logger $this->getLogger();
        
$logger->warning('Random message', array('exception' => 'oops'));
        
$logger->critical('Uncaught Exception!', array('exception' => new LogicException('Fail')));

        
$expected = array(
            
'warning Random message',
            
'critical Uncaught Exception!'
        
);
        
$this->assertEquals($expected$this->getLogs());
    }
}

class 
DummyTest
{
    public function 
__toString()
    {
    }
}
Онлайн: 0
Реклама