From 2a9b7c5a542f37d5115eb9c22d91b4b81a04085f Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Mon, 29 Jul 2024 16:44:10 +0200 Subject: wip args --- modules/codec/tests/args.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 modules/codec/tests/args.cpp (limited to 'modules/codec/tests/args.cpp') diff --git a/modules/codec/tests/args.cpp b/modules/codec/tests/args.cpp new file mode 100644 index 0000000..ed6d918 --- /dev/null +++ b/modules/codec/tests/args.cpp @@ -0,0 +1,55 @@ +#include +#include "../c++/args.hpp" + +namespace { +namespace sch { +using namespace saw::schema; + +using ArgsStruct = Struct< + Member +>; + +using ArgsTuple = Tuple< + Int32, + String +>; +} + +SAW_TEST("Codec Args Decode"){ + using namespace saw; + + using Schema = sch::Args; + + 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{ + &bar[0],5 + }; + data> dat_nat; + + codec, encode::Args> args_codec; + + auto eov = args_codec.decode(dat_args, dat_nat); + SAW_EXPECT(eov.is_value(), "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(tup.template get<0>() == data{5}, "Wrong number"); + SAW_EXPECT(tup.template get<1>() == "ex", "Wrong String"); +} + +} -- cgit v1.2.3