From 921c500a02f1c3926318732bbee80a0c79b55c1f Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Mon, 8 Jan 2024 00:53:56 +0100 Subject: codec: Bringing testing into a proper state and getting all tests except one to run --- modules/codec/.nix/derivation.nix | 4 ++++ modules/codec/c++/csv.h | 27 ++++++++++++++++++++++++--- modules/codec/tests/codec.cpp | 2 +- modules/codec/tests/csv.cpp | 32 +++++++++----------------------- 4 files changed, 38 insertions(+), 27 deletions(-) (limited to 'modules') diff --git a/modules/codec/.nix/derivation.nix b/modules/codec/.nix/derivation.nix index 7111be1..db27a5c 100644 --- a/modules/codec/.nix/derivation.nix +++ b/modules/codec/.nix/derivation.nix @@ -25,6 +25,10 @@ in stdenv.mkDerivation { ]; doCheck = true; + checkPhase = '' + scons test + ./bin/tests + ''; outputs = ["out" "dev"]; } diff --git a/modules/codec/c++/csv.h b/modules/codec/c++/csv.h index f40376f..1664c31 100644 --- a/modules/codec/c++/csv.h +++ b/modules/codec/c++/csv.h @@ -25,14 +25,14 @@ struct csv_encode, FromDecode> { static error_or encode(const data& from, data& to){ if constexpr (is_struct::value){ - auto eov = csv_encode::encode_header(to); + auto eov = csv_encode::encode_header(to); if(eov.is_error()){ return eov; } } for(std::size_t i = 0; i < from.size(); ++i){ - auto eov = csv_encode::encode(from.at(i), to); + auto eov = csv_encode::encode(from.at(i), to); if(eov.is_error()){ return eov; } @@ -42,6 +42,21 @@ struct csv_encode, FromDecode> { } }; +template +struct csv_encode...>, FromDecode> { + using Schema = schema::Struct...>; + + static error_or encode_header(const data& to){ + return make_error(); + } + + static error_or encode(const data& from, data& to){ + + + return make_error(); + } +}; + template struct csv_encode { using Schema = schema::String; @@ -63,6 +78,12 @@ struct csv_encode, FromDecode> { }; } +template +class data { + private: + public: +}; + template class codec { static_assert(is_array::value, "Only an Array is allowed as a base value"); @@ -74,7 +95,7 @@ public: } template - static error_or decode(data& from, data& to){ + static error_or decode(data& from, data& to){ return make_error(); } diff --git a/modules/codec/tests/codec.cpp b/modules/codec/tests/codec.cpp index fb599e3..e2a9958 100644 --- a/modules/codec/tests/codec.cpp +++ b/modules/codec/tests/codec.cpp @@ -75,7 +75,7 @@ SAW_TEST("One dimensional Array Add"){ arr.add(7); SAW_EXPECT(arr.size() == 6u, "Array size is not 6u. Expected that data stays correct"); - SAW_EXPECT(arr.at(6u).get() == 7, "Array at 6u is not 7. Expected that data stays correct"); + SAW_EXPECT(arr.at(5u).get() == 7, "Array at 5u is not 7. Expected that data stays correct"); } SAW_TEST("Two Dimensional Array") { diff --git a/modules/codec/tests/csv.cpp b/modules/codec/tests/csv.cpp index 507d4cb..6c28533 100644 --- a/modules/codec/tests/csv.cpp +++ b/modules/codec/tests/csv.cpp @@ -8,40 +8,26 @@ namespace { namespace schema { using namespace saw::schema; -using ZeroDimArray = Array; -using OneDimArray = Array; -using TwoDimArray = Array; -using ThreeDimArray = Array; - using TestStruct = Struct< Member, Member >; -using TestUnion = Union< - Member, - Member ->; - -using TestTuple = Tuple< - TwoDimArray, - UInt64 ->; - -using TestInt32Pair = Tuple< - Int32, - Int32 +using TestArray = Array< + TestStruct >; SAW_TEST("Codec Csv Encode Basic"){ using namespace saw; - data native_data; - native_data.template get<"string">().set("foo"); - native_data.template get<"number">().set(140u); + data native_data{1}; + auto& row = native_data.at(0); + + row.template get<"string">().set("foo"); + row.template get<"number">().set(140u); - data csv_data; - codec csv_codec; + data csv_data; + codec csv_codec; auto eov = csv_codec.encode(native_data, csv_data); SAW_EXPECT(eov.is_value(), "Couldn't encode data"); -- cgit v1.2.3