diff --git a/Assets/Mirror/Core/NetworkManagerHUD.cs b/Assets/Mirror/Core/NetworkManagerHUD.cs index 1989d582b5..61915a6f3c 100644 --- a/Assets/Mirror/Core/NetworkManagerHUD.cs +++ b/Assets/Mirror/Core/NetworkManagerHUD.cs @@ -9,12 +9,14 @@ namespace Mirror [HelpURL("https://mirror-networking.gitbook.io/docs/components/network-manager-hud")] public class NetworkManagerHUD : MonoBehaviour { - NetworkManager manager; + // internal so we can access it during unit tests + internal NetworkManager manager; public int offsetX; public int offsetY; - void Awake() + // internal so we can access it during unit tests + internal void Awake() { manager = GetComponent(); } diff --git a/Assets/Mirror/Tests/Editor/NetworkManagerHUD.meta b/Assets/Mirror/Tests/Editor/NetworkManagerHUD.meta new file mode 100644 index 0000000000..1cb645b9e6 --- /dev/null +++ b/Assets/Mirror/Tests/Editor/NetworkManagerHUD.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8de871a6df7b61d439459e87909cb1f3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirror/Tests/Editor/NetworkManagerHUD/NetworkManagerHUDTest.cs b/Assets/Mirror/Tests/Editor/NetworkManagerHUD/NetworkManagerHUDTest.cs new file mode 100644 index 0000000000..8604caf4a0 --- /dev/null +++ b/Assets/Mirror/Tests/Editor/NetworkManagerHUD/NetworkManagerHUDTest.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using UnityEngine; + +namespace Mirror.Tests +{ + public class NetworkManagerHUDTest : MirrorEditModeTest + { + [SetUp] + public override void SetUp() + { + base.SetUp(); + } + + [TearDown] + public override void TearDown() + { + base.TearDown(); + } + + [Test] + public void NetworkManagerHUDAttributesTest() + { + CreateGameObject(out GameObject manager, out NetworkManagerHUD managerHUD); + + NetworkManagerHUD[] allHUDs = manager.GetComponents(); + + // Check if [RequireComponent(typeof(NetworkManager))] works + Assert.That(manager.GetComponent(), Is.Not.Null); + Assert.That(allHUDs.Length, Is.EqualTo(1)); + + manager.AddComponent(); + allHUDs = manager.GetComponents(); + + // Check if [DisallowMultipleComponent] works + Assert.That(allHUDs.Length, Is.EqualTo(1)); + Assert.That(allHUDs[0], Is.SameAs(managerHUD)); + } + + [Test] + public void NetworkManagerHUDLifecycleTest() + { + CreateGameObject(out GameObject managerGO, out NetworkManager networkManager); + + NetworkManagerHUD managerHUD = managerGO.AddComponent(); + + Assert.That(managerHUD.manager, Is.Null, "manager should be null before Awake()"); + + // Must call Unity lifecycle methods manually in edit mode tests + managerHUD.Awake(); + + Assert.That(managerHUD.manager, Is.Not.Null, "manager should be set after Awake()"); + //Assert.That(managerHUD.manager, Is.Not.Null, "manager should be set after Awake()"); + } + } +} diff --git a/Assets/Mirror/Tests/Editor/NetworkManagerHUD/NetworkManagerHUDTest.cs.meta b/Assets/Mirror/Tests/Editor/NetworkManagerHUD/NetworkManagerHUDTest.cs.meta new file mode 100644 index 0000000000..aded2d93dd --- /dev/null +++ b/Assets/Mirror/Tests/Editor/NetworkManagerHUD/NetworkManagerHUDTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef1828fc2602ce340b164912fe75647d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: