using Zinnia.Tracking.Collision.Active; using Zinnia.Tracking.Collision.Active.Operation.Extraction; namespace Test.Zinnia.Tracking.Collision.Active.Operation.Extraction { using NUnit.Framework; using Test.Zinnia.Utility.Mock; using UnityEngine; public class PublisherContainerExtractorTest { private GameObject containingObject; private PublisherContainerExtractor subject; [SetUp] public void SetUp() { containingObject = new GameObject("PublisherContainerExtractorTest"); subject = containingObject.AddComponent(); } [TearDown] public void TearDown() { Object.DestroyImmediate(containingObject); } [Test] public void ExtractFromPublisher() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); GameObject publisherSource = new GameObject("PublisherContainerExtractorTest"); GameObject publisherChild = new GameObject("PublisherContainerExtractorTest"); publisherChild.transform.SetParent(publisherSource.transform); ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData(); publisher.SourceContainer = publisherSource; Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.Extract(publisher); Assert.AreEqual(publisherSource, subject.Result); Assert.IsTrue(extractedMock.Received); Object.DestroyImmediate(publisherSource); Object.DestroyImmediate(publisherChild); } [Test] public void ExtractFromConsumerEvent() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); GameObject publisherSource = new GameObject("PublisherContainerExtractorTest"); GameObject publisherChild = new GameObject("PublisherContainerExtractorTest"); publisherChild.transform.SetParent(publisherSource.transform); ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData(); publisher.SourceContainer = publisherSource; ActiveCollisionConsumer.EventData eventData = new ActiveCollisionConsumer.EventData(); eventData.Set(publisher, null); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.Extract(eventData); Assert.AreEqual(publisherSource, subject.Result); Assert.IsTrue(extractedMock.Received); Object.DestroyImmediate(publisherSource); Object.DestroyImmediate(publisherChild); } [Test] public void ExtractInactiveGameObject() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); GameObject publisherSource = new GameObject("PublisherContainerExtractorTest"); GameObject publisherChild = new GameObject("PublisherContainerExtractorTest"); publisherChild.transform.SetParent(publisherSource.transform); ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData(); publisher.SourceContainer = publisherSource; Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.gameObject.SetActive(false); subject.Extract(publisher); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); Object.DestroyImmediate(publisherSource); Object.DestroyImmediate(publisherChild); } [Test] public void ExtractInactiveComponent() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); GameObject publisherSource = new GameObject("PublisherContainerExtractorTest"); GameObject publisherChild = new GameObject("PublisherContainerExtractorTest"); publisherChild.transform.SetParent(publisherSource.transform); ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData(); publisher.SourceContainer = publisherSource; Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.enabled = false; subject.Extract(publisher); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); Object.DestroyImmediate(publisherSource); Object.DestroyImmediate(publisherChild); } [Test] public void ExtractInvalidPublisher() { UnityEventListenerMock extractedMock = new UnityEventListenerMock(); subject.Extracted.AddListener(extractedMock.Listen); ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData(); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); subject.Extract(publisher); Assert.IsNull(subject.Result); Assert.IsFalse(extractedMock.Received); } } }