diff --git a/src/fsfw/util/dataWrapper.h b/src/fsfw/util/dataWrapper.h index 6a3fd5dc..bd69a787 100644 --- a/src/fsfw/util/dataWrapper.h +++ b/src/fsfw/util/dataWrapper.h @@ -9,6 +9,8 @@ namespace util { +using BufPair = std::pair; + struct RawData { RawData() = default; const uint8_t* data = nullptr; @@ -23,7 +25,6 @@ union DataUnion { }; struct DataWrapper { - using BufPairT = std::pair; DataWrapper() = default; @@ -31,7 +32,7 @@ struct DataWrapper { setRawData({data, size}); } - explicit DataWrapper(BufPairT raw): type(DataTypes::RAW) { + explicit DataWrapper(BufPair raw): type(DataTypes::RAW) { setRawData(raw); } @@ -42,7 +43,6 @@ struct DataWrapper { DataTypes type = DataTypes::NONE; DataUnion dataUnion; - [[nodiscard]] size_t getLength() const { if (type == DataTypes::RAW) { return dataUnion.raw.len; @@ -59,8 +59,12 @@ struct DataWrapper { } return false; } +<<<<<<< HEAD void setRawData(BufPairT bufPair) { +======= + void setRawData(BufPair bufPair) { +>>>>>>> upstream/mueller/data-wrapper type = DataTypes::RAW; dataUnion.raw.data = bufPair.first; dataUnion.raw.len = bufPair.second; diff --git a/unittests/util/testDataWrapper.cpp b/unittests/util/testDataWrapper.cpp index 14ba287a..72931d90 100644 --- a/unittests/util/testDataWrapper.cpp +++ b/unittests/util/testDataWrapper.cpp @@ -12,21 +12,48 @@ TEST_CASE("Data Wrapper", "[util]") { } SECTION("Set Raw Data") { + util::DataWrapper* instance = &wrapper; + bool deleteInst = false; REQUIRE(wrapper.isNull()); std::array data = {1, 2, 3, 4}; - wrapper.setRawData({data.data(), data.size()}); - REQUIRE(not wrapper.isNull()); - REQUIRE(wrapper.type == util::DataTypes::RAW); - REQUIRE(wrapper.dataUnion.raw.data == data.data()); - REQUIRE(wrapper.dataUnion.raw.len == data.size()); + SECTION("Setter") { + wrapper.setRawData({data.data(), data.size()}); + } + SECTION("Direct Construction Pair") { + instance = new util::DataWrapper(util::BufPair(data.data(), data.size())); + deleteInst = true; + } + SECTION("Direct Construction Single Args") { + instance = new util::DataWrapper(data.data(), data.size()); + deleteInst = true; + } + REQUIRE(not instance->isNull()); + REQUIRE(instance->type == util::DataTypes::RAW); + REQUIRE(instance->dataUnion.raw.data == data.data()); + REQUIRE(instance->dataUnion.raw.len == data.size()); + if(deleteInst) { + delete instance; + } } SECTION("Simple Serializable") { - REQUIRE(wrapper.isNull()); + util::DataWrapper* instance = &wrapper; + bool deleteInst = false; + REQUIRE(instance->isNull()); SimpleSerializable serializable; - wrapper.setSerializable(serializable); - REQUIRE(not wrapper.isNull()); - REQUIRE(wrapper.type == util::DataTypes::SERIALIZABLE); - REQUIRE(wrapper.dataUnion.serializable == &serializable); + SECTION("Setter") { + wrapper.setSerializable(serializable); + } + SECTION("Direct Construction") { + instance = new util::DataWrapper(serializable); + deleteInst = true; + } + + REQUIRE(not instance->isNull()); + REQUIRE(instance->type == util::DataTypes::SERIALIZABLE); + REQUIRE(instance->dataUnion.serializable == &serializable); + if(deleteInst) { + delete instance; + } } } \ No newline at end of file