using Zinnia.Action; namespace Test.Zinnia.Action { using NUnit.Framework; using Test.Zinnia.Utility.Mock; using UnityEngine; public class Vector3ActionTest { private GameObject containingObject; private Vector3ActionMock subject; [SetUp] public void SetUp() { containingObject = new GameObject("Vector3ActionTest"); subject = containingObject.AddComponent(); } [TearDown] public void TearDown() { Object.DestroyImmediate(containingObject); } [Test] public void ActivatedEmitted() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); subject.Activated.AddListener(activatedListenerMock.Listen); subject.Deactivated.AddListener(deactivatedListenerMock.Listen); subject.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); subject.Receive(Vector3.one); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); } [Test] public void DeactivatedEmitted() { subject.SetIsActivated(true); subject.SetValue(Vector3.one); UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); subject.Activated.AddListener(activatedListenerMock.Listen); subject.Deactivated.AddListener(deactivatedListenerMock.Listen); subject.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); subject.Receive(Vector3.zero); Assert.IsFalse(activatedListenerMock.Received); Assert.IsTrue(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); } [Test] public void ChangedEmitted() { UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); subject.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(changedListenerMock.Received); subject.Receive(new Vector3(0.1f, 0.1f, 0.1f)); Assert.IsTrue(changedListenerMock.Received); changedListenerMock.Reset(); Assert.IsFalse(changedListenerMock.Received); subject.Receive(new Vector3(0.1f, 0.1f, 0.1f)); Assert.IsFalse(changedListenerMock.Received); changedListenerMock.Reset(); Assert.IsFalse(changedListenerMock.Received); subject.Receive(new Vector3(0.2f, 0.2f, 0.2f)); Assert.IsTrue(changedListenerMock.Received); } [Test] public void EventsNotEmittedOnInactiveGameObject() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); subject.gameObject.SetActive(false); subject.Activated.AddListener(activatedListenerMock.Listen); subject.Deactivated.AddListener(deactivatedListenerMock.Listen); subject.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); subject.Receive(Vector3.one); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); } [Test] public void EventsNotEmittedOnDisabledComponent() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); subject.enabled = false; subject.Activated.AddListener(activatedListenerMock.Listen); subject.Deactivated.AddListener(deactivatedListenerMock.Listen); subject.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); subject.Receive(Vector3.one); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); } } public class Vector3ActionMock : Vector3Action { public virtual void SetIsActivated(bool value) { IsActivated = value; } public virtual void SetValue(Vector3 value) { Value = value; } } }