mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-06 10:44:08 +00:00
clean up PetComponent
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
set(DCOMMONTEST_SOURCES
|
||||
"AMFDeserializeTests.cpp"
|
||||
"Amf3Tests.cpp"
|
||||
"FlagTests.cpp"
|
||||
"ToUnderlyingTests.cpp"
|
||||
"HeaderSkipTest.cpp"
|
||||
"TestCDFeatureGatingTable.cpp"
|
||||
|
67
tests/dCommonTests/FlagTests.cpp
Normal file
67
tests/dCommonTests/FlagTests.cpp
Normal file
@@ -0,0 +1,67 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "Flag.h"
|
||||
|
||||
enum class TestFlag : uint8_t {
|
||||
FLAG0,
|
||||
FLAG1,
|
||||
FLAG2,
|
||||
FLAG3,
|
||||
FLAG4
|
||||
};
|
||||
|
||||
/**
|
||||
* Test bitset flags
|
||||
*/
|
||||
TEST(FlagTests, FlagMethodTest) {
|
||||
using enum TestFlag;
|
||||
|
||||
auto flag = Flag<TestFlag>{};
|
||||
|
||||
// Test setting and reading single flags, exclusively
|
||||
flag.Reset(FLAG0);
|
||||
ASSERT_TRUE(flag.HasOnly(FLAG0));
|
||||
flag.Reset(FLAG2);
|
||||
ASSERT_TRUE(flag.HasOnly(FLAG2));
|
||||
ASSERT_FALSE(flag.HasOnly(FLAG1));
|
||||
|
||||
// Test setting and reading multiple flags, exclusively
|
||||
flag.Reset(FLAG3, FLAG1);
|
||||
ASSERT_FALSE(flag.Has(FLAG2));
|
||||
ASSERT_TRUE(flag.Has(FLAG3));
|
||||
ASSERT_TRUE(flag.Has(FLAG1));
|
||||
ASSERT_TRUE(flag.Has(FLAG3, FLAG1));
|
||||
ASSERT_FALSE(flag.HasOnly(FLAG3));
|
||||
ASSERT_FALSE(flag.HasOnly(FLAG1));
|
||||
ASSERT_TRUE(flag.HasOnly(FLAG3, FLAG1));
|
||||
|
||||
// Test flags are being properly reset for next batch of tests
|
||||
flag.Reset(FLAG0);
|
||||
ASSERT_TRUE(flag.Has(FLAG0));
|
||||
ASSERT_TRUE(flag.HasOnly(FLAG0));
|
||||
ASSERT_FALSE(flag.Has(FLAG3));
|
||||
ASSERT_FALSE(flag.Has(FLAG3, FLAG1, FLAG2));
|
||||
|
||||
// Test setting and reading single flags, non-exclusively
|
||||
flag.Set(FLAG3);
|
||||
ASSERT_TRUE(flag.Has(FLAG3));
|
||||
ASSERT_FALSE(flag.Has(FLAG1));
|
||||
|
||||
// Test setting and reading multiple flags, non-exclusively
|
||||
flag.Set(FLAG2, FLAG4);
|
||||
ASSERT_TRUE(flag.Has(FLAG2, FLAG4));
|
||||
ASSERT_TRUE(flag.Has(FLAG3));
|
||||
ASSERT_FALSE(flag.Has(FLAG3, FLAG1));
|
||||
ASSERT_TRUE(flag.Has(FLAG3, FLAG2, FLAG4));
|
||||
ASSERT_FALSE(flag.Has(FLAG1));
|
||||
ASSERT_FALSE(flag.Has(FLAG1, FLAG3, FLAG2, FLAG4));
|
||||
|
||||
// Test unsetting and reading multiple flags, non-exclusively
|
||||
flag.Unset(FLAG3, FLAG1);
|
||||
ASSERT_FALSE(flag.Has(FLAG3, FLAG1));
|
||||
ASSERT_FALSE(flag.Has(FLAG3));
|
||||
ASSERT_TRUE(flag.Has(FLAG2, FLAG4));
|
||||
ASSERT_FALSE(flag.Has(FLAG3, FLAG2, FLAG4));
|
||||
ASSERT_FALSE(flag.Has(FLAG1));
|
||||
ASSERT_FALSE(flag.Has(FLAG1, FLAG3, FLAG2, FLAG4));
|
||||
}
|
||||
|
@@ -31,6 +31,60 @@ protected:
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Test bitset pet flags
|
||||
*/
|
||||
TEST_F(PetTest, PetComponentFlagTest) {
|
||||
using enum PetFlag;
|
||||
|
||||
// Test setting and reading single flags, exclusively
|
||||
petComponent->m_Flags.Reset(NONE);
|
||||
ASSERT_TRUE(petComponent->m_Flags.HasOnly(NONE));
|
||||
petComponent->m_Flags.Reset(TAMEABLE);
|
||||
ASSERT_TRUE(petComponent->m_Flags.HasOnly(TAMEABLE));
|
||||
ASSERT_FALSE(petComponent->m_Flags.HasOnly(SPAWNING));
|
||||
|
||||
// Test setting and reading multiple flags, exclusively
|
||||
petComponent->m_Flags.Reset(NOT_WAITING, SPAWNING);
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(TAMEABLE));
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(NOT_WAITING));
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(SPAWNING));
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(NOT_WAITING, SPAWNING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.HasOnly(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.HasOnly(SPAWNING));
|
||||
ASSERT_TRUE(petComponent->m_Flags.HasOnly(NOT_WAITING, SPAWNING));
|
||||
|
||||
// Test flags are being properly reset for next batch of tests
|
||||
petComponent->m_Flags.Reset(NONE);
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(NONE));
|
||||
ASSERT_TRUE(petComponent->m_Flags.HasOnly(NONE));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(NOT_WAITING, SPAWNING, TAMEABLE));
|
||||
|
||||
// Test setting and reading single flags, non-exclusively
|
||||
petComponent->m_Flags.Set(NOT_WAITING);
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(SPAWNING));
|
||||
|
||||
// Test setting and reading multiple flags, non-exclusively
|
||||
petComponent->m_Flags.Set(TAMEABLE, BEING_TAMED);
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(TAMEABLE, BEING_TAMED));
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(NOT_WAITING, SPAWNING));
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(SPAWNING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(SPAWNING, NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
|
||||
// Test unsetting and reading multiple flags, non-exclusively
|
||||
petComponent->m_Flags.Unset(NOT_WAITING, SPAWNING);
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(NOT_WAITING, SPAWNING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(NOT_WAITING));
|
||||
ASSERT_TRUE(petComponent->m_Flags.Has(TAMEABLE, BEING_TAMED));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(SPAWNING));
|
||||
ASSERT_FALSE(petComponent->m_Flags.Has(SPAWNING, NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
}
|
||||
|
||||
TEST_F(PetTest, PlacementNewAddComponentTest) {
|
||||
using enum PetFlag;
|
||||
|
||||
@@ -41,64 +95,9 @@ TEST_F(PetTest, PlacementNewAddComponentTest) {
|
||||
|
||||
// Test getting initial status
|
||||
ASSERT_EQ(petComponent->GetParent()->GetObjectID(), 15);
|
||||
ASSERT_TRUE(petComponent->HasFlag(NONE));
|
||||
ASSERT_EQ(petComponent->GetPetAiState(), PetAiState::spawn);
|
||||
ASSERT_EQ(petComponent->GetAbility(), ePetAbilityType::Invalid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test bitset pet flags
|
||||
*/
|
||||
TEST_F(PetTest, PetComponentFlagTest) {
|
||||
using enum PetFlag;
|
||||
|
||||
// Test setting and reading single flags, exclusively
|
||||
petComponent->SetOnlyFlag(NONE);
|
||||
ASSERT_TRUE(petComponent->HasOnlyFlag(NONE));
|
||||
petComponent->SetOnlyFlag(TAMEABLE);
|
||||
ASSERT_TRUE(petComponent->HasOnlyFlag(TAMEABLE));
|
||||
ASSERT_FALSE(petComponent->HasOnlyFlag(SPAWNING));
|
||||
|
||||
// Test setting and reading multiple flags, exclusively
|
||||
petComponent->SetOnlyFlag(NOT_WAITING, SPAWNING);
|
||||
ASSERT_FALSE(petComponent->HasFlag(TAMEABLE));
|
||||
ASSERT_TRUE(petComponent->HasFlag(NOT_WAITING));
|
||||
ASSERT_TRUE(petComponent->HasFlag(SPAWNING));
|
||||
ASSERT_TRUE(petComponent->HasFlag(NOT_WAITING, SPAWNING));
|
||||
ASSERT_FALSE(petComponent->HasOnlyFlag(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->HasOnlyFlag(SPAWNING));
|
||||
ASSERT_TRUE(petComponent->HasOnlyFlag(NOT_WAITING, SPAWNING));
|
||||
|
||||
// Test flags are being properly reset for next batch of tests
|
||||
petComponent->SetOnlyFlag(NONE);
|
||||
ASSERT_TRUE(petComponent->HasFlag(NONE));
|
||||
ASSERT_TRUE(petComponent->HasOnlyFlag(NONE));
|
||||
ASSERT_FALSE(petComponent->HasFlag(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->HasFlag(NOT_WAITING, SPAWNING, TAMEABLE));
|
||||
|
||||
// Test setting and reading single flags, non-exclusively
|
||||
petComponent->SetFlag(NOT_WAITING);
|
||||
ASSERT_TRUE(petComponent->HasFlag(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->HasFlag(SPAWNING));
|
||||
|
||||
// Test setting and reading multiple flags, non-exclusively
|
||||
petComponent->SetFlag(TAMEABLE, BEING_TAMED);
|
||||
ASSERT_TRUE(petComponent->HasFlag(TAMEABLE, BEING_TAMED));
|
||||
ASSERT_TRUE(petComponent->HasFlag(NOT_WAITING));
|
||||
ASSERT_FALSE(petComponent->HasFlag(NOT_WAITING, SPAWNING));
|
||||
ASSERT_TRUE(petComponent->HasFlag(NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
ASSERT_FALSE(petComponent->HasFlag(SPAWNING));
|
||||
ASSERT_FALSE(petComponent->HasFlag(SPAWNING, NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
|
||||
// Test unsetting and reading multiple flags, non-exclusively
|
||||
petComponent->UnsetFlag(NOT_WAITING, SPAWNING);
|
||||
ASSERT_FALSE(petComponent->HasFlag(NOT_WAITING, SPAWNING));
|
||||
ASSERT_FALSE(petComponent->HasFlag(NOT_WAITING));
|
||||
ASSERT_TRUE(petComponent->HasFlag(TAMEABLE, BEING_TAMED));
|
||||
ASSERT_FALSE(petComponent->HasFlag(NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
ASSERT_FALSE(petComponent->HasFlag(SPAWNING));
|
||||
ASSERT_FALSE(petComponent->HasFlag(SPAWNING, NOT_WAITING, TAMEABLE, BEING_TAMED));
|
||||
}
|
||||
|
||||
TEST_F(PetTest, PetAiState) {
|
||||
const auto initialState = petComponent->GetPetAiState();
|
||||
@@ -126,9 +125,6 @@ TEST_F(PetTest, PetUse) {
|
||||
|
||||
// Test bouncer logic
|
||||
ASSERT_FALSE(petComponent->IsHandlingInteraction());
|
||||
petComponent->SetAbility(ePetAbilityType::JumpOnObject);
|
||||
ASSERT_EQ(petComponent->GetAbility(), ePetAbilityType::JumpOnObject);
|
||||
petComponent->SetInteractType(PetInteractType::bouncer);
|
||||
petComponent->OnUse(baseEntity);
|
||||
|
||||
// need to add a destroyable component to the test entity and test the imagination drain
|
||||
|
Reference in New Issue
Block a user