public function testCommandoFlag()
{
// Single flag
$tokens = array('filename', '-f', 'val');
$cmd = new Command($tokens);
$cmd->option('f');
$this->assertEquals($tokens[2], $cmd['f']);
// Single alias
$tokens = array('filename', '--foo', 'val');
$cmd = new Command($tokens);
$cmd->option('f')->alias('foo');
$this->assertEquals($tokens[2], $cmd['f']);
$this->assertEquals($tokens[2], $cmd['foo']);
// Multiple flags
$tokens = array('filename', '-f', 'val', '-g', 'val2');
$cmd = new Command($tokens);
$cmd->option('f')->option('g');
$this->assertEquals($tokens[2], $cmd['f']);
$this->assertEquals($tokens[4], $cmd['g']);
// Single flag with anonnymous argument
$tokens = array('filename', '-f', 'val', 'arg1');
$cmd = new Command($tokens);
$cmd->option('f')->option();
$this->assertEquals($tokens[3], $cmd[0]);
// Single flag with anonnymous argument
$tokens = array('filename', '-f', 'val', 'arg1');
$cmd = new Command($tokens);
$cmd->option('f');
$this->assertEquals($tokens[3], $cmd[0]);
// Define flag with `flag` and a named argument
$tokens = array('filename', '-f', 'val', 'arg1');
$cmd = new Command($tokens);
$cmd->flag('f')->argument();
$this->assertEquals($tokens[3], $cmd[0]);
$this->assertEquals($tokens[2], $cmd['f']);
}