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