|
1 | 1 | using NUnit.Framework; |
2 | 2 | using Unity.Netcode.Transports.UTP; |
| 3 | +using Unity.Networking.Transport; |
3 | 4 | using UnityEngine; |
4 | 5 | using UnityEngine.TestTools; |
5 | 6 |
|
@@ -229,5 +230,46 @@ public void UnityTransport_HostnameValidation((string, bool) testCase) |
229 | 230 | transport.Shutdown(); |
230 | 231 | } |
231 | 232 | #endif |
| 233 | + |
| 234 | + private class IPCDriverConstructor : INetworkStreamDriverConstructor |
| 235 | + { |
| 236 | + public void CreateDriver( |
| 237 | + UnityTransport transport, |
| 238 | + out NetworkDriver driver, |
| 239 | + out NetworkPipeline unreliableFragmentedPipeline, |
| 240 | + out NetworkPipeline unreliableSequencedFragmentedPipeline, |
| 241 | + out NetworkPipeline reliableSequencedPipeline) |
| 242 | + { |
| 243 | + var settings = transport.GetDefaultNetworkSettings(); |
| 244 | + driver = NetworkDriver.Create(new IPCNetworkInterface(), settings); |
| 245 | + |
| 246 | +#if MULTIPLAYER_TOOLS |
| 247 | + driver.RegisterPipelineStage(new NetworkMetricsPipelineStage()); |
| 248 | +#endif |
| 249 | + |
| 250 | + transport.GetDefaultPipelineConfigurations( |
| 251 | + out var unreliableFragmentedPipelineStages, |
| 252 | + out var unreliableSequencedFragmentedPipelineStages, |
| 253 | + out var reliableSequencedPipelineStages); |
| 254 | + |
| 255 | + unreliableFragmentedPipeline = driver.CreatePipeline(unreliableFragmentedPipelineStages); |
| 256 | + unreliableSequencedFragmentedPipeline = driver.CreatePipeline(unreliableSequencedFragmentedPipelineStages); |
| 257 | + reliableSequencedPipeline = driver.CreatePipeline(reliableSequencedPipelineStages); |
| 258 | + } |
| 259 | + } |
| 260 | + |
| 261 | + [Test] |
| 262 | + public void UnityTransport_CustomDriverConstructorWithDefaultPipelines() |
| 263 | + { |
| 264 | + UnityTransport transport = new GameObject().AddComponent<UnityTransport>(); |
| 265 | + UnityTransport.s_DriverConstructor = new IPCDriverConstructor(); |
| 266 | + transport.Initialize(); |
| 267 | + |
| 268 | + Assert.True(transport.StartServer()); |
| 269 | + |
| 270 | + transport.Shutdown(); |
| 271 | + |
| 272 | + UnityTransport.s_DriverConstructor = null; |
| 273 | + } |
232 | 274 | } |
233 | 275 | } |
0 commit comments