process TODO.md step2

This commit is contained in:
SepComet
2026-03-28 15:02:40 +08:00
parent a0a8c0a89d
commit 4a152e765b
17 changed files with 450 additions and 42 deletions
@@ -86,6 +86,38 @@ namespace Tests.EditMode.Network
Assert.That(parsed.MoveY, Is.EqualTo(-1));
}
[Test]
public void SendMessage_ZeroVectorMoveInput_UsesSyncLanePolicy()
{
var reliableTransport = new FakeTransport();
var syncTransport = new FakeTransport();
var manager = new MessageManager(
reliableTransport,
new MainThreadNetworkDispatcher(),
new DefaultMessageDeliveryPolicyResolver(),
syncTransport);
var message = new MoveInput
{
PlayerId = "player-1",
Tick = 13,
MoveX = 0f,
MoveY = 0f
};
manager.SendMessage(message, MessageType.MoveInput);
Assert.That(reliableTransport.SendCallCount, Is.EqualTo(0));
Assert.That(syncTransport.SendCallCount, Is.EqualTo(1));
var envelope = Envelope.Parser.ParseFrom(syncTransport.LastSentData);
var parsed = MoveInput.Parser.ParseFrom(envelope.Payload);
Assert.That(envelope.Type, Is.EqualTo((int)MessageType.MoveInput));
Assert.That(parsed.PlayerId, Is.EqualTo("player-1"));
Assert.That(parsed.Tick, Is.EqualTo(13));
Assert.That(parsed.MoveX, Is.EqualTo(0f));
Assert.That(parsed.MoveY, Is.EqualTo(0f));
}
[Test]
public void SendMessage_ShootInput_UsesReliableLanePolicy()
{
@@ -4,7 +4,8 @@
"references": [
"Network.Runtime",
"UnityEngine.TestRunner",
"UnityEditor.TestRunner"
"UnityEditor.TestRunner",
"NetworkFramework"
],
"includePlatforms": [
"Editor"
@@ -6,11 +6,54 @@ using Network.NetworkApplication;
using Network.NetworkHost;
using Network.NetworkTransport;
using NUnit.Framework;
using UnityEngine;
using Vector3 = UnityEngine.Vector3;
namespace Tests.EditMode.Network
{
public class SyncStrategyTests
{
[Test]
public void ClientGameplayInputFlow_StopTransition_EmitsSingleZeroVectorMoveInput()
{
var released = ClientGameplayInputFlow.TryCreateMoveInput(
"player-1",
8,
Vector3.zero,
true,
out var stopInput);
var continuedIdle = ClientGameplayInputFlow.TryCreateMoveInput(
"player-1",
9,
Vector3.zero,
false,
out var idleInput);
Assert.That(released, Is.True);
Assert.That(stopInput, Is.Not.Null);
Assert.That(stopInput.PlayerId, Is.EqualTo("player-1"));
Assert.That(stopInput.Tick, Is.EqualTo(8));
Assert.That(stopInput.MoveX, Is.EqualTo(0f));
Assert.That(stopInput.MoveY, Is.EqualTo(0f));
Assert.That(continuedIdle, Is.False);
Assert.That(idleInput, Is.Null);
}
[Test]
public void ClientGameplayInputFlow_CreateShootInput_UsesSplitShootMessageFields()
{
var shootInput = ClientGameplayInputFlow.CreateShootInput(
"player-1",
21,
new Vector3(2f, 0f, 0f));
Assert.That(shootInput.PlayerId, Is.EqualTo("player-1"));
Assert.That(shootInput.Tick, Is.EqualTo(21));
Assert.That(shootInput.DirX, Is.EqualTo(1f));
Assert.That(shootInput.DirY, Is.EqualTo(0f));
Assert.That(shootInput.TargetId, Is.EqualTo(string.Empty));
}
[Test]
public void ClientPredictionBuffer_AuthoritativeState_PrunesAcknowledgedMoveInputs()
{
@@ -149,4 +192,4 @@ namespace Tests.EditMode.Network
}
}
}
}
}