4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Console\Tests\Input;
14 use Symfony\Component\Console\Input\ArrayInput;
15 use Symfony\Component\Console\Input\InputDefinition;
16 use Symfony\Component\Console\Input\InputArgument;
17 use Symfony\Component\Console\Input\InputOption;
19 class ArrayInputTest extends \PHPUnit_Framework_TestCase
21 public function testGetFirstArgument()
23 $input = new ArrayInput(array());
24 $this->assertNull($input->getFirstArgument(), '->getFirstArgument() returns null if no argument were passed');
25 $input = new ArrayInput(array('name' => 'Fabien'));
26 $this->assertEquals('Fabien', $input->getFirstArgument(), '->getFirstArgument() returns the first passed argument');
27 $input = new ArrayInput(array('--foo' => 'bar', 'name' => 'Fabien'));
28 $this->assertEquals('Fabien', $input->getFirstArgument(), '->getFirstArgument() returns the first passed argument');
31 public function testHasParameterOption()
33 $input = new ArrayInput(array('name' => 'Fabien', '--foo' => 'bar'));
34 $this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if an option is present in the passed parameters');
35 $this->assertFalse($input->hasParameterOption('--bar'), '->hasParameterOption() returns false if an option is not present in the passed parameters');
37 $input = new ArrayInput(array('--foo'));
38 $this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if an option is present in the passed parameters');
41 public function testParse()
43 $input = new ArrayInput(array('name' => 'foo'), new InputDefinition(array(new InputArgument('name'))));
44 $this->assertEquals(array('name' => 'foo'), $input->getArguments(), '->parse() parses required arguments');
47 $input = new ArrayInput(array('foo' => 'foo'), new InputDefinition(array(new InputArgument('name'))));
48 $this->fail('->parse() throws an \InvalidArgumentException exception if an invalid argument is passed');
49 } catch (\Exception $e) {
50 $this->assertInstanceOf('\InvalidArgumentException', $e, '->parse() throws an \InvalidArgumentException exception if an invalid argument is passed');
51 $this->assertEquals('The "foo" argument does not exist.', $e->getMessage(), '->parse() throws an \InvalidArgumentException exception if an invalid argument is passed');
54 $input = new ArrayInput(array('--foo' => 'bar'), new InputDefinition(array(new InputOption('foo'))));
55 $this->assertEquals(array('foo' => 'bar'), $input->getOptions(), '->parse() parses long options');
57 $input = new ArrayInput(array('--foo' => 'bar'), new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL, '', 'default'))));
58 $this->assertEquals(array('foo' => 'bar'), $input->getOptions(), '->parse() parses long options with a default value');
60 $input = new ArrayInput(array('--foo' => null), new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL, '', 'default'))));
61 $this->assertEquals(array('foo' => 'default'), $input->getOptions(), '->parse() parses long options with a default value');
64 $input = new ArrayInput(array('--foo' => null), new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_REQUIRED))));
65 $this->fail('->parse() throws an \InvalidArgumentException exception if a required option is passed without a value');
66 } catch (\Exception $e) {
67 $this->assertInstanceOf('\InvalidArgumentException', $e, '->parse() throws an \InvalidArgumentException exception if a required option is passed without a value');
68 $this->assertEquals('The "--foo" option requires a value.', $e->getMessage(), '->parse() throws an \InvalidArgumentException exception if a required option is passed without a value');
72 $input = new ArrayInput(array('--foo' => 'foo'), new InputDefinition());
73 $this->fail('->parse() throws an \InvalidArgumentException exception if an invalid option is passed');
74 } catch (\Exception $e) {
75 $this->assertInstanceOf('\InvalidArgumentException', $e, '->parse() throws an \InvalidArgumentException exception if an invalid option is passed');
76 $this->assertEquals('The "--foo" option does not exist.', $e->getMessage(), '->parse() throws an \InvalidArgumentException exception if an invalid option is passed');
79 $input = new ArrayInput(array('-f' => 'bar'), new InputDefinition(array(new InputOption('foo', 'f'))));
80 $this->assertEquals(array('foo' => 'bar'), $input->getOptions(), '->parse() parses short options');
83 $input = new ArrayInput(array('-o' => 'foo'), new InputDefinition());
84 $this->fail('->parse() throws an \InvalidArgumentException exception if an invalid option is passed');
85 } catch (\Exception $e) {
86 $this->assertInstanceOf('\InvalidArgumentException', $e, '->parse() throws an \InvalidArgumentException exception if an invalid option is passed');
87 $this->assertEquals('The "-o" option does not exist.', $e->getMessage(), '->parse() throws an \InvalidArgumentException exception if an invalid option is passed');