summaryrefslogtreecommitdiff
path: root/test/argparser_test.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2025-02-23 21:20:47 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2025-02-23 21:35:09 +0100
commit7107ac464f3bf1b89d6b759c20a09ecc323f8cb0 (patch)
treedfb824c6e1ca66a32a16f2a6358695b58ca656a8 /test/argparser_test.cc
parent5809172695f0b174ae036dc829e6d3176d926342 (diff)
Diffstat (limited to 'test/argparser_test.cc')
-rw-r--r--test/argparser_test.cc49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/argparser_test.cc b/test/argparser_test.cc
new file mode 100644
index 0000000..842b214
--- /dev/null
+++ b/test/argparser_test.cc
@@ -0,0 +1,49 @@
+#include <uunit.h>
+
+#include <argparser.h>
+
+#include <iostream>
+#include <string>
+
+class ArgParserTest
+ : public uUnit
+{
+public:
+ ArgParserTest()
+ {
+ uTEST(ArgParserTest::test);
+ }
+
+ void test()
+ {
+ const char* argv[] =
+ {
+ "app-name",
+ "-x",
+ "42"
+ };
+ int argc = sizeof(argv)/sizeof(*argv);
+ ArgParser<int, std::optional<int>> args;
+
+ args.add("-x", "--some-x",
+ std::function([](int i)
+ {
+ std::cout << "int: " << i << "\n";
+ return 0;
+ }),
+ "Helptext for -x,--some-x");
+
+ args.add("-X", "--opt-x",
+ std::function([](std::optional<int> i)
+ {
+ std::cout << "opt<int>: " << (i?std::to_string(*i):"none") << "\n";
+ return 0;
+ }),
+ "Helptext for -X,--opt-x");
+
+ args.parse(argc, argv);
+ }
+};
+
+// Registers the fixture into the 'registry'
+static ArgParserTest test;