From 5bd8cb84de57b3a4f330e247f3eb67d2924b1a59 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 12 Jul 2015 22:53:04 +0200 Subject: [PATCH] Add dummy ParserFactory test :/ --- lib/PhpParser/ParserFactory.php | 14 ++++++++---- test/PhpParser/ParserFactoryTest.php | 34 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 test/PhpParser/ParserFactoryTest.php diff --git a/lib/PhpParser/ParserFactory.php b/lib/PhpParser/ParserFactory.php index 4f132fa..11a2cb4 100644 --- a/lib/PhpParser/ParserFactory.php +++ b/lib/PhpParser/ParserFactory.php @@ -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([ diff --git a/test/PhpParser/ParserFactoryTest.php b/test/PhpParser/ParserFactoryTest.php new file mode 100644 index 0000000..49c0111 --- /dev/null +++ b/test/PhpParser/ParserFactoryTest.php @@ -0,0 +1,34 @@ +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' + ] + ]; + } +} \ No newline at end of file