160 lines
4.3 KiB
PHP
160 lines
4.3 KiB
PHP
<?php
|
|
namespace nulib\app\cli;
|
|
|
|
use nulib\app\args\Aodef;
|
|
use nur\t\TestCase;
|
|
|
|
class AodefTest extends TestCase {
|
|
protected static function assertArg(
|
|
Aodef $aodef,
|
|
array $options,
|
|
bool $haveShortOptions, bool $haveLongOptions, bool $isCommand,
|
|
bool $haveArgs, ?int $minArgs, ?int $maxArgs, ?string $argsdesc
|
|
) {
|
|
$aodef->setup1();
|
|
$aodef->setup2();
|
|
#var_export($aodef->debugInfos()); #XXX
|
|
self::assertSame($options, $aodef->getOptions());
|
|
self::assertSame($haveShortOptions, $aodef->haveShortOptions, "haveShortOptions");
|
|
self::assertSame($haveLongOptions, $aodef->haveLongOptions, "haveLongOptions");
|
|
self::assertSame($isCommand, $aodef->isCommand, "isCommand");
|
|
self::assertSame($haveArgs, $aodef->haveArgs, "haveArgs");
|
|
self::assertSame($minArgs, $aodef->minArgs, "minArgs");
|
|
self::assertSame($maxArgs, $aodef->maxArgs, "maxArgs");
|
|
self::assertSame($argsdesc, $aodef->argsdesc, "argsdesc");
|
|
}
|
|
|
|
function testArgsNone() {
|
|
$aodef = new Aodef(["-o"]);
|
|
self::assertArg($aodef,
|
|
["-o"],
|
|
true, false, false,
|
|
false, 0, 0, "");
|
|
|
|
$aodef = new Aodef(["--longo"]);
|
|
self::assertArg($aodef,
|
|
["--longo"],
|
|
false, true, false,
|
|
false, 0, 0, "");
|
|
|
|
$aodef = new Aodef(["-o", "--longo"]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
false, 0, 0, "");
|
|
}
|
|
|
|
function testArgsMandatory() {
|
|
$aodef = new Aodef(["-o:", "--longo"]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-a:", "-b:"]);
|
|
self::assertArg($aodef,
|
|
["-a", "-b"],
|
|
true, false, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-a:", "-b::"]);
|
|
self::assertArg($aodef,
|
|
["-a", "-b"],
|
|
true, false, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-a::", "-b:"]);
|
|
self::assertArg($aodef,
|
|
["-a", "-b"],
|
|
true, false, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => true]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => 1]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => "value"]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, 1, "VALUE");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => ["value"]]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, 1, "VALUE");
|
|
}
|
|
|
|
function testArgsOptional() {
|
|
$aodef = new Aodef(["-o::", "--longo"]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 0, 1, "[VALUE]");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => [["value"]]]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 0, 1, "[VALUE]");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => [[null]]]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 0, PHP_INT_MAX, "[VALUEs...]");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => ["value", null]]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, PHP_INT_MAX, "VALUE [VALUEs...]");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => "*"]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 0, PHP_INT_MAX, "[VALUEs...]");
|
|
|
|
$aodef = new Aodef(["-o", "--longo", "args" => "+"]);
|
|
self::assertArg($aodef,
|
|
["-o", "--longo"],
|
|
true, true, false,
|
|
true, 1, PHP_INT_MAX, "VALUE [VALUEs...]");
|
|
}
|
|
|
|
function testMerge() {
|
|
$BASE = ["-o:", "--longo"];
|
|
|
|
$aodef = new Aodef([
|
|
"merge" => $BASE,
|
|
"add" => ["-a", "--longa"],
|
|
"remove" => ["-o", "--longo"],
|
|
]);
|
|
self::assertArg($aodef,
|
|
["-a", "--longa"],
|
|
true, true, false,
|
|
false, 0, 0, "");
|
|
|
|
$aodef = new Aodef([
|
|
"merge" => $BASE,
|
|
"add" => ["-a", "--longa"],
|
|
"remove" => ["-o", "--longo"],
|
|
"-x",
|
|
]);
|
|
self::assertArg($aodef,
|
|
["-a", "--longa", "-x"],
|
|
true, true, false,
|
|
false, 0, 0, "");
|
|
}
|
|
}
|