process TODO.md

This commit is contained in:
SepComet
2026-03-28 11:35:00 +08:00
parent 371ab30eea
commit fc8675f081
15 changed files with 323 additions and 26 deletions
@@ -140,6 +140,28 @@ namespace Tests.EditMode.Network
Assert.That(CombatEvent.Parser.ParseFrom(envelope.Payload).Damage, Is.EqualTo(7));
}
[Test]
public void SendMessage_Heartbeat_UsesReliableLanePolicy()
{
var reliableTransport = new FakeTransport();
var syncTransport = new FakeTransport();
var manager = new MessageManager(
reliableTransport,
new MainThreadNetworkDispatcher(),
new DefaultMessageDeliveryPolicyResolver(),
syncTransport);
var message = new Heartbeat();
manager.SendMessage(message, MessageType.Heartbeat);
Assert.That(reliableTransport.SendCallCount, Is.EqualTo(1));
Assert.That(syncTransport.SendCallCount, Is.EqualTo(0));
var envelope = Envelope.Parser.ParseFrom(reliableTransport.LastSentData);
Assert.That(envelope.Type, Is.EqualTo((int)MessageType.Heartbeat));
Assert.That(envelope.Payload.ToByteArray(), Is.EqualTo(message.ToByteArray()));
}
[Test]
public void BroadcastMessage_UsesBroadcastSend()
{
@@ -75,6 +75,27 @@ namespace Tests.EditMode.Network
Assert.That(transport.LastSendTarget, Is.EqualTo(Sender));
}
[Test]
public void SharedNetworkRuntime_StartStop_WithDistinctSyncTransport_ControlsBothLanes()
{
var reliableTransport = new FakeTransport();
var syncTransport = new FakeTransport();
var runtime = new SharedNetworkRuntime(
reliableTransport,
new ImmediateNetworkMessageDispatcher(),
syncTransport: syncTransport);
runtime.StartAsync().GetAwaiter().GetResult();
Assert.That(reliableTransport.StartCallCount, Is.EqualTo(1));
Assert.That(syncTransport.StartCallCount, Is.EqualTo(1));
runtime.Stop();
Assert.That(reliableTransport.StopCallCount, Is.EqualTo(1));
Assert.That(syncTransport.StopCallCount, Is.EqualTo(1));
}
[Test]
public void SharedNetworkRuntime_RoutesMoveInputThroughConfiguredSyncLane()
{
@@ -103,6 +124,23 @@ namespace Tests.EditMode.Network
Assert.That(MoveInput.Parser.ParseFrom(envelope.Payload).Tick, Is.EqualTo(33));
}
[Test]
public void ServerNetworkHost_StartsDistinctSyncTransport_AndTracksInboundActivityFromSyncLane()
{
var reliableTransport = new FakeTransport();
var syncTransport = new FakeTransport();
var host = new ServerNetworkHost(reliableTransport, syncTransport: syncTransport);
host.StartAsync().GetAwaiter().GetResult();
syncTransport.EmitReceive(BuildEnvelope(MessageType.Heartbeat, new Heartbeat()), Sender);
Assert.That(reliableTransport.StartCallCount, Is.EqualTo(1));
Assert.That(syncTransport.StartCallCount, Is.EqualTo(1));
Assert.That(host.ManagedSessions.Count, Is.EqualTo(1));
Assert.That(host.TryGetSession(Sender, out var session), Is.True);
Assert.That(session.SessionManager.State, Is.EqualTo(ConnectionState.TransportConnected));
}
private static byte[] BuildEnvelope(MessageType type, IMessage payload)
{
return new Envelope
@@ -122,15 +160,21 @@ namespace Tests.EditMode.Network
public int SendCallCount { get; private set; }
public int StartCallCount { get; private set; }
public int StopCallCount { get; private set; }
public event Action<byte[], IPEndPoint> OnReceive;
public Task StartAsync()
{
StartCallCount++;
return Task.CompletedTask;
}
public void Stop()
{
StopCallCount++;
}
public void Send(byte[] data)
@@ -167,4 +211,4 @@ namespace Tests.EditMode.Network
}
}
}
}
}