Add dummy ParserFactory test

:/
This commit is contained in:
Nikita Popov 2015-07-12 22:53:04 +02:00
parent ebeeae19a6
commit 5bd8cb84de
2 changed files with 44 additions and 4 deletions

View File

@ -9,11 +9,17 @@ class ParserFactory {
const ONLY_PHP5 = 4;
/**
* @param int $kind
* @return Parser
* Creates a Parser instance, according to the provided kind.
*
* @param int $kind One of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5
* @param Lexer|null $lexer Lexer to use. Defaults to emulative lexer when not specified
*
* @return Parser The parser instance
*/
public function create($kind) {
$lexer = new Lexer\Emulative();
public function create($kind, Lexer $lexer = null) {
if (null === $lexer) {
$lexer = new Lexer\Emulative();
}
switch ($kind) {
case self::PREFER_PHP7:
return new Parser\Multiple([

View File

@ -0,0 +1,34 @@
<?php
namespace PhpParser;
/* This test is very weak, because PHPUnit's assertEquals assertion is way too slow dealing with the
* large objects involved here. So we just do some basic instanceof tests instead. */
class ParserFactoryTest extends \PHPUnit_Framework_TestCase {
/** @dataProvider provideTestCreate */
public function testCreate($kind, $lexer, $expected) {
$this->assertInstanceOf($expected, (new ParserFactory)->create($kind, $lexer));
}
public function provideTestCreate() {
$lexer = new Lexer();
return [
[
ParserFactory::PREFER_PHP7, $lexer,
'PhpParser\Parser\Multiple'
],
[
ParserFactory::PREFER_PHP5, null,
'PhpParser\Parser\Multiple'
],
[
ParserFactory::ONLY_PHP7, null,
'PhpParser\Parser\Php7'
],
[
ParserFactory::ONLY_PHP5, $lexer,
'PhpParser\Parser\Php5'
]
];
}
}