acdream/tests/AcDream.App.Tests/Streaming/RuntimeTeleportDestinationAdapterTests.cs

50 lines
1.9 KiB
C#

using AcDream.App.Streaming;
using AcDream.Core.Net;
using AcDream.Core.Net.Messages;
using AcDream.Runtime;
namespace AcDream.App.Tests.Streaming;
public sealed class RuntimeTeleportDestinationAdapterTests
{
[Fact]
public void AcceptedPosition_PreservesExactIdentityCellFrameAndSequences()
{
var update = new WorldSession.EntityPositionUpdate(
Guid: 0x50000001u,
Position: new CreateObject.ServerPosition(
LandblockId: 0x30310123u,
PositionX: -12.5f,
PositionY: 8.25f,
PositionZ: 91.75f,
RotationW: 0.5f,
RotationX: 0.25f,
RotationY: -0.125f,
RotationZ: 0.75f),
Velocity: new System.Numerics.Vector3(1f, 2f, 3f),
PlacementId: 0x65u,
IsGrounded: false,
InstanceSequence: 0x1234,
PositionSequence: 0x2345,
TeleportSequence: 0x3456,
ForcePositionSequence: 0x4567);
RuntimeTeleportDestination destination =
RuntimeTeleportDestinationAdapter.FromAcceptedPosition(update);
Assert.Equal(update.Guid, destination.EntityGuid);
Assert.Equal(update.InstanceSequence, destination.InstanceSequence);
Assert.Equal(update.PositionSequence, destination.PositionSequence);
Assert.Equal(update.TeleportSequence, destination.TeleportSequence);
Assert.Equal(
update.ForcePositionSequence,
destination.ForcePositionSequence);
Assert.Equal(update.Position.LandblockId, destination.CellId);
Assert.Equal(
new System.Numerics.Vector3(-12.5f, 8.25f, 91.75f),
destination.Position.Frame.Origin);
Assert.Equal(
new System.Numerics.Quaternion(0.25f, -0.125f, 0.75f, 0.5f),
destination.Position.Frame.Orientation);
}
}