* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); $t = new lime_test(21); $foo = new sfCommandArgument('foo'); $bar = new sfCommandArgument('bar'); $foo1 = new sfCommandArgument('foo'); $foo2 = new sfCommandArgument('foo2', sfCommandArgument::REQUIRED); // __construct() $t->diag('__construct()'); $argumentSet = new sfCommandArgumentSet(); $t->is($argumentSet->getArguments(), array(), '__construct() creates a new sfCommandArgumentSet object'); $argumentSet = new sfCommandArgumentSet(array($foo, $bar)); $t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '__construct() takes an array of sfCommandArgument objects as its first argument'); // ->setArguments() $t->diag('->setArguments()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->setArguments(array($foo)); $t->is($argumentSet->getArguments(), array('foo' => $foo), '->setArguments() sets the array of sfCommandArgument objects'); $argumentSet->setArguments(array($bar)); $t->is($argumentSet->getArguments(), array('bar' => $bar), '->setArguments() clears all sfCommandArgument objects'); // ->addArguments() $t->diag('->addArguments()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArguments(array($foo)); $t->is($argumentSet->getArguments(), array('foo' => $foo), '->addArguments() adds an array of sfCommandArgument objects'); $argumentSet->addArguments(array($bar)); $t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '->addArguments() does not clear existing sfCommandArgument objects'); // ->addArgument() $t->diag('->addArgument()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArgument($foo); $t->is($argumentSet->getArguments(), array('foo' => $foo), '->addArgument() adds a sfCommandArgument object'); $argumentSet->addArgument($bar); $t->is($argumentSet->getArguments(), array('foo' => $foo, 'bar' => $bar), '->addArgument() adds a sfCommandArgument object'); // arguments must have different names try { $argumentSet->addArgument($foo1); $t->fail('->addArgument() throws a sfCommandException if another argument is already registered with the same name'); } catch (sfCommandException $e) { $t->pass('->addArgument() throws a sfCommandException if another argument is already registered with the same name'); } // cannot add a parameter after an array parameter $argumentSet->addArgument(new sfCommandArgument('fooarray', sfCommandArgument::IS_ARRAY)); try { $argumentSet->addArgument(new sfCommandArgument('anotherbar')); $t->fail('->addArgument() throws a sfCommandException if there is an array parameter already registered'); } catch (sfCommandException $e) { $t->pass('->addArgument() throws a sfCommandException if there is an array parameter already registered'); } // cannot add a required argument after an optional one $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArgument($foo); try { $argumentSet->addArgument($foo2); $t->fail('->addArgument() throws an exception if you try to add a required argument after an optional one'); } catch (sfCommandException $e) { $t->pass('->addArgument() throws an exception if you try to add a required argument after an optional one'); } // ->getArgument() $t->diag('->getArgument()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArguments(array($foo)); $t->is($argumentSet->getArgument('foo'), $foo, '->getArgument() returns a sfCommandArgument by its name'); try { $argumentSet->getArgument('bar'); $t->fail('->getArgument() throws an exception if the Argument name does not exist'); } catch (sfCommandException $e) { $t->pass('->getArgument() throws an exception if the Argument name does not exist'); } // ->hasArgument() $t->diag('->hasArgument()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArguments(array($foo)); $t->is($argumentSet->hasArgument('foo'), true, '->hasArgument() returns true if a sfCommandArgument exists for the given name'); $t->is($argumentSet->hasArgument('bar'), false, '->hasArgument() returns false if a sfCommandArgument exists for the given name'); // ->getArgumentRequiredCount() $t->diag('->getArgumentRequiredCount()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArgument($foo2); $t->is($argumentSet->getArgumentRequiredCount(), 1, '->getArgumentRequiredCount() returns the number of required arguments'); $argumentSet->addArgument($foo); $t->is($argumentSet->getArgumentRequiredCount(), 1, '->getArgumentRequiredCount() returns the number of required arguments'); // ->getArgumentCount() $t->diag('->getArgumentCount()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArgument($foo2); $t->is($argumentSet->getArgumentCount(), 1, '->getArgumentCount() returns the number of arguments'); $argumentSet->addArgument($foo); $t->is($argumentSet->getArgumentCount(), 2, '->getArgumentCount() returns the number of arguments'); // ->getDefaults() $t->diag('->getDefaults()'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArguments(array( new sfCommandArgument('foo1', sfCommandArgument::OPTIONAL), new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL, '', 'default'), new sfCommandArgument('foo3', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY), // new sfCommandArgument('foo4', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, '', array(1, 2)), )); $t->is($argumentSet->getDefaults(), array('foo1' => null, 'foo2' => 'default', 'foo3' => array()), '->getDefaults() return the default values for each argument'); $argumentSet = new sfCommandArgumentSet(); $argumentSet->addArguments(array( new sfCommandArgument('foo4', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY, '', array(1, 2)), )); $t->is($argumentSet->getDefaults(), array('foo4' => array(1, 2)), '->getDefaults() return the default values for each argument');