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, "");
|
|
}
|
|
}
|