#include #include #include "Arguments.hh" #include "Encoding.hh" #include "UnitTest.hh" using namespace std; using namespace phosg; int main(int, char**) { Arguments a("pos0 --named1 300 --named2=value2 4.0 --int3=40000 --float4=2.0"); expect_raises(invalid_argument, [&]() { a.assert_none_unused(); }); // Positional arguments expect_eq("pos0", a.get(0)); expect_eq("300", a.get(1)); expect_eq(300, a.get(1)); expect_eq(300, a.get(1)); expect_raises(invalid_argument, [&]() { a.get(1); }); expect_raises(invalid_argument, [&]() { a.get(1); }); expect_eq(4.0f, a.get(2)); expect_eq(4.0, a.get(2)); expect_raises(out_of_range, [&]() { a.get(3); }); expect_raises(invalid_argument, [&]() { a.assert_none_unused(); }); // Named arguments expect_raises(out_of_range, [&]() { a.get("missing"); }); expect_eq(true, a.get("named1")); expect_eq(false, a.get("missing")); expect_eq("value2", a.get("named2")); expect_eq(40000, a.get("int3")); expect_eq(40000, a.get("int3")); expect_raises(invalid_argument, [&]() { a.get("int3"); }); expect_raises(invalid_argument, [&]() { a.get("int3"); }); expect_eq(2.0f, a.get("float4")); expect_eq(2.0, a.get("float4")); a.assert_none_unused(); fwrite_fmt(stdout, "ArgumentTest: all tests passed\n"); return 0; }