#include #include "../c++/args.hpp" namespace { namespace sch { using namespace saw::schema; using ArgsStruct = Struct< Member, Member >; using ArgsTuple = Tuple< Int32, String >; } SAW_TEST("Codec Args Decode Basic"){ using namespace saw; std::array foo { "example", "5", "--file", "./foo.bar", "ex" }; std::array bar; for(uint64_t i = 0; i < bar.size(); ++i){ bar[i] = &foo[i][0]; } data,encode::Args> dat_args{ 5, &bar[0] }; data> dat_nat; codec, encode::Args> args_codec; auto eov = args_codec.decode(dat_args, dat_nat); SAW_EOV_EXPECT(eov, "Couldn't decode data. "); auto& prog = dat_nat.template get<"program">(); auto& str = dat_nat.template get<"args">(); auto& tup = dat_nat.template get<"positionals">(); SAW_EXPECT(prog == "example", "Wrong program name"); SAW_EXPECT(str.template get<"file">() == "./foo.bar", "Wrong file path parsing"); SAW_EXPECT(str.template get<"oawinu">() == "", "Wrong oawinu dummy value."); SAW_EXPECT(tup.template get<0>() == data{5}, "Wrong number"); SAW_EXPECT(tup.template get<1>() == "ex", "Wrong String"); } }