mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-09-05 14:58:27 +00:00
Add MovingPlatformComponent and ModelComponent serialization tests
Co-authored-by: aronwk-aaron <26027722+aronwk-aaron@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
set(DCOMPONENTS_TESTS
|
set(DCOMPONENTS_TESTS
|
||||||
"DestroyableComponentTests.cpp"
|
"DestroyableComponentTests.cpp"
|
||||||
|
"ModelComponentTests.cpp"
|
||||||
|
"MovingPlatformComponentTests.cpp"
|
||||||
"PetComponentTests.cpp"
|
"PetComponentTests.cpp"
|
||||||
"SimplePhysicsComponentTests.cpp"
|
"SimplePhysicsComponentTests.cpp"
|
||||||
"SavingTests.cpp"
|
"SavingTests.cpp"
|
||||||
|
265
tests/dGameTests/dComponentsTests/ModelComponentTests.cpp
Normal file
265
tests/dGameTests/dComponentsTests/ModelComponentTests.cpp
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
#include "GameDependencies.h"
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include "BitStream.h"
|
||||||
|
#include "ModelComponent.h"
|
||||||
|
#include "Entity.h"
|
||||||
|
#include "eReplicaComponentType.h"
|
||||||
|
#include "PetComponent.h"
|
||||||
|
|
||||||
|
class ModelTest : public GameDependenciesTest {
|
||||||
|
protected:
|
||||||
|
Entity* baseEntity;
|
||||||
|
ModelComponent* modelComponent;
|
||||||
|
CBITSTREAM
|
||||||
|
uint32_t flags = 0;
|
||||||
|
void SetUp() override {
|
||||||
|
SetUpDependencies();
|
||||||
|
baseEntity = new Entity(15, GameDependenciesTest::info);
|
||||||
|
modelComponent = baseEntity->AddComponent<ModelComponent>();
|
||||||
|
// Initialize some values to be not default
|
||||||
|
modelComponent->SetPosition(NiPoint3(10.0f, 20.0f, 30.0f));
|
||||||
|
modelComponent->SetRotation(NiQuaternion(4.0f, 1.0f, 2.0f, 3.0f)); // For x=1, y=2, z=3, w=4
|
||||||
|
modelComponent->AddInteract(); // Make it pickable
|
||||||
|
}
|
||||||
|
|
||||||
|
void TearDown() override {
|
||||||
|
delete baseEntity;
|
||||||
|
TearDownDependencies();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test serialization of a ModelComponent for a non-pet entity
|
||||||
|
*/
|
||||||
|
TEST_F(ModelTest, ModelComponentSerializeNonPetTest) {
|
||||||
|
bitStream.Reset();
|
||||||
|
|
||||||
|
// Now we test a serialization for correctness.
|
||||||
|
modelComponent->Serialize(bitStream, false);
|
||||||
|
|
||||||
|
// Read back the serialized data
|
||||||
|
|
||||||
|
// ItemComponent serialization (since this is not a pet)
|
||||||
|
bool hasItemComponent;
|
||||||
|
bitStream.Read(hasItemComponent);
|
||||||
|
EXPECT_EQ(hasItemComponent, true);
|
||||||
|
|
||||||
|
LWOOBJID userModelID;
|
||||||
|
bitStream.Read(userModelID);
|
||||||
|
EXPECT_EQ(userModelID, baseEntity->GetObjectID()); // Should use entity ID when no user model ID
|
||||||
|
|
||||||
|
int extraInfo;
|
||||||
|
bitStream.Read(extraInfo);
|
||||||
|
EXPECT_EQ(extraInfo, 0);
|
||||||
|
|
||||||
|
bool hasExtraItemData;
|
||||||
|
bitStream.Read(hasExtraItemData);
|
||||||
|
EXPECT_EQ(hasExtraItemData, false);
|
||||||
|
|
||||||
|
// ModelComponent serialization
|
||||||
|
bool hasModelInfo;
|
||||||
|
bitStream.Read(hasModelInfo);
|
||||||
|
EXPECT_EQ(hasModelInfo, true);
|
||||||
|
|
||||||
|
bool isPickable;
|
||||||
|
bitStream.Read(isPickable);
|
||||||
|
EXPECT_EQ(isPickable, true); // We added an interact
|
||||||
|
|
||||||
|
uint32_t physicsType;
|
||||||
|
bitStream.Read(physicsType);
|
||||||
|
EXPECT_EQ(physicsType, 2);
|
||||||
|
|
||||||
|
NiPoint3 originalPosition;
|
||||||
|
bitStream.Read(originalPosition.x);
|
||||||
|
bitStream.Read(originalPosition.y);
|
||||||
|
bitStream.Read(originalPosition.z);
|
||||||
|
EXPECT_EQ(originalPosition, NiPoint3(10.0f, 20.0f, 30.0f));
|
||||||
|
|
||||||
|
NiQuaternion originalRotation;
|
||||||
|
bitStream.Read(originalRotation.x);
|
||||||
|
bitStream.Read(originalRotation.y);
|
||||||
|
bitStream.Read(originalRotation.z);
|
||||||
|
bitStream.Read(originalRotation.w);
|
||||||
|
EXPECT_EQ(originalRotation, NiQuaternion(4.0f, 1.0f, 2.0f, 3.0f)); // x=1, y=2, z=3, w=4
|
||||||
|
|
||||||
|
bool hasBehaviorInfo;
|
||||||
|
bitStream.Read(hasBehaviorInfo);
|
||||||
|
EXPECT_EQ(hasBehaviorInfo, true);
|
||||||
|
|
||||||
|
uint32_t numBehaviors;
|
||||||
|
bitStream.Read(numBehaviors);
|
||||||
|
EXPECT_EQ(numBehaviors, 0); // No behaviors added in test
|
||||||
|
|
||||||
|
bool isPaused;
|
||||||
|
bitStream.Read(isPaused);
|
||||||
|
EXPECT_EQ(isPaused, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test serialization of a ModelComponent for a pet entity
|
||||||
|
*/
|
||||||
|
TEST_F(ModelTest, ModelComponentSerializePetTest) {
|
||||||
|
bitStream.Reset();
|
||||||
|
|
||||||
|
// Add a PetComponent to make this entity a pet
|
||||||
|
baseEntity->AddComponent<PetComponent>(1);
|
||||||
|
|
||||||
|
// Now we test a serialization for correctness.
|
||||||
|
modelComponent->Serialize(bitStream, false);
|
||||||
|
|
||||||
|
// Read back the serialized data
|
||||||
|
// Should NOT have ItemComponent serialization for pets
|
||||||
|
|
||||||
|
// ModelComponent serialization (should start immediately)
|
||||||
|
bool hasModelInfo;
|
||||||
|
bitStream.Read(hasModelInfo);
|
||||||
|
EXPECT_EQ(hasModelInfo, true);
|
||||||
|
|
||||||
|
bool isPickable;
|
||||||
|
bitStream.Read(isPickable);
|
||||||
|
EXPECT_EQ(isPickable, true); // We added an interact
|
||||||
|
|
||||||
|
uint32_t physicsType;
|
||||||
|
bitStream.Read(physicsType);
|
||||||
|
EXPECT_EQ(physicsType, 2);
|
||||||
|
|
||||||
|
NiPoint3 originalPosition;
|
||||||
|
bitStream.Read(originalPosition.x);
|
||||||
|
bitStream.Read(originalPosition.y);
|
||||||
|
bitStream.Read(originalPosition.z);
|
||||||
|
EXPECT_EQ(originalPosition, NiPoint3(10.0f, 20.0f, 30.0f));
|
||||||
|
|
||||||
|
NiQuaternion originalRotation;
|
||||||
|
bitStream.Read(originalRotation.x);
|
||||||
|
bitStream.Read(originalRotation.y);
|
||||||
|
bitStream.Read(originalRotation.z);
|
||||||
|
bitStream.Read(originalRotation.w);
|
||||||
|
EXPECT_EQ(originalRotation, NiQuaternion(4.0f, 1.0f, 2.0f, 3.0f)); // x=1, y=2, z=3, w=4
|
||||||
|
|
||||||
|
bool hasBehaviorInfo;
|
||||||
|
bitStream.Read(hasBehaviorInfo);
|
||||||
|
EXPECT_EQ(hasBehaviorInfo, true);
|
||||||
|
|
||||||
|
uint32_t numBehaviors;
|
||||||
|
bitStream.Read(numBehaviors);
|
||||||
|
EXPECT_EQ(numBehaviors, 0); // No behaviors added in test
|
||||||
|
|
||||||
|
bool isPaused;
|
||||||
|
bitStream.Read(isPaused);
|
||||||
|
EXPECT_EQ(isPaused, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test serialization of a ModelComponent during initial update
|
||||||
|
*/
|
||||||
|
TEST_F(ModelTest, ModelComponentSerializeInitialUpdateTest) {
|
||||||
|
bitStream.Reset();
|
||||||
|
|
||||||
|
// Now we test a serialization for correctness with initial update.
|
||||||
|
modelComponent->Serialize(bitStream, true);
|
||||||
|
|
||||||
|
// Read back the serialized data
|
||||||
|
|
||||||
|
// ItemComponent serialization (since this is not a pet)
|
||||||
|
bool hasItemComponent;
|
||||||
|
bitStream.Read(hasItemComponent);
|
||||||
|
EXPECT_EQ(hasItemComponent, true);
|
||||||
|
|
||||||
|
LWOOBJID userModelID;
|
||||||
|
bitStream.Read(userModelID);
|
||||||
|
EXPECT_EQ(userModelID, baseEntity->GetObjectID());
|
||||||
|
|
||||||
|
int extraInfo;
|
||||||
|
bitStream.Read(extraInfo);
|
||||||
|
EXPECT_EQ(extraInfo, 0);
|
||||||
|
|
||||||
|
bool hasExtraItemData;
|
||||||
|
bitStream.Read(hasExtraItemData);
|
||||||
|
EXPECT_EQ(hasExtraItemData, false);
|
||||||
|
|
||||||
|
// ModelComponent serialization
|
||||||
|
bool hasModelInfo;
|
||||||
|
bitStream.Read(hasModelInfo);
|
||||||
|
EXPECT_EQ(hasModelInfo, true);
|
||||||
|
|
||||||
|
bool isPickable;
|
||||||
|
bitStream.Read(isPickable);
|
||||||
|
EXPECT_EQ(isPickable, true);
|
||||||
|
|
||||||
|
uint32_t physicsType;
|
||||||
|
bitStream.Read(physicsType);
|
||||||
|
EXPECT_EQ(physicsType, 2);
|
||||||
|
|
||||||
|
NiPoint3 originalPosition;
|
||||||
|
bitStream.Read(originalPosition.x);
|
||||||
|
bitStream.Read(originalPosition.y);
|
||||||
|
bitStream.Read(originalPosition.z);
|
||||||
|
EXPECT_EQ(originalPosition, NiPoint3(10.0f, 20.0f, 30.0f));
|
||||||
|
|
||||||
|
NiQuaternion originalRotation;
|
||||||
|
bitStream.Read(originalRotation.x);
|
||||||
|
bitStream.Read(originalRotation.y);
|
||||||
|
bitStream.Read(originalRotation.z);
|
||||||
|
bitStream.Read(originalRotation.w);
|
||||||
|
EXPECT_EQ(originalRotation, NiQuaternion(4.0f, 1.0f, 2.0f, 3.0f)); // x=1, y=2, z=3, w=4
|
||||||
|
|
||||||
|
bool hasBehaviorInfo;
|
||||||
|
bitStream.Read(hasBehaviorInfo);
|
||||||
|
EXPECT_EQ(hasBehaviorInfo, true);
|
||||||
|
|
||||||
|
uint32_t numBehaviors;
|
||||||
|
bitStream.Read(numBehaviors);
|
||||||
|
EXPECT_EQ(numBehaviors, 0);
|
||||||
|
|
||||||
|
bool isPaused;
|
||||||
|
bitStream.Read(isPaused);
|
||||||
|
EXPECT_EQ(isPaused, false);
|
||||||
|
|
||||||
|
// During initial update, should write an additional false for model editing info
|
||||||
|
bool hasModelEditingInfo;
|
||||||
|
bitStream.Read(hasModelEditingInfo);
|
||||||
|
EXPECT_EQ(hasModelEditingInfo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test ModelComponent getters and setters
|
||||||
|
*/
|
||||||
|
TEST_F(ModelTest, ModelComponentGettersSettersTest) {
|
||||||
|
// Test position
|
||||||
|
NiPoint3 testPosition(100.0f, 200.0f, 300.0f);
|
||||||
|
modelComponent->SetPosition(testPosition);
|
||||||
|
EXPECT_EQ(modelComponent->GetOriginalPosition(), testPosition);
|
||||||
|
|
||||||
|
// Test rotation
|
||||||
|
NiQuaternion testRotation(5.0f, 6.0f, 7.0f, 8.0f);
|
||||||
|
modelComponent->SetRotation(testRotation);
|
||||||
|
EXPECT_EQ(modelComponent->GetOriginalRotation(), testRotation);
|
||||||
|
|
||||||
|
// Test speed
|
||||||
|
modelComponent->SetSpeed(5.5f);
|
||||||
|
// Note: GetSpeed() method doesn't exist in the header, but we can verify the setter works
|
||||||
|
|
||||||
|
// Test interact
|
||||||
|
modelComponent->RemoveInteract(); // Remove the one we added in SetUp
|
||||||
|
// Test that isPickable becomes false when no interactions
|
||||||
|
bitStream.Reset();
|
||||||
|
modelComponent->Serialize(bitStream, false);
|
||||||
|
|
||||||
|
// Skip itemcomponent data
|
||||||
|
bool hasItemComponent;
|
||||||
|
bitStream.Read(hasItemComponent);
|
||||||
|
LWOOBJID userModelID;
|
||||||
|
bitStream.Read(userModelID);
|
||||||
|
int extraInfo;
|
||||||
|
bitStream.Read(extraInfo);
|
||||||
|
bool hasExtraItemData;
|
||||||
|
bitStream.Read(hasExtraItemData);
|
||||||
|
|
||||||
|
// Check model component
|
||||||
|
bool hasModelInfo;
|
||||||
|
bitStream.Read(hasModelInfo);
|
||||||
|
bool isPickable;
|
||||||
|
bitStream.Read(isPickable);
|
||||||
|
EXPECT_EQ(isPickable, false); // Should be false now
|
||||||
|
}
|
@@ -0,0 +1,223 @@
|
|||||||
|
#include "GameDependencies.h"
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include "BitStream.h"
|
||||||
|
#include "MovingPlatformComponent.h"
|
||||||
|
#include "Entity.h"
|
||||||
|
#include "eReplicaComponentType.h"
|
||||||
|
#include "eMovementPlatformState.h"
|
||||||
|
|
||||||
|
class MovingPlatformTest : public GameDependenciesTest {
|
||||||
|
protected:
|
||||||
|
Entity* baseEntity;
|
||||||
|
MovingPlatformComponent* movingPlatformComponent;
|
||||||
|
CBITSTREAM
|
||||||
|
uint32_t flags = 0;
|
||||||
|
void SetUp() override {
|
||||||
|
SetUpDependencies();
|
||||||
|
baseEntity = new Entity(15, GameDependenciesTest::info);
|
||||||
|
movingPlatformComponent = baseEntity->AddComponent<MovingPlatformComponent>("testPath");
|
||||||
|
// Initialize some values to be not default
|
||||||
|
movingPlatformComponent->SetSerialized(true);
|
||||||
|
|
||||||
|
// Set up the MoverSubComponent with some test values
|
||||||
|
auto* moverSubComponent = movingPlatformComponent->GetMoverSubComponent();
|
||||||
|
if (moverSubComponent) {
|
||||||
|
moverSubComponent->mState = eMovementPlatformState::Moving;
|
||||||
|
moverSubComponent->mDesiredWaypointIndex = 5;
|
||||||
|
moverSubComponent->mShouldStopAtDesiredWaypoint = true;
|
||||||
|
moverSubComponent->mInReverse = false;
|
||||||
|
moverSubComponent->mPercentBetweenPoints = 0.75f;
|
||||||
|
moverSubComponent->mPosition = NiPoint3(10.0f, 20.0f, 30.0f);
|
||||||
|
moverSubComponent->mCurrentWaypointIndex = 3;
|
||||||
|
moverSubComponent->mNextWaypointIndex = 4;
|
||||||
|
moverSubComponent->mIdleTimeElapsed = 2.5f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TearDown() override {
|
||||||
|
delete baseEntity;
|
||||||
|
TearDownDependencies();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test serialization of a MovingPlatformComponent with m_Serialize = false
|
||||||
|
*/
|
||||||
|
TEST_F(MovingPlatformTest, MovingPlatformComponentSerializeDisabledTest) {
|
||||||
|
bitStream.Reset();
|
||||||
|
|
||||||
|
// Set m_Serialize to false to test the early return path
|
||||||
|
movingPlatformComponent->SetSerialized(false);
|
||||||
|
|
||||||
|
// Now we test a serialization for correctness.
|
||||||
|
movingPlatformComponent->Serialize(bitStream, false);
|
||||||
|
|
||||||
|
// Should only write two false booleans
|
||||||
|
ASSERT_EQ(bitStream.GetNumberOfBitsUsed(), 2);
|
||||||
|
|
||||||
|
bool firstFlag;
|
||||||
|
bool secondFlag;
|
||||||
|
bitStream.Read(firstFlag);
|
||||||
|
bitStream.Read(secondFlag);
|
||||||
|
|
||||||
|
EXPECT_EQ(firstFlag, false);
|
||||||
|
EXPECT_EQ(secondFlag, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test serialization of a MovingPlatformComponent with enabled serialization but no path
|
||||||
|
*/
|
||||||
|
TEST_F(MovingPlatformTest, MovingPlatformComponentSerializeNoPathTest) {
|
||||||
|
bitStream.Reset();
|
||||||
|
|
||||||
|
// Create a component with no path to test the path logic
|
||||||
|
auto* entityNoPath = new Entity(16, GameDependenciesTest::info);
|
||||||
|
auto* componentNoPath = entityNoPath->AddComponent<MovingPlatformComponent>("");
|
||||||
|
componentNoPath->SetSerialized(true);
|
||||||
|
|
||||||
|
// Stop pathing to make hasPath false
|
||||||
|
componentNoPath->StopPathing();
|
||||||
|
|
||||||
|
componentNoPath->Serialize(bitStream, false);
|
||||||
|
|
||||||
|
// Should write: true (m_Serialize), false (hasPath), true (hasPlatform), mover type, then mover data
|
||||||
|
bool isEnabled;
|
||||||
|
bool hasPath;
|
||||||
|
bool hasPlatform;
|
||||||
|
|
||||||
|
bitStream.Read(isEnabled);
|
||||||
|
bitStream.Read(hasPath);
|
||||||
|
bitStream.Read(hasPlatform);
|
||||||
|
|
||||||
|
EXPECT_EQ(isEnabled, true);
|
||||||
|
EXPECT_EQ(hasPath, false);
|
||||||
|
EXPECT_EQ(hasPlatform, true);
|
||||||
|
|
||||||
|
// Should continue with platform serialization
|
||||||
|
eMoverSubComponentType moverType;
|
||||||
|
bitStream.Read(moverType);
|
||||||
|
EXPECT_EQ(moverType, eMoverSubComponentType::mover);
|
||||||
|
|
||||||
|
// Clean up
|
||||||
|
delete entityNoPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test complete serialization of a MovingPlatformComponent with path
|
||||||
|
*/
|
||||||
|
TEST_F(MovingPlatformTest, MovingPlatformComponentSerializeFullTest) {
|
||||||
|
bitStream.Reset();
|
||||||
|
|
||||||
|
// Now we test a serialization for correctness.
|
||||||
|
movingPlatformComponent->Serialize(bitStream, false);
|
||||||
|
|
||||||
|
// Read back the serialized data
|
||||||
|
bool isEnabled;
|
||||||
|
bool hasPath;
|
||||||
|
|
||||||
|
bitStream.Read(isEnabled);
|
||||||
|
bitStream.Read(hasPath);
|
||||||
|
|
||||||
|
EXPECT_EQ(isEnabled, true);
|
||||||
|
EXPECT_EQ(hasPath, true);
|
||||||
|
|
||||||
|
if (hasPath) {
|
||||||
|
bool isOnRail;
|
||||||
|
bitStream.Read(isOnRail);
|
||||||
|
EXPECT_EQ(isOnRail, true);
|
||||||
|
|
||||||
|
uint16_t pathNameSize;
|
||||||
|
bitStream.Read(pathNameSize);
|
||||||
|
EXPECT_EQ(pathNameSize, 8); // "testPath" length
|
||||||
|
|
||||||
|
std::u16string pathName;
|
||||||
|
for (uint16_t i = 0; i < pathNameSize; i++) {
|
||||||
|
uint16_t character;
|
||||||
|
bitStream.Read(character);
|
||||||
|
pathName += character;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t startingPoint;
|
||||||
|
bitStream.Read(startingPoint);
|
||||||
|
EXPECT_EQ(startingPoint, 0);
|
||||||
|
|
||||||
|
bool reverse;
|
||||||
|
bitStream.Read(reverse);
|
||||||
|
EXPECT_EQ(reverse, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool hasPlatform;
|
||||||
|
bitStream.Read(hasPlatform);
|
||||||
|
EXPECT_EQ(hasPlatform, true);
|
||||||
|
|
||||||
|
if (hasPlatform) {
|
||||||
|
eMoverSubComponentType moverType;
|
||||||
|
bitStream.Read(moverType);
|
||||||
|
EXPECT_EQ(moverType, eMoverSubComponentType::mover);
|
||||||
|
|
||||||
|
// Test MoverSubComponent serialization
|
||||||
|
bool moverHasData;
|
||||||
|
bitStream.Read(moverHasData);
|
||||||
|
EXPECT_EQ(moverHasData, true);
|
||||||
|
|
||||||
|
eMovementPlatformState state;
|
||||||
|
bitStream.Read(state);
|
||||||
|
EXPECT_EQ(state, eMovementPlatformState::Moving);
|
||||||
|
|
||||||
|
int32_t desiredWaypointIndex;
|
||||||
|
bitStream.Read(desiredWaypointIndex);
|
||||||
|
EXPECT_EQ(desiredWaypointIndex, 5);
|
||||||
|
|
||||||
|
bool shouldStopAtDesiredWaypoint;
|
||||||
|
bitStream.Read(shouldStopAtDesiredWaypoint);
|
||||||
|
EXPECT_EQ(shouldStopAtDesiredWaypoint, true);
|
||||||
|
|
||||||
|
bool inReverse;
|
||||||
|
bitStream.Read(inReverse);
|
||||||
|
EXPECT_EQ(inReverse, false);
|
||||||
|
|
||||||
|
float percentBetweenPoints;
|
||||||
|
bitStream.Read(percentBetweenPoints);
|
||||||
|
EXPECT_EQ(percentBetweenPoints, 0.75f);
|
||||||
|
|
||||||
|
float positionX, positionY, positionZ;
|
||||||
|
bitStream.Read(positionX);
|
||||||
|
bitStream.Read(positionY);
|
||||||
|
bitStream.Read(positionZ);
|
||||||
|
EXPECT_EQ(positionX, 10.0f);
|
||||||
|
EXPECT_EQ(positionY, 20.0f);
|
||||||
|
EXPECT_EQ(positionZ, 30.0f);
|
||||||
|
|
||||||
|
uint32_t currentWaypointIndex;
|
||||||
|
bitStream.Read(currentWaypointIndex);
|
||||||
|
EXPECT_EQ(currentWaypointIndex, 3);
|
||||||
|
|
||||||
|
uint32_t nextWaypointIndex;
|
||||||
|
bitStream.Read(nextWaypointIndex);
|
||||||
|
EXPECT_EQ(nextWaypointIndex, 4);
|
||||||
|
|
||||||
|
float idleTimeElapsed;
|
||||||
|
bitStream.Read(idleTimeElapsed);
|
||||||
|
EXPECT_EQ(idleTimeElapsed, 2.5f);
|
||||||
|
|
||||||
|
float moveTimeElapsed;
|
||||||
|
bitStream.Read(moveTimeElapsed);
|
||||||
|
EXPECT_EQ(moveTimeElapsed, 0.0f); // Always 0 in current implementation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test MoverSubComponent initialization and basic functionality
|
||||||
|
*/
|
||||||
|
TEST_F(MovingPlatformTest, MoverSubComponentInitializationTest) {
|
||||||
|
auto* moverSubComponent = movingPlatformComponent->GetMoverSubComponent();
|
||||||
|
ASSERT_NE(moverSubComponent, nullptr);
|
||||||
|
|
||||||
|
// Test that we can access and modify the mover sub component
|
||||||
|
moverSubComponent->mState = eMovementPlatformState::Stopped;
|
||||||
|
EXPECT_EQ(moverSubComponent->mState, eMovementPlatformState::Stopped);
|
||||||
|
|
||||||
|
moverSubComponent->mDesiredWaypointIndex = 10;
|
||||||
|
EXPECT_EQ(moverSubComponent->mDesiredWaypointIndex, 10);
|
||||||
|
}
|
Reference in New Issue
Block a user