PluginProbe
UpStream: a Project Management Plugin for WordPress / trunk
UpStream: a Project Management Plugin for WordPress vtrunk
trunk 1.39.0 1.39.1 1.39.2 1.39.3 2.0.7 2.1.0
upstream / vendor / symfony / console / Tests / Input / StringInputTest.php

StringInputTest.php in UpStream: a Project Management Plugin for WordPress trunk, at vendor/symfony/console/Tests/Input/StringInputTest.php

88 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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\Console\Tests\Input;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Console\Input\InputDefinition;
16 use Symfony\Component\Console\Input\InputOption;
17 use Symfony\Component\Console\Input\StringInput;
18
19 class StringInputTest extends TestCase
20 {
21 /**
22 * @dataProvider getTokenizeData
23 */
24 public function testTokenize($input, $tokens, $message)
25 {
26 $input = new StringInput($input);
27 $r = new \ReflectionClass('Symfony\Component\Console\Input\ArgvInput');
28 $p = $r->getProperty('tokens');
29 $p->setAccessible(true);
30 $this->assertEquals($tokens, $p->getValue($input), $message);
31 }
32
33 public function testInputOptionWithGivenString()
34 {
35 $definition = new InputDefinition(
36 [new InputOption('foo', null, InputOption::VALUE_REQUIRED)]
37 );
38
39 // call to bind
40 $input = new StringInput('--foo=bar');
41 $input->bind($definition);
42 $this->assertEquals('bar', $input->getOption('foo'));
43 }
44
45 public function getTokenizeData()
46 {
47 return [
48 ['', [], '->tokenize() parses an empty string'],
49 ['foo', ['foo'], '->tokenize() parses arguments'],
50 [' foo bar ', ['foo', 'bar'], '->tokenize() ignores whitespaces between arguments'],
51 ['"quoted"', ['quoted'], '->tokenize() parses quoted arguments'],
52 ["'quoted'", ['quoted'], '->tokenize() parses quoted arguments'],
53 ["'a\rb\nc\td'", ["a\rb\nc\td"], '->tokenize() parses whitespace chars in strings'],
54 ["'a'\r'b'\n'c'\t'd'", ['a', 'b', 'c', 'd'], '->tokenize() parses whitespace chars between args as spaces'],
55 ['\"quoted\"', ['"quoted"'], '->tokenize() parses escaped-quoted arguments'],
56 ["\'quoted\'", ['\'quoted\''], '->tokenize() parses escaped-quoted arguments'],
57 ['-a', ['-a'], '->tokenize() parses short options'],
58 ['-azc', ['-azc'], '->tokenize() parses aggregated short options'],
59 ['-awithavalue', ['-awithavalue'], '->tokenize() parses short options with a value'],
60 ['-a"foo bar"', ['-afoo bar'], '->tokenize() parses short options with a value'],
61 ['-a"foo bar""foo bar"', ['-afoo barfoo bar'], '->tokenize() parses short options with a value'],
62 ['-a\'foo bar\'', ['-afoo bar'], '->tokenize() parses short options with a value'],
63 ['-a\'foo bar\'\'foo bar\'', ['-afoo barfoo bar'], '->tokenize() parses short options with a value'],
64 ['-a\'foo bar\'"foo bar"', ['-afoo barfoo bar'], '->tokenize() parses short options with a value'],
65 ['--long-option', ['--long-option'], '->tokenize() parses long options'],
66 ['--long-option=foo', ['--long-option=foo'], '->tokenize() parses long options with a value'],
67 ['--long-option="foo bar"', ['--long-option=foo bar'], '->tokenize() parses long options with a value'],
68 ['--long-option="foo bar""another"', ['--long-option=foo baranother'], '->tokenize() parses long options with a value'],
69 ['--long-option=\'foo bar\'', ['--long-option=foo bar'], '->tokenize() parses long options with a value'],
70 ["--long-option='foo bar''another'", ['--long-option=foo baranother'], '->tokenize() parses long options with a value'],
71 ["--long-option='foo bar'\"another\"", ['--long-option=foo baranother'], '->tokenize() parses long options with a value'],
72 ['foo -a -ffoo --long bar', ['foo', '-a', '-ffoo', '--long', 'bar'], '->tokenize() parses when several arguments and options'],
73 ];
74 }
75
76 public function testToString()
77 {
78 $input = new StringInput('-f foo');
79 $this->assertEquals('-f foo', (string) $input);
80
81 $input = new StringInput('-f --bar=foo "a b c d"');
82 $this->assertEquals('-f --bar=foo '.escapeshellarg('a b c d'), (string) $input);
83
84 $input = new StringInput('-f --bar=foo \'a b c d\' '."'A\nB\\'C'");
85 $this->assertEquals('-f --bar=foo '.escapeshellarg('a b c d').' '.escapeshellarg("A\nB'C"), (string) $input);
86 }
87 }
88