Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/jasny/twig-extensions/tests/PcreExtensionTest.php
<?php

namespace Jasny\Twig;

use
Jasny\Twig\PcreExtension;
use
Jasny\Twig\TestHelper;

/**
 * @covers Jasny\Twig\PcreExtension
 */
class PcreExtensionTest extends \PHPUnit_Framework_TestCase
{
    use
TestHelper;
   
    protected function
getExtension()
    {
        return new
PcreExtension();
    }
   
   
    public function
testGetName()
    {
       
$this->assertEquals('jasny/pcre', $this->getExtension()->getName());
    }
   

    public function
testQuote()
    {
       
$this->assertRender('foo\(\)', '{{ "foo()"|preg_quote }}');
    }
   
    public function
testQuoteDelimiter()
    {
       
$this->assertRender('foo\@bar', '{{ "foo@bar"|preg_quote("@") }}');
    }
   
    public function
testPregMatch()
    {
       
$this->assertRender('YES', '{% if "foo"|preg_match("/oo/") %}YES{% else %}NO{% endif %}');
    }

    public function
testPregMatchNo()
    {
       
$this->assertRender('NO', '{% if "fod"|preg_match("/oo/") %}YES{% else %}NO{% endif %}');
    }

   
/**
     * @expectedException \Twig_Error_Runtime
     */
   
public function testPregMatchError()
    {
       
$this->render('{% if "fod"|preg_match("/o//o/") %}YES{% else %}NO{% endif %}');
    }
   
   
    public function
testPregGet()
    {
       
$this->assertRender('d', '{{ "food"|preg_get("/oo(.)/", 1) }}');
    }
   
    public function
testPregGetDefault()
    {
       
$this->assertRender('ood', '{{ "food"|preg_get("/oo(.)/") }}');
    }
   
   
    public function
testPregGetAll()
    {
       
$this->assertRender('d|t|m', '{{ "food woot should doom"|preg_get_all("/oo(.)/", 1)|join("|") }}');
    }
   
    public function
testPregGetAllDefault()
    {
       
$this->assertRender('ood|oot|oom', '{{ "food woot doom"|preg_get_all("/oo(.)/")|join("|") }}');
    }
   
   
    public function
testPregGrep()
    {
       
$this->assertRender(
           
'world|how|you',
           
'{{ ["hello", "sweet", "world", "how", "are", "you"]|preg_grep("/o./")|join("|") }}'
       
);
    }
   
    public function
testPregGrepInvert()
    {
       
$this->assertRender(
           
'hello|sweet|are',
           
'{{ ["hello", "sweet", "world", "how", "are", "you"]|preg_grep("/o./", "invert")|join("|") }}'
       
);
    }
   
   
    public function
testReplace()
    {
       
$this->assertRender(
           
'the quick brawen faxe jumped aveer the lazy dage',
           
'{{ "the quick brown fox jumped over the lazy dog"|preg_replace("/o(\\\\w)/", "a$1e") }}'
       
);
    }
   
    public function
testReplaceLimit()
    {
       
$this->assertRender(
           
'the quick brawen faxe jumped over the lazy dog',
           
'{{ "the quick brown fox jumped over the lazy dog"|preg_replace("/o(\\\\w)/", "a$1e", 2) }}'
       
);
    }
   
    public function
testReplaceWithArray()
    {
       
$this->assertRender(
           
'hello|sweet|wareld|hawe|are|yaue',
           
'{{ ["hello", "sweet", "world", "how", "are", "you"]|preg_replace("/o(.)/", "a$1e")|join("|") }}'
       
);
    }
   
   
/**
     * @expectedException Twig_Error_Runtime
     */
   
public function testReplaceAssertNoEval()
    {
       
$this->render('{{ "foo"|preg_replace("/o/ei", "strtoupper") }}');
    }
   
   
    public function
testFilter()
    {
       
$this->assertRender(
           
'wareld|hawe|yaue',
           
'{{ ["hello", "sweet", "world", "how", "are", "you"]|preg_filter("/o(.)/", "a$1e")|join("|") }}'
       
);
    }
   
   
/**
     * @expectedException Twig_Error_Runtime
     */
   
public function testFilterAssertNoEval()
    {
       
$this->render('{{ "foo"|preg_filter("/o/ei", "strtoupper") }}');
    }
   
   
    public function
testSplit()
    {
       
$this->assertRender(
           
'the quick br|n f| jumped |er the lazy d|',
           
'{{ "the quick brown fox jumped over the lazy dog"|preg_split("/o(\\\\w)/", "a$1e")|join("|") }}'
       
);
    }
   
   
    public function
filterProvider()
    {
        return [
            [
'preg_quote'],
            [
'preg_match'],
            [
'preg_get'],
            [
'preg_get_all'],
            [
'preg_grep'],
            [
'preg_replace'],
            [
'preg_filter'],
            [
'preg_split']
        ];
    }
   
   
/**
     * @dataProvider filterProvider
     *
     * @param string $filter
     */
   
public function testWithNull($filter)
    {
       
$this->assertRender('-', '{{ null|' . $filter . '("//")|default("-") }}');
    }    
}