该项目的目的是同时测试和演示来自 Unity DOTS 技术堆栈的多个新包。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

130 行
5.4 KiB

using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace NetcodeTests
{
[TestFixture]
public class NetworkConnectionTests
{
class PackageInfo
{
}
// [Test]
// public void NetworkConnection_PackageAckWorks()
// {
// TestTransport.Reset();
// var server = new TestTransport(0);
// var client = new TestTransport(1);
// client.Connect("0");
// client.ProcessNewConnections((int id) => {});
// server.ProcessNewConnections((int id) => {});
// var serverConnection = new NetworkConnection<PackageInfo>() { connectionId = 1, transport = server };
// var clientConnection = new NetworkConnection<PackageInfo>() { connectionId = 0, transport = client };
// var random = new Random(12315);
// var droppedServerSequences = new List<int>();
// var ackedServerSequences = new List<int>();
// var receivedServerSequences = new List<int>();
// var droppedClientSequences = new List<int>();
// var ackedClientSequences = new List<int>();
// var receivedClientSequences = new List<int>();
// const int RUNS = 10000;
// for (int i = 0; i < RUNS; ++i)
// {
// // Write server package
// {
// BitOutputStream output = new BitOutputStream(buffer);
// var result = serverConnection.WritePackageHeader(ref output);
// serverConnection.CompleteSendPackage(ref output);
// Assert.IsTrue(result != null);
// if (random.Next(0, 5) == 0)
// {
// droppedServerSequences.Add(serverConnection.outSequence - 1);
// client.DropPackages();
// }
// }
// // Process server package
// client.ProcessIncomingData((int connectionId, byte[] data, int size) =>
// {
// BitInputStream input = new BitInputStream(buffer, size);
// var packageSequence = clientConnection.ProcessPackageHeader(ref input, (int sequence, PackageInfo info, bool ack) =>
// {
// if (ack)
// {
// Assert.IsTrue(!droppedClientSequences.Contains(sequence));
// ackedClientSequences.Add(sequence);
// }
// else
// Assert.IsTrue(droppedClientSequences.Contains(sequence));
// });
// if (packageSequence != 0)
// receivedServerSequences.Add(packageSequence);
// });
// // Write client package
// {
// // Send package back to ack incoming packages
// BitOutputStream output = new BitOutputStream(buffer);
// var result = clientConnection.WritePackageHeader(ref output);
// clientConnection.CompleteSendPackage(ref output);
// Assert.IsTrue(result != null);
// if (random.Next(0, 5) == 0)
// {
// droppedClientSequences.Add(clientConnection.outSequence - 1);
// server.DropPackages();
// }
// }
// // Process client package
// server.ProcessIncomingData((int connectionId, byte[] data, int size) =>
// {
// BitInputStream input = new BitInputStream(buffer, size);
// var packageSequence = serverConnection.ProcessPackageHeader(ref input, (int sequence, PackageInfo info, bool ack) =>
// {
// if (ack)
// {
// Assert.IsTrue(!ackedServerSequences.Contains(sequence));
// ackedServerSequences.Add(sequence);
// }
// else
// Assert.IsTrue(droppedServerSequences.Contains(sequence));
// });
// if (packageSequence != 0)
// receivedClientSequences.Add(packageSequence);
// });
// }
// // Make sure we got all sequences acked
// for (int i = 1; i < RUNS - 16; ++i)
// {
// if (!droppedServerSequences.Contains(i))
// {
// Assert.IsTrue(ackedServerSequences.Contains(i));
// Assert.IsTrue(receivedServerSequences.Contains(i));
// }
// if (!droppedClientSequences.Contains(i))
// {
// Assert.IsTrue(ackedClientSequences.Contains(i));
// Assert.IsTrue(receivedClientSequences.Contains(i));
// }
// }
// }
// static byte[] buffer = new byte[1024];
}
}