using System; using System.Collections; using NUnit.Framework; using Omega.Tools; using UnityEngine; using UnityEngine.TestTools; using Object = UnityEngine.Object; namespace Omega.Tools.Tests { public sealed class GameObjectUtilityTests { [Test] public void MissingComponentShouldAddComponentWhenItIsNotOnGameObjectTest() { var gameObjectInstance = new GameObject(nameof(MissingComponentShouldAddComponentWhenItIsNotOnGameObjectTest)); var boxColliderByMissingComponent = GameObjectUtility.MissingComponent(gameObjectInstance); var boxCollider = gameObjectInstance.GetComponent(); Assert.AreEqual(boxCollider, boxColliderByMissingComponent); Object.Destroy(gameObjectInstance); } [Test] public void MissingComponentShouldNotAddComponentWhenItIsOnGameObjectTest() { var gameObjectInstance = new GameObject(nameof(MissingComponentShouldNotAddComponentWhenItIsOnGameObjectTest)); var boxCollider = gameObjectInstance.AddComponent(); var boxColliderByMissingComponent = GameObjectUtility.MissingComponent(gameObjectInstance); Assert.AreEqual(boxCollider, boxColliderByMissingComponent); Object.Destroy(gameObjectInstance); } [Test] public void MissingComponentShouldThrowMissingReferenceExceptionWhenParameterIsDestroyedGameObjectTest() { var gameObjectInstance = new GameObject(nameof(MissingComponentShouldNotAddComponentWhenItIsOnGameObjectTest)); var boxCollider = gameObjectInstance.AddComponent(); Object.DestroyImmediate(gameObjectInstance); Assert.Throws(() => GameObjectUtility.MissingComponent(gameObjectInstance)); } [Test] public void MissingComponentShouldThrowArgumentNullExceptionWhenParameterIsNullTest() { Assert.Throws(() => // ReSharper disable once AssignNullToNotNullAttribute GameObjectUtility.MissingComponent(null)); } } }