diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-01-08 00:53:56 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-01-08 00:53:56 +0100 |
commit | 921c500a02f1c3926318732bbee80a0c79b55c1f (patch) | |
tree | c51cd12cec10741484aca0587f0ee0a1657d25b6 | |
parent | b8a5458a7493de17516bdb172f6a3a208dfc5eed (diff) |
codec: Bringing testing into a proper state and getting all tests except
one to run
-rw-r--r-- | modules/codec/.nix/derivation.nix | 4 | ||||
-rw-r--r-- | modules/codec/c++/csv.h | 27 | ||||
-rw-r--r-- | modules/codec/tests/codec.cpp | 2 | ||||
-rw-r--r-- | modules/codec/tests/csv.cpp | 32 |
4 files changed, 38 insertions, 27 deletions
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<schema::Array<T,Dim>, FromDecode> { static error_or<void> encode(const data<Schema, FromDecode>& from, data<Schema, encode::Csv>& to){ if constexpr (is_struct<T>::value){ - auto eov = csv_encode<T>::encode_header(to); + auto eov = csv_encode<T,FromDecode>::encode_header(to); if(eov.is_error()){ return eov; } } for(std::size_t i = 0; i < from.size(); ++i){ - auto eov = csv_encode<T>::encode(from.at(i), to); + auto eov = csv_encode<T,FromDecode>::encode(from.at(i), to); if(eov.is_error()){ return eov; } @@ -42,6 +42,21 @@ struct csv_encode<schema::Array<T,Dim>, FromDecode> { } }; +template<typename... V, string_literal... K, typename FromDecode> +struct csv_encode<schema::Struct<schema::Member<V,K>...>, FromDecode> { + using Schema = schema::Struct<schema::Member<V,K>...>; + + static error_or<void> encode_header(const data<Schema, encode::Csv>& to){ + return make_error<err::not_implemented>(); + } + + static error_or<void> encode(const data<Schema, FromDecode>& from, data<Schema,encode::Csv>& to){ + + + return make_error<err::not_implemented>(); + } +}; + template<typename FromDecode> struct csv_encode<schema::String, FromDecode> { using Schema = schema::String; @@ -64,6 +79,12 @@ struct csv_encode<schema::Primitive<T,N>, FromDecode> { } template<typename Schema> +class data<Schema, encode::Csv> { + private: + public: +}; + +template<typename Schema> class codec<Schema, encode::Csv> { static_assert(is_array<Schema>::value, "Only an Array is allowed as a base value"); public: @@ -74,7 +95,7 @@ public: } template<typename ToDecode> - static error_or<void> decode(data<Schema,encode::Csv>& from, data<Schema, FromEncode>& to){ + static error_or<void> decode(data<Schema,encode::Csv>& from, data<Schema, ToDecode>& to){ return make_error<err::not_implemented>(); } 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<Int32,0>; -using OneDimArray = Array<Int32,1>; -using TwoDimArray = Array<Int32,2>; -using ThreeDimArray = Array<Int32,3>; - using TestStruct = Struct< Member<String, "string">, Member<UInt64, "number"> >; -using TestUnion = Union< - Member<TwoDimArray, "two_dim_array">, - Member<UInt64, "number"> ->; - -using TestTuple = Tuple< - TwoDimArray, - UInt64 ->; - -using TestInt32Pair = Tuple< - Int32, - Int32 +using TestArray = Array< + TestStruct >; SAW_TEST("Codec Csv Encode Basic"){ using namespace saw; - data <TestStruct, encode::Native> native_data; - native_data.template get<"string">().set("foo"); - native_data.template get<"number">().set(140u); + data <TestArray, encode::Native> native_data{1}; + auto& row = native_data.at(0); + + row.template get<"string">().set("foo"); + row.template get<"number">().set(140u); - data <TestStruct, encode::Csv> csv_data; - codec<TestStruct, encode::Csv> csv_codec; + data <TestArray, encode::Csv> csv_data; + codec<TestArray, encode::Csv> csv_codec; auto eov = csv_codec.encode(native_data, csv_data); SAW_EXPECT(eov.is_value(), "Couldn't encode data"); |