8005616a9208e9f5b9a5bf7a6012038c8e3d65ef
[yaffs-website] / vendor / symfony / css-selector / Tests / Parser / Handler / AbstractHandlerTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\CssSelector\Tests\Parser\Handler;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\CssSelector\Parser\Reader;
16 use Symfony\Component\CssSelector\Parser\Token;
17 use Symfony\Component\CssSelector\Parser\TokenStream;
18
19 /**
20  * @author Jean-François Simon <contact@jfsimon.fr>
21  */
22 abstract class AbstractHandlerTest extends TestCase
23 {
24     /** @dataProvider getHandleValueTestData */
25     public function testHandleValue($value, Token $expectedToken, $remainingContent)
26     {
27         $reader = new Reader($value);
28         $stream = new TokenStream();
29
30         $this->assertTrue($this->generateHandler()->handle($reader, $stream));
31         $this->assertEquals($expectedToken, $stream->getNext());
32         $this->assertRemainingContent($reader, $remainingContent);
33     }
34
35     /** @dataProvider getDontHandleValueTestData */
36     public function testDontHandleValue($value)
37     {
38         $reader = new Reader($value);
39         $stream = new TokenStream();
40
41         $this->assertFalse($this->generateHandler()->handle($reader, $stream));
42         $this->assertStreamEmpty($stream);
43         $this->assertRemainingContent($reader, $value);
44     }
45
46     abstract public function getHandleValueTestData();
47
48     abstract public function getDontHandleValueTestData();
49
50     abstract protected function generateHandler();
51
52     protected function assertStreamEmpty(TokenStream $stream)
53     {
54         $property = new \ReflectionProperty($stream, 'tokens');
55         $property->setAccessible(true);
56
57         $this->assertEquals(array(), $property->getValue($stream));
58     }
59
60     protected function assertRemainingContent(Reader $reader, $remainingContent)
61     {
62         if ('' === $remainingContent) {
63             $this->assertEquals(0, $reader->getRemainingLength());
64             $this->assertTrue($reader->isEOF());
65         } else {
66             $this->assertEquals(strlen($remainingContent), $reader->getRemainingLength());
67             $this->assertEquals(0, $reader->getOffset($remainingContent));
68         }
69     }
70 }