ComplexParameterTest.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Shell\Test\Unit;
  7. use \Magento\Framework\Shell\ComplexParameter;
  8. class ComplexParameterTest extends \PHPUnit\Framework\TestCase
  9. {
  10. public function testGetFromArray()
  11. {
  12. $object = new ComplexParameter('baz');
  13. $this->assertSame([], $object->getFromArray(['--foo', '--bar']));
  14. $this->assertSame([], $object->getFromArray(['--foo', '--bar', '--baz']));
  15. $this->assertSame([1 => ''], $object->getFromArray(['--foo', '--bar', '--baz=1']));
  16. }
  17. /**
  18. * @param string $str
  19. * @param array $expected
  20. * @dataProvider getFromStringDataProvider
  21. */
  22. public function testGetFromString($str, $expected)
  23. {
  24. $object = new ComplexParameter('foo');
  25. $this->assertSame($expected, $object->getFromString($str));
  26. }
  27. /**
  28. * @return array
  29. */
  30. public function getFromStringDataProvider()
  31. {
  32. return [
  33. ['--not-matching', []],
  34. ['--foo', []],
  35. ['--foo=', []],
  36. ['--foo=1', [1 => '']],
  37. ['--foo=bar=1&baz=2', ['bar' => '1', 'baz' => '2']],
  38. ['--foo=bar[1]=2&baz[3]=4', ['bar' => [1 => '2'], 'baz' => [3 => '4']]],
  39. ['--foo=bar[one]=value1&bar[two]=value2', ['bar' => ['one' => 'value1', 'two' => 'value2']]],
  40. ];
  41. }
  42. public function testPattern()
  43. {
  44. $object = new ComplexParameter('f', '/^-%s=(bar|baz)$/');
  45. $this->assertSame([], $object->getFromString('-f=1'));
  46. $this->assertSame(['bar' => ''], $object->getFromString('-f=bar'));
  47. $this->assertSame(['baz' => ''], $object->getFromString('-f=baz'));
  48. }
  49. public function testMergeFromArgv()
  50. {
  51. $object = new ComplexParameter('foo');
  52. $server = ['argv' => ['--foo=bar=value1', '--nonfoo=value2']];
  53. $into = ['baz' => 'value3'];
  54. $this->assertSame(['baz' => 'value3', 'bar' => 'value1'], $object->mergeFromArgv($server, $into));
  55. }
  56. }