|
- #include <vector>
- #include <gtest/gtest.h>
-
- #include <cppargs.h>
-
- using parser = ::cppargs::simple_parser;
-
- TEST(simple_parser, short_name_seperate_arg)
- {
- std::string s;
- parser p(
- nullptr,
- parser::make_reference_option({ 's', "string" }, s)
- );
-
- std::vector<const char*> args({
- "/fuu/bar/exe", "-s", "fuu"
- });
- p.parse(static_cast<int>(args.size()), args.data());
-
- EXPECT_EQ(s, "fuu");
- }
-
- TEST(simple_parser, long_name_seperate_arg)
- {
- int i;
- parser p(
- nullptr,
- parser::make_reference_option({ 'i', "int" }, i)
- );
-
- std::vector<const char*> args({
- "/fuu/bar/exe", "--int", "123"
- });
- p.parse(static_cast<int>(args.size()), args.data());
-
- EXPECT_EQ(i, 123);
- }
-
- TEST(simple_parser, short_name_same_arg)
- {
- double d;
- parser p(
- nullptr,
- parser::make_reference_option({ 'd', "double" }, d)
- );
-
- std::vector<const char*> args({
- "/fuu/bar/exe", "-d0.2"
- });
- p.parse(static_cast<int>(args.size()), args.data());
-
- EXPECT_EQ(d, 0.2);
- }
-
- TEST(simple_parser, long_name_same_arg)
- {
- std::string s;
- parser p(
- nullptr,
- parser::make_reference_option({ 's', "string" }, s)
- );
-
- std::vector<const char*> args({
- "/fuu/bar/exe", "--string=fuubar"
- });
- p.parse(static_cast<int>(args.size()), args.data());
-
- EXPECT_EQ(s, "fuubar");
- }
-
- TEST(simple_parser, vector_extra_arg)
- {
- std::vector<int> vec;
- parser p(
- parser::make_predicate_option({ }, [](auto){ }),
- parser::make_reference_option({ 'v', "vec" }, vec)
- );
-
- std::vector<const char*> args({
- "/fuu/bar/exe", "--vec", "1", "2", "3", "4", "5", "-i"
- });
- p.parse(static_cast<int>(args.size()), args.data());
-
- EXPECT_EQ(vec, std::vector<int>({ 1, 2, 3, 4, 5 }));
- }
-
- TEST(simple_parser, vector_same_arg)
- {
- std::vector<int> vec;
- parser p(
- parser::make_predicate_option({ }, [](auto){ }),
- parser::make_reference_option({ 'v', "vec" }, vec)
- );
-
- std::vector<const char*> args({
- "/fuu/bar/exe", "--vec=1,2,3,4,5", "-i"
- });
- p.parse(static_cast<int>(args.size()), args.data());
-
- EXPECT_EQ(vec, std::vector<int>({ 1, 2, 3, 4, 5 }));
- }
|