Continue adding component tests: AchievementVendor, Character, QuickBuild, Script, Skill, Vendor tests (compilation fixes needed)

Co-authored-by: aronwk-aaron <26027722+aronwk-aaron@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-08-31 22:54:34 +00:00
parent f4a9cd21be
commit 856186636f
7 changed files with 936 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
#include <gtest/gtest.h>
#include "SkillComponent.h"
#include "Entity.h"
#include "BitStream.h"
#include "GameDependencies.h"
class SkillComponentTest : public GameDependenciesTest {
protected:
void SetUp() override {
SetUpDependencies();
}
void TearDown() override {
TearDownDependencies();
}
};
TEST_F(SkillComponentTest, SerializeInitialUpdate) {
Entity testEntity(15, info);
SkillComponent skillComponent(&testEntity);
RakNet::BitStream bitStream;
skillComponent.Serialize(bitStream, true);
// Read the data manually to validate serialization format
bitStream.ResetReadPointer();
bool skillFlag;
ASSERT_TRUE(bitStream.Read(skillFlag));
EXPECT_FALSE(skillFlag); // Always writes 0 for initial update
}
TEST_F(SkillComponentTest, SerializeRegularUpdate) {
Entity testEntity(15, info);
SkillComponent skillComponent(&testEntity);
RakNet::BitStream bitStream;
skillComponent.Serialize(bitStream, false);
// Regular updates should not write anything for SkillComponent
bitStream.ResetReadPointer();
EXPECT_EQ(bitStream.GetNumberOfUnreadBits(), 0);
}
TEST_F(SkillComponentTest, SerializeConsistentBehavior) {
Entity testEntity(15, info);
SkillComponent skillComponent(&testEntity);
// Test that multiple initial serializations are consistent
RakNet::BitStream firstStream, secondStream;
skillComponent.Serialize(firstStream, true);
skillComponent.Serialize(secondStream, true);
EXPECT_EQ(firstStream.GetNumberOfBitsUsed(), secondStream.GetNumberOfBitsUsed());
EXPECT_EQ(firstStream.GetNumberOfBitsUsed(), 1); // Should always be 1 bit (false)
firstStream.ResetReadPointer();
secondStream.ResetReadPointer();
bool firstFlag, secondFlag;
ASSERT_TRUE(firstStream.Read(firstFlag));
ASSERT_TRUE(secondStream.Read(secondFlag));
EXPECT_FALSE(firstFlag);
EXPECT_FALSE(secondFlag);
EXPECT_EQ(firstFlag, secondFlag);
}
TEST_F(SkillComponentTest, GetUniqueSkillId) {
Entity testEntity(15, info);
SkillComponent skillComponent(&testEntity);
// Test that unique skill IDs increment
uint32_t firstId = skillComponent.GetUniqueSkillId();
uint32_t secondId = skillComponent.GetUniqueSkillId();
uint32_t thirdId = skillComponent.GetUniqueSkillId();
EXPECT_EQ(secondId, firstId + 1);
EXPECT_EQ(thirdId, firstId + 2);
EXPECT_GT(firstId, 0); // Should start from at least 1
}
TEST_F(SkillComponentTest, SerializeAfterSkillUse) {
Entity testEntity(15, info);
SkillComponent skillComponent(&testEntity);
// Generate some skill IDs to simulate skill usage
skillComponent.GetUniqueSkillId();
skillComponent.GetUniqueSkillId();
skillComponent.GetUniqueSkillId();
// Serialization behavior should still be the same
RakNet::BitStream bitStream;
skillComponent.Serialize(bitStream, true);
bitStream.ResetReadPointer();
bool skillFlag;
ASSERT_TRUE(bitStream.Read(skillFlag));
EXPECT_FALSE(skillFlag); // Still writes 0 regardless of internal state
}