summaryrefslogtreecommitdiff
path: root/modules/codec
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-01-08 00:53:56 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-01-08 00:53:56 +0100
commit921c500a02f1c3926318732bbee80a0c79b55c1f (patch)
treec51cd12cec10741484aca0587f0ee0a1657d25b6 /modules/codec
parentb8a5458a7493de17516bdb172f6a3a208dfc5eed (diff)
codec: Bringing testing into a proper state and getting all tests except
one to run
Diffstat (limited to 'modules/codec')
-rw-r--r--modules/codec/.nix/derivation.nix4
-rw-r--r--modules/codec/c++/csv.h27
-rw-r--r--modules/codec/tests/codec.cpp2
-rw-r--r--modules/codec/tests/csv.cpp32
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");