Files
SERiF/tests/dobj/DObjectTest.cpp
Emily Boudreaux c304d002bb feat(dobj): added error tracking to DObject
DObject now includes an error code so that errors can be tracked with return values from functions
2025-02-04 12:55:49 -05:00

87 lines
2.1 KiB
C++

#include <gtest/gtest.h>
#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<float>{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<int>{1, 2, 3});
EXPECT_NO_THROW(obj.getData());
EXPECT_EQ(std::get<std::vector<int>>(obj.getData()), std::vector<int>({1, 2, 3}));
}
/**
* @test Verify getter and setter for data.
*/
TEST_F(DObjectTest, DataSetterGetter) {
std::vector<double> newData = {3.14, 2.71, 1.61};
EXPECT_NO_THROW(defaultObject.setData(newData));
EXPECT_EQ(std::get<std::vector<double>>(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_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
*/
TEST_F(DObjectTest, IntegrationTest) {
float data = 55.86868;
DObject obj;
obj.setData(data);
float newData;
newData = std::get<float>(obj.getData());
EXPECT_EQ(data, newData);
}