parser = new OptionParser(Getopt::REQUIRED_ARGUMENT); } public function testParseString() { $options = $this->parser->parseString('ab:c::3'); $this->assertInternalType('array', $options); $this->assertCount(4, $options); foreach ($options as $option) { $this->assertInstanceOf('Ulrichsg\Getopt\Option', $option); $this->assertNull($option->long()); switch ($option->short()) { case 'a': case '3': $this->assertEquals(Getopt::NO_ARGUMENT, $option->mode()); break; case 'b': $this->assertEquals(Getopt::REQUIRED_ARGUMENT, $option->mode()); break; case 'c': $this->assertEquals(Getopt::OPTIONAL_ARGUMENT, $option->mode()); break; default: $this->fail('Unexpected option: '.$option->short()); } } } public function testParseStringEmpty() { $this->setExpectedException('InvalidArgumentException'); $this->parser->parseString(''); } public function testParseStringInvalidCharacter() { $this->setExpectedException('InvalidArgumentException'); $this->parser->parseString('ab:c::dä'); } public function testParseStringStartsWithColon() { $this->setExpectedException('InvalidArgumentException'); $this->parser->parseString(':ab:c::d'); } public function testParseStringTripleColon() { $this->setExpectedException('InvalidArgumentException'); $this->parser->parseString('ab:c:::d'); } public function testParseArray() { $options = $this->parser->parseArray( array( array('a', 'alpha', Getopt::OPTIONAL_ARGUMENT, 'Description', 42), new Option('b', 'beta'), array('c') ) ); $this->assertCount(3, $options); foreach ($options as $option) { $this->assertInstanceOf('Ulrichsg\Getopt\Option', $option); switch ($option->short()) { case 'a': $this->assertEquals('alpha', $option->long()); $this->assertEquals(Getopt::OPTIONAL_ARGUMENT, $option->mode()); $this->assertEquals('Description', $option->getDescription()); $this->assertEquals(42, $option->getArgument()->getDefaultValue()); break; case 'b': $this->assertEquals('beta', $option->long()); $this->assertEquals(Getopt::NO_ARGUMENT, $option->mode()); $this->assertEquals('', $option->getDescription()); break; case 'c': $this->assertNull($option->long()); $this->assertEquals(Getopt::REQUIRED_ARGUMENT, $option->mode()); $this->assertEquals('', $option->getDescription()); $this->assertFalse($option->getArgument()->hasDefaultValue()); break; default: $this->fail('Unexpected option: '.$option->short()); } } } public function testParseArrayEmpty() { $this->setExpectedException('InvalidArgumentException'); $this->parser->parseArray(array()); } public function testParseArrayInvalid() { $this->setExpectedException('InvalidArgumentException'); $this->parser->parseArray(array('a', 'b')); } }