process TODO.md step 9

This commit is contained in:
SepComet
2026-03-28 14:26:40 +08:00
parent 101694a3b0
commit 1b1598dbb7
15 changed files with 396 additions and 13 deletions
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
using Google.Protobuf;
@@ -141,6 +142,89 @@ namespace Tests.EditMode.Network
Assert.That(session.SessionManager.State, Is.EqualTo(ConnectionState.TransportConnected));
}
[Test]
public void NetworkIntegrationFactory_CreateClientRuntime_WithSyncPort_UsesDistinctTransportsPerLane()
{
var createdTransports = new Dictionary<int, FakeTransport>();
var runtime = NetworkIntegrationFactory.CreateClientRuntime(
"127.0.0.1",
8080,
new ImmediateNetworkMessageDispatcher(),
syncPort: 8081,
transportFactory: (serverIp, port) =>
{
var transport = new FakeTransport();
createdTransports.Add(port, transport);
return transport;
});
var moveInput = new MoveInput
{
PlayerId = "shared-player",
Tick = 77,
MoveX = 1f
};
runtime.MessageManager.SendMessage(moveInput, MessageType.MoveInput);
runtime.MessageManager.SendMessage(new Heartbeat(), MessageType.Heartbeat);
Assert.That(createdTransports.Keys, Is.EquivalentTo(new[] { 8080, 8081 }));
Assert.That(runtime.Transport, Is.SameAs(createdTransports[8080]));
Assert.That(runtime.SyncTransport, Is.SameAs(createdTransports[8081]));
Assert.That(createdTransports[8080].SendCallCount, Is.EqualTo(1));
Assert.That(createdTransports[8081].SendCallCount, Is.EqualTo(1));
}
[Test]
public void NetworkIntegrationFactory_CreateServerHost_WithSyncPort_UsesDistinctTransportsPerLane()
{
var createdTransports = new Dictionary<int, FakeTransport>();
var host = NetworkIntegrationFactory.CreateServerHost(
9000,
syncPort: 9001,
transportFactory: port =>
{
var transport = new FakeTransport();
createdTransports.Add(port, transport);
return transport;
});
var moveInput = new MoveInput
{
PlayerId = "server-player",
Tick = 88,
MoveY = 1f
};
host.MessageManager.SendMessage(moveInput, MessageType.MoveInput);
host.MessageManager.SendMessage(new Heartbeat(), MessageType.Heartbeat);
Assert.That(createdTransports.Keys, Is.EquivalentTo(new[] { 9000, 9001 }));
Assert.That(host.Transport, Is.SameAs(createdTransports[9000]));
Assert.That(host.SyncTransport, Is.SameAs(createdTransports[9001]));
Assert.That(createdTransports[9000].SendCallCount, Is.EqualTo(1));
Assert.That(createdTransports[9001].SendCallCount, Is.EqualTo(1));
}
[Test]
public void NetworkIntegrationFactory_CreateServerHost_WithoutSyncPort_PreservesSingleTransportFallback()
{
var reliableTransport = new FakeTransport();
var host = NetworkIntegrationFactory.CreateServerHost(
9000,
transportFactory: _ => reliableTransport);
var moveInput = new MoveInput
{
PlayerId = "fallback-player",
Tick = 99,
MoveX = -1f
};
host.MessageManager.SendMessage(moveInput, MessageType.MoveInput);
Assert.That(host.Transport, Is.SameAs(reliableTransport));
Assert.That(host.SyncTransport, Is.Null);
Assert.That(reliableTransport.SendCallCount, Is.EqualTo(1));
}
private static byte[] BuildEnvelope(MessageType type, IMessage payload)
{
return new Envelope