StringInputTest.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. */
  9. namespace Symfony\Tests\Component\Console\Input;
  10. use Symfony\Component\Console\Input\StringInput;
  11. class StringInputTest extends \PHPUnit_Framework_TestCase
  12. {
  13. public function testTokenize()
  14. {
  15. $input = new TestInput1('');
  16. $this->assertEquals(array(), $input->getTokens(), '->tokenize() parses an empty string');
  17. $input = new TestInput1('foo');
  18. $this->assertEquals(array('foo'), $input->getTokens(), '->tokenize() parses arguments');
  19. $input = new TestInput1(' foo bar ');
  20. $this->assertEquals(array('foo', 'bar'), $input->getTokens(), '->tokenize() ignores whitespaces between arguments');
  21. $input = new TestInput1('"quoted"');
  22. $this->assertEquals(array('quoted'), $input->getTokens(), '->tokenize() parses quoted arguments');
  23. $input = new TestInput1("'quoted'");
  24. $this->assertEquals(array('quoted'), $input->getTokens(), '->tokenize() parses quoted arguments');
  25. $input = new TestInput1('\"quoted\"');
  26. $this->assertEquals(array('"quoted"'), $input->getTokens(), '->tokenize() parses escaped-quoted arguments');
  27. $input = new TestInput1("\'quoted\'");
  28. $this->assertEquals(array('\'quoted\''), $input->getTokens(), '->tokenize() parses escaped-quoted arguments');
  29. $input = new TestInput1('-a');
  30. $this->assertEquals(array('-a'), $input->getTokens(), '->tokenize() parses short options');
  31. $input = new TestInput1('-azc');
  32. $this->assertEquals(array('-azc'), $input->getTokens(), '->tokenize() parses aggregated short options');
  33. $input = new TestInput1('-awithavalue');
  34. $this->assertEquals(array('-awithavalue'), $input->getTokens(), '->tokenize() parses short options with a value');
  35. $input = new TestInput1('-a"foo bar"');
  36. $this->assertEquals(array('-afoo bar'), $input->getTokens(), '->tokenize() parses short options with a value');
  37. $input = new TestInput1('-a"foo bar""foo bar"');
  38. $this->assertEquals(array('-afoo barfoo bar'), $input->getTokens(), '->tokenize() parses short options with a value');
  39. $input = new TestInput1('-a\'foo bar\'');
  40. $this->assertEquals(array('-afoo bar'), $input->getTokens(), '->tokenize() parses short options with a value');
  41. $input = new TestInput1('-a\'foo bar\'\'foo bar\'');
  42. $this->assertEquals(array('-afoo barfoo bar'), $input->getTokens(), '->tokenize() parses short options with a value');
  43. $input = new TestInput1('-a\'foo bar\'"foo bar"');
  44. $this->assertEquals(array('-afoo barfoo bar'), $input->getTokens(), '->tokenize() parses short options with a value');
  45. $input = new TestInput1('--long-option');
  46. $this->assertEquals(array('--long-option'), $input->getTokens(), '->tokenize() parses long options');
  47. $input = new TestInput1('--long-option=foo');
  48. $this->assertEquals(array('--long-option=foo'), $input->getTokens(), '->tokenize() parses long options with a value');
  49. $input = new TestInput1('--long-option="foo bar"');
  50. $this->assertEquals(array('--long-option=foo bar'), $input->getTokens(), '->tokenize() parses long options with a value');
  51. $input = new TestInput1('--long-option="foo bar""another"');
  52. $this->assertEquals(array('--long-option=foo baranother'), $input->getTokens(), '->tokenize() parses long options with a value');
  53. $input = new TestInput1('--long-option=\'foo bar\'');
  54. $this->assertEquals(array('--long-option=foo bar'), $input->getTokens(), '->tokenize() parses long options with a value');
  55. $input = new TestInput1("--long-option='foo bar''another'");
  56. $this->assertEquals(array("--long-option=foo baranother"), $input->getTokens(), '->tokenize() parses long options with a value');
  57. $input = new TestInput1("--long-option='foo bar'\"another\"");
  58. $this->assertEquals(array("--long-option=foo baranother"), $input->getTokens(), '->tokenize() parses long options with a value');
  59. $input = new TestInput1('foo -a -ffoo --long bar');
  60. $this->assertEquals(array('foo', '-a', '-ffoo', '--long', 'bar'), $input->getTokens(), '->tokenize() parses when several arguments and options');
  61. }
  62. }
  63. class TestInput1 extends StringInput
  64. {
  65. public function getTokens()
  66. {
  67. return $this->tokens;
  68. }
  69. }