$t->fail('option with mode "nbOption::PARAMETER_REQUIRED" can\'t have default value'); } catch (InvalidArgumentException $e) { $t->pass('option with mode "nbOption::PARAMETER_REQUIRED" can\'t have default value'); } $foo = new nbOption('foo', 'f', nbOption::PARAMETER_OPTIONAL, 'foo description', 'defaultValue'); $t->comment('nbOptionTest - Test if an argument is an array'); $foo = new nbOption('foo', '', nbOption::IS_ARRAY); $t->is($foo->hasParameter(), false, 'option with array without mode has no parameter'); $foo = new nbOption('foo', '', nbOption::PARAMETER_NONE | nbOption::IS_ARRAY); $t->is($foo->hasParameter(), false, 'option can be array with no parameter'); $t->is($foo->isArray(), true, 'option can be array with no parameter'); $foo = new nbOption('foo', 'f', nbOption::PARAMETER_OPTIONAL | nbOption::IS_ARRAY, 'foo description'); $t->ok($foo->isArray(), '->isArray() returns true if the argument can be an array'); $foo = new nbOption('foo', 'f', nbOption::PARAMETER_OPTIONAL, 'foo description'); $t->ok(!$foo->isArray(), '->isArray() returns false if the argument cannot be an array'); $foo = new nbOption('foo', 'f', nbOption::PARAMETER_REQUIRED | nbOption::IS_ARRAY, 'foo description'); try { $foo->setValue('a value'); $t->fail('->setValue() must receive an array if option mode is "nbOption::IS_ARRAY"'); } catch (InvalidArgumentException $e) { $t->pass('->setValue() must receive an array if option mode is "nbOption::IS_ARRAY"'); } $foo->setValue(array()); $t->is($foo->getValue(), array(), '->getValue() returns an empty array if option has IS_ARRAY mode'); $foo->setValue(array("val1", "val2", "val3")); $t->is($foo->getValue(), array("val1", "val2", "val3"), '->setValue() append parameter to value if option has IS_ARRAY mode'); $t->comment('nbOptionTest - Test to string'); $option = new nbOption('foo', '', nbOption::PARAMETER_NONE); $t->is((string) $option, '[--foo]', '->__toString() returns "[--foo]"'); $option = new nbOption('foo', '', nbOption::PARAMETER_OPTIONAL, '', 'FOO'); $t->is((string) $option, '[--foo=[FOO]]', '->__toString() returns "[--foo=[FOO]]"');
/** * Add a nbOption object. * * @param nbOption $option A nbOption object */ public function addOption(nbOption $option) { if ($this->hasOption($option->getName())) { throw new InvalidArgumentException(sprintf('[nbOptionSet::addOption] Option "%s" already exists', $option->getName())); } if ($this->hasOption($option->getShortcut())) { throw new InvalidArgumentException(sprintf('[nbOptionSet::addOption] Shortcut "%s" already registered', $option->getShortcut())); } $this->options[$option->getName()] = $option; if ($option->hasShortcut()) { $this->shortcuts[$option->getShortcut()] = $option; } if ($option->hasRequiredParameter()) { ++$this->requiredCount; } }
public function setOption(nbOption $option, $value) { if ($option->isArray()) { $this->optionValues[$option->getName()][] = $value; } else { $this->optionValues[$option->getName()] = $value; } }