using Zinnia.Action; namespace Test.Zinnia.Action { using NUnit.Framework; using Test.Zinnia.Utility.Mock; using UnityEngine; public class StateEmitterTest { private GameObject containingObject; private StateEmitter subject; private GameObject actionObject; private BooleanAction action; [SetUp] public void SetUp() { containingObject = new GameObject("StateEmitterTest"); subject = containingObject.AddComponent(); actionObject = new GameObject("StateEmitterTest"); action = actionObject.AddComponent(); } [TearDown] public void TearDown() { Object.DestroyImmediate(containingObject); Object.DestroyImmediate(actionObject); } [Test] public void Process() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); action.Activated.AddListener(activatedListenerMock.Listen); action.Deactivated.AddListener(deactivatedListenerMock.Listen); action.ValueChanged.AddListener(changedListenerMock.Listen); subject.Action = action; Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); action.Receive(true); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); subject.Process(); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); action.Receive(false); Assert.IsFalse(activatedListenerMock.Received); Assert.IsTrue(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); subject.Process(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsTrue(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); } [Test] public void ProcessNoAction() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); action.Activated.AddListener(activatedListenerMock.Listen); action.Deactivated.AddListener(deactivatedListenerMock.Listen); action.ValueChanged.AddListener(changedListenerMock.Listen); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); action.Receive(true); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); subject.Process(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); } [Test] public void ProcessInactiveGameObject() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); action.Activated.AddListener(activatedListenerMock.Listen); action.Deactivated.AddListener(deactivatedListenerMock.Listen); action.ValueChanged.AddListener(changedListenerMock.Listen); subject.Action = action; subject.gameObject.SetActive(false); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); action.Receive(true); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); subject.Process(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); } [Test] public void ProcessInactiveComponent() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); action.Activated.AddListener(activatedListenerMock.Listen); action.Deactivated.AddListener(deactivatedListenerMock.Listen); action.ValueChanged.AddListener(changedListenerMock.Listen); subject.Action = action; subject.enabled = false; Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); action.Receive(true); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); subject.Process(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); } [Test] public void ProcessInactiveAction() { UnityEventListenerMock activatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock deactivatedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock changedListenerMock = new UnityEventListenerMock(); action.Activated.AddListener(activatedListenerMock.Listen); action.Deactivated.AddListener(deactivatedListenerMock.Listen); action.ValueChanged.AddListener(changedListenerMock.Listen); subject.Action = action; Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); action.Receive(true); Assert.IsTrue(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsTrue(changedListenerMock.Received); activatedListenerMock.Reset(); deactivatedListenerMock.Reset(); changedListenerMock.Reset(); action.enabled = false; subject.Process(); Assert.IsFalse(activatedListenerMock.Received); Assert.IsFalse(deactivatedListenerMock.Received); Assert.IsFalse(changedListenerMock.Received); } } }