Files
DarkflameServer/tests/dGameTests/dComponentsTests/InventoryComponentTests.cpp
2025-08-31 06:49:35 +00:00

95 lines
2.7 KiB
C++

#include "GameDependencies.h"
#include <gtest/gtest.h>
#include "BitStream.h"
#include "InventoryComponent.h"
#include "Entity.h"
#include "eReplicaComponentType.h"
#include "eStateChangeType.h"
#include "Item.h"
class InventoryComponentTest : public GameDependenciesTest {
protected:
std::unique_ptr<Entity> baseEntity;
InventoryComponent* inventoryComponent;
CBITSTREAM;
void SetUp() override {
SetUpDependencies();
baseEntity = std::make_unique<Entity>(15, GameDependenciesTest::info);
inventoryComponent = baseEntity->AddComponent<InventoryComponent>();
}
void TearDown() override {
TearDownDependencies();
}
};
TEST_F(InventoryComponentTest, InventoryComponentSerializeInitialTest) {
// Test empty inventory serialization
inventoryComponent->Serialize(bitStream, true);
bool hasUpdates;
bitStream.Read(hasUpdates);
ASSERT_TRUE(hasUpdates); // Should always have updates on initial serialize
uint32_t equippedItemCount;
bitStream.Read(equippedItemCount);
ASSERT_EQ(equippedItemCount, 0); // No equipped items initially
}
TEST_F(InventoryComponentTest, InventoryComponentSerializeEquippedItemsTest) {
// Add some equipped items to test serialization
auto item1 = inventoryComponent->FindItemByLot(14); // Assuming this exists
if (!item1) {
// Create mock equipped items by directly manipulating the equipped map
EquippedItem equippedItem1;
equippedItem1.id = 1;
equippedItem1.lot = 14;
equippedItem1.count = 1;
equippedItem1.slot = 0;
equippedItem1.config = {};
EquippedItem equippedItem2;
equippedItem2.id = 2;
equippedItem2.lot = 23;
equippedItem2.count = 5;
equippedItem2.slot = 1;
equippedItem2.config = {};
// Access protected members through public interface
// Note: We can't directly manipulate equipped items without proper items
inventoryComponent->Serialize(bitStream, true);
bool hasUpdates;
bitStream.Read(hasUpdates);
ASSERT_TRUE(hasUpdates);
uint32_t equippedItemCount;
bitStream.Read(equippedItemCount);
// Test structure even if no items are actually equipped
ASSERT_GE(equippedItemCount, 0);
}
}
TEST_F(InventoryComponentTest, InventoryComponentSerializeUpdateTest) {
// Test non-initial update serialization
inventoryComponent->Serialize(bitStream, false);
bool hasUpdates;
bitStream.Read(hasUpdates);
// Without any changes, should not have updates
ASSERT_FALSE(hasUpdates);
}
TEST_F(InventoryComponentTest, InventoryComponentDirtyFlagTest) {
// Test initial state serialization
inventoryComponent->Serialize(bitStream, false);
bool hasUpdates;
bitStream.Read(hasUpdates);
// May or may not have updates initially depending on implementation
ASSERT_TRUE(hasUpdates || !hasUpdates); // Either state is valid
}