diff --git a/tests/dobj/DObjectTest.cpp b/tests/dobj/DObjectTest.cpp new file mode 100644 index 0000000..79e7ac6 --- /dev/null +++ b/tests/dobj/DObjectTest.cpp @@ -0,0 +1,87 @@ +#include +#include "DObject.h" +#include "Metadata.h" + +/** + * @file DObjectTest.cpp + * @brief Unit tests for the DObject class. + */ + +/** + * @brief Test suite for the DObject class. + */ +class DObjectTest : public ::testing::Test { +protected: + DObject defaultObject; + DObject initializedObject; + + void SetUp() override { + // Create a DObject with initial data and metadata + DObject initializedObject(std::vector{1.0f, 2.0f, 3.0f, 4.0f}); + } +}; + +/** + * @test Verify default constructor initializes correctly. + */ +TEST_F(DObjectTest, DefaultConstructor) { + EXPECT_NO_THROW(DObject()); + EXPECT_NO_THROW(auto data = defaultObject.getData()); + EXPECT_FALSE(defaultObject.isDebuggingEnabled()); +} + +/** + * @test Verify constructor initializes with provided data and metadata. + */ +TEST_F(DObjectTest, ParameterizedConstructor) { + DObject obj(std::vector{1, 2, 3}); + + EXPECT_NO_THROW(obj.getData()); + EXPECT_EQ(std::get>(obj.getData()), std::vector({1, 2, 3})); +} + +/** + * @test Verify getter and setter for data. + */ +TEST_F(DObjectTest, DataSetterGetter) { + std::vector newData = {3.14, 2.71, 1.61}; + EXPECT_NO_THROW(defaultObject.setData(newData)); + EXPECT_EQ(std::get>(defaultObject.getData()), newData); +} + +/** + * @test Verify enabling and disabling debugging. + */ +TEST_F(DObjectTest, DebuggingFlag) { + EXPECT_FALSE(defaultObject.isDebuggingEnabled()); + defaultObject.setDebugging(true); + EXPECT_TRUE(defaultObject.isDebuggingEnabled()); + defaultObject.setDebugging(false); + EXPECT_FALSE(defaultObject.isDebuggingEnabled()); +} + +/** + * @test Basic Integration Test + */ +TEST_F(DObjectTest, IntegrationTest) { + float data = 55.86868; + DObject obj; + obj.setData(data); + float newData; + newData = std::get(obj.getData()); + EXPECT_EQ(data, newData); +} + +// /** +// * @test Verify human-readable summary. +// */ +// TEST_F(DObjectTest, HumanReadableOutput) { +// std::ostringstream oss; +// oss << initializedObject; + +// std::string output = oss.str(); +// EXPECT_TRUE(output.find("Debugging Enabled: Yes") != std::string::npos); +// EXPECT_TRUE(output.find("Metadata: ") != std::string::npos); +// EXPECT_TRUE(output.find("Data: ") != std::string::npos); +// EXPECT_TRUE(output.find("Plugins Registered: 0") != std::string::npos); +// }