73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nulib\app\cli;
 | |
| 
 | |
| use nur\t\TestCase;
 | |
| 
 | |
| class ArgDefTest extends TestCase {
 | |
|   protected static function assertArg(
 | |
|     ArgDef $argDef,
 | |
|     array  $options,
 | |
|     bool   $haveShortOptions, bool $haveLongOptions, bool $haveCommands,
 | |
|     bool   $haveArgs, ?int $minArgs, ?int $maxArgs, ?string $argsdesc
 | |
|   ) {
 | |
|     $argDef->processExtends();
 | |
|     $argDef->processArgs();
 | |
|     $argDef->processAction();
 | |
|     self::assertSame($options, $argDef->getOptions());
 | |
|     self::assertSame($haveShortOptions, $argDef->haveShortOptions, "haveShortOptions");
 | |
|     self::assertSame($haveLongOptions, $argDef->haveLongOptions, "haveLongOptions");
 | |
|     self::assertSame($haveCommands, $argDef->haveCommands, "haveCommands");
 | |
|     self::assertSame($haveArgs, $argDef->haveArgs, "haveArgs");
 | |
|     self::assertSame($minArgs, $argDef->minArgs, "minArgs");
 | |
|     self::assertSame($maxArgs, $argDef->maxArgs, "maxArgs");
 | |
|     self::assertSame($argsdesc, $argDef->argsdesc, "argsdesc");
 | |
|   }
 | |
| 
 | |
|   function testBase() {
 | |
|     $argDef = new ArgDef(["-o", "--longo"]);
 | |
|     self::assertArg($argDef,
 | |
|       ["-o", "--longo"],
 | |
|       true, true, false,
 | |
|       false, 0, 0, "");
 | |
| 
 | |
|     $argDef = new ArgDef(["-o:", "--longo"]);
 | |
|     self::assertArg($argDef,
 | |
|       ["-o", "--longo"],
 | |
|       true, true, false,
 | |
|       true, 1, 1, "VALUE");
 | |
| 
 | |
|     $argDef = new ArgDef(["-o::", "--longo"]);
 | |
|     self::assertArg($argDef,
 | |
|       ["-o", "--longo"],
 | |
|       true, true, false,
 | |
|       true, 0, 1, "[VALUE]");
 | |
| 
 | |
|     $argDef = new ArgDef(["-o:", "--longo:"]);
 | |
|     self::assertArg($argDef,
 | |
|       ["-o", "--longo"],
 | |
|       true, true, false,
 | |
|       true, 1, 1, "VALUE");
 | |
| 
 | |
|     $argDef = new ArgDef(["-o:", "--longo::"]);
 | |
|     self::assertArg($argDef,
 | |
|       ["-o", "--longo"],
 | |
|       true, true, false,
 | |
|       true, 1, 1, "VALUE");
 | |
|   }
 | |
| 
 | |
|   function testExtends() {
 | |
|     $argDef = [
 | |
|       "extends" => [
 | |
|         "arg" => ["-o:", "--longo"],
 | |
|         "add" => ["-a", "--longa"],
 | |
|         "remove" => ["-o", "--longo"],
 | |
|       ],
 | |
|     ];
 | |
|     $arg = new ArgDef($argDef);
 | |
|     self::assertArg($arg,
 | |
|       ["-a", "--longa"],
 | |
|       true, true, false,
 | |
|       false, 0, 0, "");
 | |
|   }
 | |
| }
 |