2010-03-31 07:42:18 +01:00
< ? php
/*
2010-04-25 16:06:54 +01:00
* This file is part of the Symfony package .
2010-03-31 07:42:18 +01:00
*
* ( c ) Fabien Potencier < fabien . potencier @ symfony - project . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Tests\Components\CssSelector ;
use Symfony\Components\CssSelector\Tokenizer ;
class TokenizerTest extends \PHPUnit_Framework_TestCase
{
2010-05-06 12:25:53 +01:00
protected $tokenizer ;
2010-04-01 14:19:48 +01:00
2010-05-06 12:25:53 +01:00
public function setUp ()
{
$this -> tokenizer = new Tokenizer ();
}
2010-04-01 14:19:48 +01:00
2010-05-06 12:25:53 +01:00
/**
* @ dataProvider getCssSelectors
*/
public function testTokenize ( $css )
{
$this -> assertEquals ( $css , $this -> tokensToString ( $this -> tokenizer -> tokenize ( $css )), '->tokenize() lexes an input string and returns an array of tokens' );
}
2010-03-31 07:42:18 +01:00
2010-05-06 12:25:53 +01:00
public function testTokenizeWithQuotedStrings ()
{
$this -> assertEquals ( 'foo[class=foo bar ]' , $this -> tokensToString ( $this -> tokenizer -> tokenize ( 'foo[class="foo bar"]' )), '->tokenize() lexes an input string and returns an array of tokens' );
$this -> assertEquals ( " foo[class=foo Abar ] " , $this -> tokensToString ( $this -> tokenizer -> tokenize ( 'foo[class="foo \\65 bar"]' )), '->tokenize() lexes an input string and returns an array of tokens' );
}
2010-03-31 07:42:18 +01:00
2010-05-06 12:25:53 +01:00
public function getCssSelectors ()
2010-03-31 07:42:18 +01:00
{
2010-05-06 12:25:53 +01:00
return array (
array ( 'h1' ),
array ( 'h1:nth-child(3n+1)' ),
array ( 'h1 > p' ),
array ( 'h1#foo' ),
array ( 'h1.foo' ),
array ( 'h1[class*=foo]' ),
array ( 'h1 .foo' ),
array ( 'h1 #foo' ),
array ( 'h1 [class*=foo]' ),
);
2010-03-31 07:42:18 +01:00
}
2010-05-06 12:25:53 +01:00
protected function tokensToString ( $tokens )
{
$str = '' ;
foreach ( $tokens as $token )
{
$str .= str_repeat ( ' ' , $token -> getPosition () - strlen ( $str )) . $token ;
}
return $str ;
}
2010-03-31 07:42:18 +01:00
}