added nine simple tests for the metadata class which is part of the dobj modules. These tests will be expanded in the future
159 lines
4.1 KiB
C++
159 lines
4.1 KiB
C++
#include <gtest/gtest.h>
|
|
#include "Metadata.h"
|
|
|
|
/**
|
|
* @file MetadataTest.cpp
|
|
* @brief Unit tests and integration tests for the Metadata class.
|
|
*/
|
|
|
|
/**
|
|
* @brief Test suite for the Metadata class.
|
|
*/
|
|
class MetadataTest : public ::testing::Test {
|
|
protected:
|
|
void SetUp() override {
|
|
// Common setup for tests (if needed)
|
|
}
|
|
|
|
void TearDown() override {
|
|
// Clean up after tests (if needed)
|
|
}
|
|
};
|
|
|
|
/**
|
|
* @test Verify default constructor initializes correctly.
|
|
*/
|
|
TEST_F(MetadataTest, DefaultConstructor) {
|
|
Metadata metadata;
|
|
|
|
EXPECT_EQ(metadata.getByteSize(), 0);
|
|
EXPECT_EQ(metadata.getDataType(), "");
|
|
EXPECT_TRUE(metadata.getDimensions().empty());
|
|
EXPECT_FALSE(metadata.isDebugEnabled());
|
|
}
|
|
|
|
/**
|
|
* @test Verify parameterized constructor initializes correctly.
|
|
*/
|
|
TEST_F(MetadataTest, ParameterizedConstructor) {
|
|
std::vector<std::size_t> dimensions = {3, 4, 5};
|
|
Metadata metadata(120, "float", dimensions, true);
|
|
|
|
EXPECT_EQ(metadata.getByteSize(), 120);
|
|
EXPECT_EQ(metadata.getDataType(), "float");
|
|
EXPECT_EQ(metadata.getDimensions(), dimensions);
|
|
EXPECT_TRUE(metadata.isDebugEnabled());
|
|
}
|
|
|
|
/**
|
|
* @test Verify setters and getters for byte size.
|
|
*/
|
|
TEST_F(MetadataTest, ByteSizeSetterGetter) {
|
|
Metadata metadata;
|
|
metadata.setByteSize(256);
|
|
|
|
EXPECT_EQ(metadata.getByteSize(), 256);
|
|
}
|
|
|
|
/**
|
|
* @test Verify setters and getters for data type.
|
|
*/
|
|
TEST_F(MetadataTest, DataTypeSetterGetter) {
|
|
Metadata metadata;
|
|
metadata.setDataType("double");
|
|
|
|
EXPECT_EQ(metadata.getDataType(), "double");
|
|
}
|
|
|
|
/**
|
|
* @test Verify setters and getters for dimensions.
|
|
*/
|
|
TEST_F(MetadataTest, DimensionsSetterGetter) {
|
|
Metadata metadata;
|
|
std::vector<std::size_t> dimensions = {2, 2, 2};
|
|
metadata.setDimensions(dimensions);
|
|
|
|
EXPECT_EQ(metadata.getDimensions(), dimensions);
|
|
}
|
|
|
|
/**
|
|
* @test Verify setters and getters for debug flag.
|
|
*/
|
|
TEST_F(MetadataTest, DebugFlagSetterGetter) {
|
|
Metadata metadata;
|
|
metadata.setDebugEnabled(true);
|
|
|
|
EXPECT_TRUE(metadata.isDebugEnabled());
|
|
|
|
metadata.setDebugEnabled(false);
|
|
|
|
EXPECT_FALSE(metadata.isDebugEnabled());
|
|
}
|
|
|
|
/**
|
|
* @test Verify metadata output with operator<<.
|
|
*/
|
|
TEST_F(MetadataTest, MetadataOutputOperator) {
|
|
Metadata metadata(64, "int", {8, 8}, true);
|
|
|
|
std::ostringstream oss;
|
|
oss << metadata;
|
|
|
|
std::string expectedOutput = "Metadata Information:\n"
|
|
" Byte Size: 64 bytes\n"
|
|
" Data Type: int\n"
|
|
" Dimensions: [8, 8]\n"
|
|
" Debug Enabled: Yes\n";
|
|
|
|
EXPECT_EQ(oss.str(), expectedOutput);
|
|
}
|
|
|
|
/**
|
|
* @test Integration test: Validate metadata behavior in a multi-step scenario.
|
|
*/
|
|
TEST_F(MetadataTest, IntegrationScenario) {
|
|
Metadata metadata;
|
|
|
|
// Step 1: Initialize metadata with some values
|
|
metadata.setByteSize(128);
|
|
metadata.setDataType("float");
|
|
metadata.setDimensions({4, 4, 2});
|
|
metadata.setDebugEnabled(true);
|
|
|
|
EXPECT_EQ(metadata.getByteSize(), 128);
|
|
EXPECT_EQ(metadata.getDataType(), "float");
|
|
EXPECT_EQ(metadata.getDimensions(), (std::vector<std::size_t>{4, 4, 2}));
|
|
EXPECT_TRUE(metadata.isDebugEnabled());
|
|
|
|
// Step 2: Simulate a metadata update
|
|
metadata.setByteSize(256);
|
|
metadata.setDataType("double");
|
|
metadata.setDimensions({8, 8});
|
|
metadata.setDebugEnabled(false);
|
|
|
|
EXPECT_EQ(metadata.getByteSize(), 256);
|
|
EXPECT_EQ(metadata.getDataType(), "double");
|
|
EXPECT_EQ(metadata.getDimensions(), (std::vector<std::size_t>{8, 8}));
|
|
EXPECT_FALSE(metadata.isDebugEnabled());
|
|
}
|
|
|
|
/**
|
|
* @test Integration test: Handling edge cases for metadata.
|
|
*/
|
|
TEST_F(MetadataTest, EdgeCaseHandling) {
|
|
Metadata metadata;
|
|
|
|
// Case 1: Empty dimensions
|
|
metadata.setDimensions({});
|
|
EXPECT_TRUE(metadata.getDimensions().empty());
|
|
|
|
// Case 2: Large byte size
|
|
metadata.setByteSize(static_cast<std::size_t>(-1));
|
|
EXPECT_EQ(metadata.getByteSize(), static_cast<std::size_t>(-1));
|
|
|
|
// Case 3: Empty data type
|
|
metadata.setDataType("");
|
|
EXPECT_EQ(metadata.getDataType(), "");
|
|
}
|
|
|