public function testSpec()
{
$options = new OptionCollection();
$options->add('f|foo:', 'option require value');
$options->add('b|bar+', 'option with multiple value');
$options->add('z|zoo?', 'option with optional value');
$options->add('v|verbose', 'verbose message');
$options->add('d|debug', 'debug message');
$this->assertEquals(5, $options->size());
$this->assertEquals(5, count($options));
$opt = $options->get('foo');
$this->assertTrue($opt->isRequired());
$opt = $options->get('bar');
$this->assertTrue($opt->isMultiple());
$opt = $options->get('zoo');
$this->assertTrue($opt->isOptional());
$opt = $options->get('debug');
$this->assertNotNull($opt);
$this->assertInstanceOf('GetOptionKit\\Option', $opt);
$this->assertEquals('debug', $opt->long);
$this->assertEquals('d', $opt->short);
$this->assertTrue($opt->isFlag());
return $options;
}