summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bx/tests/tokenizecmd_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bx/tests/tokenizecmd_test.cpp')
-rw-r--r--3rdparty/bx/tests/tokenizecmd_test.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/3rdparty/bx/tests/tokenizecmd_test.cpp b/3rdparty/bx/tests/tokenizecmd_test.cpp
new file mode 100644
index 00000000000..32e927bec1f
--- /dev/null
+++ b/3rdparty/bx/tests/tokenizecmd_test.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2012-2016 Branimir Karadzic. All rights reserved.
+ * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
+ */
+
+#include "test.h"
+#include <bx/tokenizecmd.h>
+#include <bx/commandline.h>
+#include <string.h>
+
+TEST(commandLine)
+{
+ const char* args[] =
+ {
+ "-s",
+ "--long",
+ };
+
+ bx::CommandLine cmdLine(BX_COUNTOF(args), args);
+
+ CHECK(cmdLine.hasArg("long") );
+ CHECK(cmdLine.hasArg('s') );
+
+ // non-existing argument
+ CHECK(!cmdLine.hasArg('x') );
+}
+
+TEST(tokenizeCommandLine)
+{
+#if 0
+ const char* input[] =
+ {
+ " ",
+ "\\",
+// "\"a b c\" d e",
+ "\"ab\\\"c\" \"\\\\\" d",
+ "a\\\\\\b d\"e f\"g h",
+ "a\\\\\\\"b c d",
+ "a\\\\\\\\\"b c\" d e",
+ };
+
+ const int expected_argc[] =
+ {
+ 0,
+ 0,
+// 3,
+ 3,
+ 3,
+ 3,
+ 3
+ };
+
+ const char* expected_results[] =
+ {
+ "a b c", "d", "e",
+ "ab\"c", "\\", "d",
+ "a\\\\\\b", "de fg", "h",
+ "a\\\"b", "c", "d",
+ "a\\\\b c", "d", "e",
+ };
+
+ const char** expected_argv[] =
+ {
+ NULL,
+ NULL,
+// &expected_results[0],
+ &expected_results[3],
+ &expected_results[6],
+ &expected_results[9],
+ &expected_results[12],
+ };
+
+ for (uint32_t ii = 0; ii < BX_COUNTOF(exptected_argv); ++ii)
+ {
+ printf("x\n");
+ char commandLine[1024];
+ uint32_t size = BX_COUNTOF(commandLine);
+ char* argv[50];
+ int32_t argc;
+ bx::tokenizeCommandLine(input[ii], commandLine, size, argc, argv, BX_COUNTOF(argv) );
+ printf("\n%d (%d): %s %s\n", ii, argc, input[ii], expected_argc[ii] == argc ? "" : "FAILED!");
+ for (uint32_t jj = 0; jj < argc; ++jj)
+ {
+ printf("\t%d: {%s} %s\n"
+ , jj
+ , argv[jj]
+ , jj < argc ? (0==strcmp(argv[jj], expected_argv[ii][jj]) ? "" : "FAILED!") : "FAILED!"
+ );
+ }
+ }
+#endif // 0
+}