Skip to content

Commit 184f6cc

Browse files
test
Adding test to validate this PR.
1 parent f119881 commit 184f6cc

3 files changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System.Collections;
2+
using NUnit.Framework;
3+
using Unity.Netcode.TestHelpers.Runtime;
4+
using UnityEngine.TestTools;
5+
6+
namespace Unity.Netcode.RuntimeTests
7+
{
8+
/// <summary>
9+
/// Generic <see cref="NetworkManager"/> test to validate clients can connect
10+
/// without having set a player prefab.
11+
/// </summary>
12+
[TestFixture(HostOrServer.Server)]
13+
[TestFixture(HostOrServer.Host)]
14+
[TestFixture(HostOrServer.DAHost)]
15+
internal class NetworkManagerPlayerPrefab : NetcodeIntegrationTest
16+
{
17+
protected override int NumberOfClients => 1;
18+
19+
public NetworkManagerPlayerPrefab(HostOrServer hostOrServer) : base(hostOrServer)
20+
{
21+
}
22+
23+
/// <summary>
24+
/// Assure no player prefab is assigned.
25+
/// </summary>
26+
protected override void OnServerAndClientsCreated()
27+
{
28+
foreach (var networkManager in m_NetworkManagers)
29+
{
30+
networkManager.NetworkConfig.PlayerPrefab = null;
31+
}
32+
base.OnServerAndClientsCreated();
33+
}
34+
35+
protected override void OnNewClientCreated(NetworkManager networkManager)
36+
{
37+
networkManager.NetworkConfig.PlayerPrefab = null;
38+
base.OnNewClientCreated(networkManager);
39+
}
40+
41+
/// <summary>
42+
/// Do not wait for spawned players as there are none.
43+
/// </summary>
44+
/// <returns></returns>
45+
protected override bool ShouldCheckForSpawnedPlayers()
46+
{
47+
return false;
48+
}
49+
50+
/// <summary>
51+
/// Validates NetworkManager can start as a host and/or clients
52+
/// can join when there is no player prefab assigned to the
53+
/// NetworkManager.
54+
/// </summary>
55+
[UnityTest]
56+
public IEnumerator VerifyNetworkManagerHandlesNoPlayerPrefab()
57+
{
58+
// If we make it to here, then the 1st client and the authority
59+
// connected with no exceptions.
60+
// Now just late join a 2nd client.
61+
yield return CreateAndStartNewClient();
62+
// If it makes it to here without an exception then the test passes.
63+
}
64+
}
65+
}

com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerPlayerPrefab.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

com.unity.netcode.gameobjects/Tests/Runtime/TestHelpers/NetcodeIntegrationTest.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,6 +1165,12 @@ protected virtual void OnTimeTravelServerAndClientsConnected()
11651165
private void ClientNetworkManagerPostStart(NetworkManager networkManager)
11661166
{
11671167
networkManager.name = $"NetworkManager - Client - {networkManager.LocalClientId}";
1168+
1169+
// Always make sure we have a player to check.
1170+
if (!ShouldCheckForSpawnedPlayers())
1171+
{
1172+
return;
1173+
}
11681174
Assert.NotNull(networkManager.LocalClient.PlayerObject, $"{nameof(StartServerAndClients)} detected that client {networkManager.LocalClientId} does not have an assigned player NetworkObject!");
11691175

11701176
// Go ahead and create an entry for this new client

0 commit comments

Comments
 (0)