public function __construct(array $args, BashCommand $bashCommand) { $this->bashCommand = $bashCommand; foreach (array_slice($args, 1, 2) as $arg) { if (!$this->requestedNumbers) { $numberNegotiator = new NumberNegotiator($arg); if ($numberNegotiator->isMatch()) { $this->requestedNumbers = $numberNegotiator->getNumbers(); if ($numberNegotiator->hasExceptions()) { throw new \RuntimeException(sprintf("NumberNegotiator Exceptions: " . PHP_EOL . "%s", $numberNegotiator->getExceptionsAsString())); } } else { $this->action = $arg; } } } if ($this->requestedNumbers) { $this->additionalArgs = array_slice($args, 3); } else { $this->action = $args[1]; $this->additionalArgs = array_slice($args, 2); } }
/** * @dataProvider dataProvider_ValidNumberStrings */ public function testValidNumberStrings($expected, $string) { $numberNegotiator = new NumberNegotiator($string); $this->assertSame($expected, $numberNegotiator->getNumbers()); $this->assertFalse($numberNegotiator->hasExceptions()); }