$t->is($definition->getArgumentDefaults(), array('foo4' => array(1, 2)), '->getArgumentDefaults() return the default values for each argument'); $foo = new Option('foo', 'f'); $bar = new Option('bar', 'b'); $foo1 = new Option('fooBis', 'f'); $foo2 = new Option('foo', 'p'); // __construct() $t->diag('__construct()'); $definition = new Definition(); $t->is($definition->getOptions(), array(), '__construct() creates a new Definition object'); $definition = new Definition(array($foo, $bar)); $t->is($definition->getOptions(), array('foo' => $foo, 'bar' => $bar), '__construct() takes an array of Option objects as its first argument'); // ->setOptions() $t->diag('->setOptions()'); $definition = new Definition(array($foo)); $t->is($definition->getOptions(), array('foo' => $foo), '->setOptions() sets the array of Option objects'); $definition->setOptions(array($bar)); $t->is($definition->getOptions(), array('bar' => $bar), '->setOptions() clears all Option objects'); try { $definition->getOptionForShortcut('f'); $t->fail('->setOptions() clears all Option objects'); } catch (\Exception $e) { $t->pass('->setOptions() clears all Option objects'); } // ->addOptions() $t->diag('->addOptions()'); $definition = new Definition(array($foo)); $t->is($definition->getOptions(), array('foo' => $foo), '->addOptions() adds an array of Option objects'); $definition->addOptions(array($bar)); $t->is($definition->getOptions(), array('foo' => $foo, 'bar' => $bar), '->addOptions() does not clear existing Option objects'); // ->addOption() $t->diag('->addOption()');