<?php 
 
/* 
 * This file is part of m36/stringformatter. 
 * 
 * (c) 36monkeys <https://36monkeys.com> 
 * 
 * For the full copyright and license information, please view 
 * the LICENSE file that was distributed with this source code. 
 * 
 * @version 0.6.0 
 */ 
 
namespace m36\StringFormatter\Tests; 
 
use m36\StringFormatter; 
use m36\StringFormatter\FormatterNamed; 
 
class FormatterNamedKeywordsTest extends \PHPUnit_Framework_TestCase 
{ 
    /** 
     * @test 
     */ 
    public function keywordClass() 
    { 
        $format = 'Test {@class} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test FormatterNamedKeywordsTest Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordClassNFormat() 
    { 
        $format = 'Test {@class} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test FormatterNamedKeywordsTest Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordClassLong() 
    { 
        $format = 'Test {@classLong} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test m36\StringFormatter\Tests\FormatterNamedKeywordsTest Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordClassLongNFormat() 
    { 
        $format = 'Test {@classLong} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test m36\StringFormatter\Tests\FormatterNamedKeywordsTest Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordMethod() 
    { 
        $format = 'Test {@method} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test FormatterNamedKeywordsTest::keywordMethod Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordMethodNFormat() 
    { 
        $format = 'Test {@method} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test FormatterNamedKeywordsTest::keywordMethodNFormat Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordMethodLong() 
    { 
        $format = 'Test {@methodLong} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test m36\StringFormatter\Tests\FormatterNamedKeywordsTest::keywordMethodLong Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordMethodLongNFormat() 
    { 
        $format = 'Test {@methodLong} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test m36\StringFormatter\Tests\FormatterNamedKeywordsTest::keywordMethodLongNFormat Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordFunction() 
    { 
        $format = 'Test {@function} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test keywordFunction Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordFunctionNFormat() 
    { 
        $format = 'Test {@function} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test keywordFunctionNFormat Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordFile() 
    { 
        $format = 'Test {@file} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test FormatterNamedKeywordsTest.php Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordFileNFormat() 
    { 
        $format = 'Test {@file} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test FormatterNamedKeywordsTest.php Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordFileLong() 
    { 
        $format = 'Test {@fileLong} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test ' . __FILE__ . ' Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordFileLongNFormat() 
    { 
        $format = 'Test {@fileLong} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test ' . __FILE__ . ' Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordDir() 
    { 
        $format = 'Test {@dir} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test tests Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordDirNFormat() 
    { 
        $format = 'Test {@dir} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test tests Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordDirLong() 
    { 
        $format = 'Test {@dirLong} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile(); 
        $this->assertEquals('Test ' . __DIR__ . ' Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordDirLongNFormat() 
    { 
        $format = 'Test {@dirLong} Test'; 
        $res = StringFormatter\nformat($format); 
        $this->assertEquals('Test ' . __DIR__ . ' Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordLine() 
    { 
        $format = 'Test {@line} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile()->unfold(); $line = __LINE__; 
        $this->assertEquals('Test ' . $line . ' Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function keywordLineNFormat() 
    { 
        $format = 'Test {@line} Test'; 
        $res = StringFormatter\nformat($format)->unfold(); $line = __LINE__; 
        $this->assertEquals('Test ' . $line . ' Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function deeplyNested() 
    { 
        $this->assertEquals('Test FormatterNamedKeywordsTest::nested4 Test', (string) $this->nested1()); 
    } 
 
    protected function nested1() 
    { 
        return $this->nested2(); 
    } 
 
    protected function nested2() 
    { 
        return $this->nested3(); 
    } 
 
    protected function nested3() 
    { 
        return $this->nested4(); 
    } 
 
    protected function nested4() 
    { 
        $format = 'Test {@method} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile()->unfold(); 
 
        return $res; 
    } 
 
    /** 
     * @test 
     */ 
    public function deeplyNestedNFormat() 
    { 
        $this->assertEquals('Test FormatterNamedKeywordsTest::nested4NFormat Test', (string) $this->nested1NFormat()); 
    } 
 
    protected function nested1NFormat() 
    { 
        return $this->nested2NFormat(); 
    } 
 
    protected function nested2NFormat() 
    { 
        return $this->nested3NFormat(); 
    } 
 
    protected function nested3NFormat() 
    { 
        return $this->nested4NFormat(); 
    } 
 
    protected function nested4NFormat() 
    { 
        $format = 'Test {@method} Test'; 
        $res = StringFormatter\nformat($format)->unfold(); 
 
        return $res; 
    } 
 
    /** 
     * @test 
     */ 
    public function combined() 
    { 
        $format = 'Test {@dir}:{@file}:{@line}:{@method} Test'; 
        $fmt = new FormatterNamed($format); 
        $res = $fmt->compile()->unfold(); $line = __LINE__; 
        $this->assertEquals("Test tests:FormatterNamedKeywordsTest.php:{$line}:" . 
            'FormatterNamedKeywordsTest::combined Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function combinedNFormat() 
    { 
        $format = 'Test {@dir}:{@file}:{@line}:{@method} Test'; 
        $res = StringFormatter\nformat($format)->unfold(); $line = __LINE__; 
        $this->assertEquals("Test tests:FormatterNamedKeywordsTest.php:{$line}:" . 
            'FormatterNamedKeywordsTest::combinedNFormat Test', (string) $res); 
    } 
 
    /** 
     * @test 
     */ 
    public function compiledTwice() 
    { 
        $format = 'Test {@dir}:{@file}:{@line}:{@method} Test'; 
        $res = StringFormatter\nformat($format); $line = __LINE__; 
 
        $res2 = $res->unfold(); 
        $this->assertEquals("Test tests:FormatterNamedKeywordsTest.php:{$line}:" . 
            'FormatterNamedKeywordsTest::compiledTwice Test', (string) $res2); 
 
        $res2 = $res->unfold(); 
        $this->assertEquals("Test tests:FormatterNamedKeywordsTest.php:{$line}:" . 
            'FormatterNamedKeywordsTest::compiledTwice Test', (string) $res2); 
    } 
} 
 
 |