mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-09-06 07:18:42 +00:00
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:
102
tests/dGameTests/dComponentsTests/SkillComponentTests.cpp
Normal file
102
tests/dGameTests/dComponentsTests/SkillComponentTests.cpp
Normal 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
|
||||
}
|
Reference in New Issue
Block a user