test: Add unit test for CommandLineParseCommaSeparatedValuesEx
#include <winpr/cmdline.h>
#include <winpr/strlst.h>
-static const char* testArgv[] = {
- "mstsc.exe", "+z", "/w:1024", "/h:768", "/bpp:32", "/admin", "/multimon",
- "+fonts", "-wallpaper", "/v:localhost:3389", 0
-};
+static const char* testArgv[] = { "mstsc.exe",
+ "+z",
+ "/w:1024",
+ "/h:768",
+ "/bpp:32",
+ "/admin",
+ "/multimon",
+ "+fonts",
+ "-wallpaper",
+ "/v:localhost:3389",
+ "/valuelist:value1,value2",
+ "/valuelist-empty:",
+ 0 };
int TestCmdLine(int argc, char* argv[])
{
@@ -64,6 +73,11 @@ int TestCmdLine(int argc, char* argv[])
"certificate name" },
{ "cert-ignore", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL,
"ignore certificate" },
+ { "valuelist", COMMAND_LINE_VALUE_REQUIRED, "<val1>,<val2>", NULL, NULL, -1, NULL,
+ "List of comma separated values." },
+ { "valuelist-empty", COMMAND_LINE_VALUE_REQUIRED, "<val1>,<val2>", NULL, NULL, -1, NULL,
+ "List of comma separated values. Used to test correct behavior if an empty list was "
+ "passed." },
{ "version", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_VERSION, NULL, NULL, NULL, -1,
NULL, "print version" },
{ "help", COMMAND_LINE_VALUE_FLAG | COMMAND_LINE_PRINT_HELP, NULL, NULL, NULL, -1, "?",
@@ -187,6 +201,36 @@ int TestCmdLine(int argc, char* argv[])
if (errno != 0)
goto out;
}
+ CommandLineSwitchCase(arg, "valuelist")
+ {
+ char** p;
+ size_t count;
+ p = CommandLineParseCommaSeparatedValuesEx(arg->Name, arg->Value, &count);
+ free(p);
+
+ if (!p || count != 3)
+ {
+ printf("CommandLineParseCommaSeparatedValuesEx: invalid p or count (%" PRIuz
+ "!=3)\n",
+ count);
+ goto out;
+ }
+ }
+ CommandLineSwitchCase(arg, "valuelist-empty")
+ {
+ char** p;
+ size_t count;
+ p = CommandLineParseCommaSeparatedValuesEx(arg->Name, arg->Value, &count);
+ free(p);
+
+ if (!p || count != 1)
+ {
+ printf("CommandLineParseCommaSeparatedValuesEx: invalid p or count (%" PRIuz
+ "!=1)\n",
+ count);
+ goto out;
+ }
+ }
CommandLineSwitchDefault(arg)
{
}
