diff --git a/src/dobj/private/DObject.cpp b/src/dobj/private/DObject.cpp index c1b1746..0ce0bed 100644 --- a/src/dobj/private/DObject.cpp +++ b/src/dobj/private/DObject.cpp @@ -48,6 +48,19 @@ bool DObject::isDebuggingEnabled() const noexcept { return debugEnabled_; } +/** +* @breif Sets an error code and returns the old one +*/ +int DObject::setErrorCode(int code) noexcept { + int oldCode = errorCode_; + errorCode_ = code; + return oldCode; +} + +int DObject::getErrorCode() const noexcept { + return errorCode_; +} + /** * @brief Registers a plugin with the DObject. */ @@ -203,4 +216,4 @@ std::ostream& operator<<(std::ostream& os, const DObject& obj) { os << "\n Data Type: " << obj.dataTypeMap.at(obj.data_.index()); os << "\n Plugins Registered: " << obj.plugins_.size() << "\n"; return os; -} \ No newline at end of file +} diff --git a/src/dobj/public/DObject.h b/src/dobj/public/DObject.h index 9a3102a..4261610 100644 --- a/src/dobj/public/DObject.h +++ b/src/dobj/public/DObject.h @@ -96,6 +96,7 @@ public: {18, "vector>"} }; + /** * @brief Placeholder type for plugins. * @@ -165,6 +166,21 @@ public: */ bool isDebuggingEnabled() const noexcept; + /** + * @breif Set error code tracked by the DOBject + * + * @return The previous error code + */ + int setErrorCode(int code) noexcept; + + /** + * @brief Get the error code tracked by the DObject + * + * @return The error code + */ + int getErrorCode() const noexcept; + + /** * @brief Registers a plugin with the DObject. * @@ -214,6 +230,7 @@ public: private: DataType data_; ///< The main data stored in the DObject. bool debugEnabled_ = false; ///< Indicates whether debugging is enabled. + int errorCode_ = 0; ///< Error code tracked by the DObject. std::map plugins_; ///< Registry for dynamically registered plugins. }; diff --git a/tests/dobj/DObjectTest.cpp b/tests/dobj/DObjectTest.cpp index 79e7ac6..1db09ed 100644 --- a/tests/dobj/DObjectTest.cpp +++ b/tests/dobj/DObjectTest.cpp @@ -60,6 +60,17 @@ TEST_F(DObjectTest, DebuggingFlag) { EXPECT_FALSE(defaultObject.isDebuggingEnabled()); } +TEST_F(DObjectTest, ErrorCodeSetteGetter) { + int prevCode; + prevCode = defaultObject.setErrorCode(1); + EXPECT_EQ(prevCode, 0); + prevCode = defaultObject.setErrorCode(2); + EXPECT_EQ(prevCode, 1); + int getCode; + getCode = defaultObject.getErrorCode(); + EXPECT_EQ(getCode, 2); +} + /** * @test Basic Integration Test */ @@ -72,16 +83,4 @@ TEST_F(DObjectTest, IntegrationTest) { 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); -// }