Beispiel #1
0
        public void ExtractFromConsumerEvent()
        {
            UnityEventListenerMock extractedMock = new UnityEventListenerMock();

            subject.Extracted.AddListener(extractedMock.Listen);

            GameObject publisherSource = new GameObject();
            GameObject publisherChild  = new GameObject();

            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);
        }
        public void CreateAndClear()
        {
            UnityEventListenerMock createdMock = new UnityEventListenerMock();
            UnityEventListenerMock clearedMock = new UnityEventListenerMock();

            subject.Created.AddListener(createdMock.Listen);
            subject.Destroyed.AddListener(clearedMock.Listen);

            GameObject publisherObject         = new GameObject();
            ActiveCollisionPublisher publisher = publisherObject.AddComponent <ActiveCollisionPublisher>();

            publisher.sourceContainer          = publisherObject;
            publisherObject.transform.position = Vector3.one;

            GameObject collisionNotifierContainer;

            CollisionNotifier.EventData collisionNotifierEventData = CollisionNotifierHelper.GetEventData(out collisionNotifierContainer);
            collisionNotifierContainer.transform.position = Vector3.one * 2f;
            collisionNotifierContainer.transform.rotation = Quaternion.Euler(Vector3.forward * 90f);

            ActiveCollisionConsumer.EventData eventData = new ActiveCollisionConsumer.EventData();
            eventData.Set(publisher, collisionNotifierEventData);

            Assert.IsFalse(createdMock.Received);
            Assert.IsFalse(clearedMock.Received);
            Assert.IsNull(subject.Container);

            subject.Create(eventData);

            Assert.IsTrue(createdMock.Received);
            Assert.IsFalse(clearedMock.Received);
            Assert.IsNotNull(subject.Container);

            Assert.AreEqual(publisherObject.transform.position.ToString(), subject.Container.transform.position.ToString());
            Assert.AreEqual(publisherObject.transform.rotation.ToString(), subject.Container.transform.rotation.ToString());
            Assert.AreEqual(Vector3.one, subject.Container.transform.localScale);

            createdMock.Reset();
            clearedMock.Reset();

            subject.Destroy();

            Assert.IsFalse(createdMock.Received);
            Assert.IsTrue(clearedMock.Received);
            Assert.IsNull(subject.Container);

            Object.DestroyImmediate(publisherObject);
            Object.DestroyImmediate(collisionNotifierContainer);
        }
        public void SetOnlyOnce()
        {
            UnityEventListenerMock createdMock = new UnityEventListenerMock();
            UnityEventListenerMock clearedMock = new UnityEventListenerMock();

            subject.PointSet.AddListener(createdMock.Listen);
            subject.PointUnset.AddListener(clearedMock.Listen);

            GameObject publisherObject = new GameObject();

            ActiveCollisionPublisher.PayloadData publisher = new ActiveCollisionPublisher.PayloadData();
            publisher.SourceContainer          = publisherObject;
            publisherObject.transform.position = Vector3.one;

            CollisionNotifier.EventData collisionNotifierEventData = CollisionNotifierHelper.GetEventData(out GameObject collisionNotifierContainer);
            collisionNotifierContainer.transform.position = Vector3.one * 2f;
            collisionNotifierContainer.transform.rotation = Quaternion.Euler(Vector3.forward * 90f);

            ActiveCollisionConsumer.EventData eventData = new ActiveCollisionConsumer.EventData();
            eventData.Set(publisher, collisionNotifierEventData);

            GameObject publisherObjectAlt = new GameObject();

            ActiveCollisionPublisher.PayloadData publisherAlt = new ActiveCollisionPublisher.PayloadData();
            publisherAlt.SourceContainer          = publisherObjectAlt;
            publisherObjectAlt.transform.position = Vector3.one;

            CollisionNotifier.EventData collisionNotifierEventDataAlt = CollisionNotifierHelper.GetEventData(out GameObject collisionNotifierContainerAlt);
            collisionNotifierContainerAlt.transform.position = Vector3.one * 4f;
            collisionNotifierContainerAlt.transform.rotation = Quaternion.Euler(Vector3.up * 90f);

            ActiveCollisionConsumer.EventData eventDataAlt = new ActiveCollisionConsumer.EventData();
            eventDataAlt.Set(publisherAlt, collisionNotifierEventDataAlt);

            Assert.IsFalse(createdMock.Received);
            Assert.IsFalse(clearedMock.Received);
            Assert.IsNull(subject.Container);

            subject.Set(eventData);

            Assert.IsTrue(createdMock.Received);
            Assert.IsFalse(clearedMock.Received);
            Assert.IsNotNull(subject.Container);

            Assert.AreEqual(publisherObject.transform.position.ToString(), subject.Container.transform.position.ToString());
            Assert.AreEqual(publisherObject.transform.rotation.ToString(), subject.Container.transform.rotation.ToString());
            Assert.AreEqual(Vector3.one, subject.Container.transform.localScale);

            createdMock.Reset();
            clearedMock.Reset();

            subject.Set(eventDataAlt);

            Assert.IsFalse(createdMock.Received);
            Assert.IsFalse(clearedMock.Received);
            Assert.IsNotNull(subject.Container);

            Assert.AreEqual(publisherObject.transform.position.ToString(), subject.Container.transform.position.ToString());
            Assert.AreEqual(publisherObject.transform.rotation.ToString(), subject.Container.transform.rotation.ToString());
            Assert.AreEqual(Vector3.one, subject.Container.transform.localScale);

            Object.DestroyImmediate(publisherObject);
            Object.DestroyImmediate(publisherObjectAlt);
            Object.DestroyImmediate(collisionNotifierContainer);
            Object.DestroyImmediate(collisionNotifierContainerAlt);
        }