$manager = new sfCommandManager();
$t->isa_ok($manager->getArgumentSet(), 'sfCommandArgumentSet', '__construct() creates a new sfCommandArgumentsSet if none given');
$t->isa_ok($manager->getOptionSet(), 'sfCommandOptionSet', '__construct() creates a new sfCommandOptionSet if none given');

$manager = new sfCommandManager($argumentSet);
$t->is($manager->getArgumentSet(), $argumentSet, '__construct() takes a sfCommandArgumentSet as its first argument');
$t->isa_ok($manager->getOptionSet(), 'sfCommandOptionSet', '__construct() takes a sfCommandArgumentSet as its first argument');

$manager = new sfCommandManager($argumentSet, $optionSet);
$t->is($manager->getOptionSet(), $optionSet, '__construct() can take a sfCommandOptionSet as its second argument');

// ->setArgumentSet() ->getArgumentSet()
$t->diag('->setArgumentSet() ->getArgumentSet()');
$manager = new sfCommandManager(new sfCommandArgumentSet());
$argumentSet = new sfCommandArgumentSet();
$manager->setArgumentSet($argumentSet);
$t->is($manager->getArgumentSet(), $argumentSet, '->setArgumentSet() sets the manager argument set');

// ->setOptionSet() ->getOptionSet()
$t->diag('->setOptionSet() ->getOptionSet()');
$manager = new sfCommandManager(new sfCommandArgumentSet());
$optionSet = new sfCommandOptionSet();
$manager->setOptionSet($optionSet);
$t->is($manager->getOptionSet(), $optionSet, '->setOptionSet() sets the manager option set');

// ->process()
$t->diag('->process()');
$argumentSet = new sfCommandArgumentSet(array(
  new sfCommandArgument('foo1', sfCommandArgument::REQUIRED),
  new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY),
));