You are here

AbstractHandlerTest.php in Zircon Profile 8

File

vendor/symfony/css-selector/Tests/Parser/Handler/AbstractHandlerTest.php
View source
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\CssSelector\Tests\Parser\Handler;

use Symfony\Component\CssSelector\Parser\Reader;
use Symfony\Component\CssSelector\Parser\Token;
use Symfony\Component\CssSelector\Parser\TokenStream;

/**
 * @author Jean-François Simon <contact@jfsimon.fr>
 */
abstract class AbstractHandlerTest extends \PHPUnit_Framework_TestCase {

  /** @dataProvider getHandleValueTestData */
  public function testHandleValue($value, Token $expectedToken, $remainingContent) {
    $reader = new Reader($value);
    $stream = new TokenStream();
    $this
      ->assertTrue($this
      ->generateHandler()
      ->handle($reader, $stream));
    $this
      ->assertEquals($expectedToken, $stream
      ->getNext());
    $this
      ->assertRemainingContent($reader, $remainingContent);
  }

  /** @dataProvider getDontHandleValueTestData */
  public function testDontHandleValue($value) {
    $reader = new Reader($value);
    $stream = new TokenStream();
    $this
      ->assertFalse($this
      ->generateHandler()
      ->handle($reader, $stream));
    $this
      ->assertStreamEmpty($stream);
    $this
      ->assertRemainingContent($reader, $value);
  }
  public abstract function getHandleValueTestData();
  public abstract function getDontHandleValueTestData();
  protected abstract function generateHandler();
  protected function assertStreamEmpty(TokenStream $stream) {
    $property = new \ReflectionProperty($stream, 'tokens');
    $property
      ->setAccessible(true);
    $this
      ->assertEquals(array(), $property
      ->getValue($stream));
  }
  protected function assertRemainingContent(Reader $reader, $remainingContent) {
    if ('' === $remainingContent) {
      $this
        ->assertEquals(0, $reader
        ->getRemainingLength());
      $this
        ->assertTrue($reader
        ->isEOF());
    }
    else {
      $this
        ->assertEquals(strlen($remainingContent), $reader
        ->getRemainingLength());
      $this
        ->assertEquals(0, $reader
        ->getOffset($remainingContent));
    }
  }

}

Classes

Namesort descending Description
AbstractHandlerTest @author Jean-François Simon <contact@jfsimon.fr>