using Zinnia.Tracking.Collision; using Zinnia.Tracking.Collision.Active; using Zinnia.Tracking.Collision.Active.Operation; namespace Test.Zinnia.Tracking.Collision.Active.Operation { using NUnit.Framework; using System.Collections.Generic; using Test.Zinnia.Utility.Helper; using Test.Zinnia.Utility.Mock; using UnityEngine; public class SlicerTest { private GameObject containingObject; private Slicer subject; [SetUp] public void SetUp() { containingObject = new GameObject("SlicerTest"); subject = containingObject.AddComponent(); } [TearDown] public void TearDown() { Object.DestroyImmediate(containingObject); } [Test] public void SliceFirstElement() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 1; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("one", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceLastElement() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = -1; subject.Length = 1; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three,four,five", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceMiddleElement() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 2; subject.Length = 1; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceMiddleTwoElements() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 2; subject.Length = 2; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("three,four", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceFirstThreeElements() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 3; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceLastThreeElements() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 3; subject.Length = 3; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceLastThreeActualElements() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 4; subject.Length = 3; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three,four", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceLastThreeElementsNegativeStartIndex() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = -3; subject.Length = 3; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceLastThreeActualElementsNegativeStartIndex() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = -2; subject.Length = 3; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three,four", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void StartIndexExceedsCount() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = eventData.ActiveCollisions.Count + 1; subject.Length = 1; ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void LengthIsZero() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 0; ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceEmptyList() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 1; Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); } [Test] public void SliceFirstElementHeadRemainedChangedUnchanged() { UnityEventListenerMock slicedChangedMock = new UnityEventListenerMock(); subject.SlicedChanged.AddListener(slicedChangedMock.Listen); UnityEventListenerMock slicedUnchangedMock = new UnityEventListenerMock(); subject.SlicedUnchanged.AddListener(slicedUnchangedMock.Listen); UnityEventListenerMock remainedChangedMock = new UnityEventListenerMock(); subject.RemainedChanged.AddListener(remainedChangedMock.Listen); UnityEventListenerMock remainedUnchangedMock = new UnityEventListenerMock(); subject.RemainedUnchanged.AddListener(remainedUnchangedMock.Listen); UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); GameObject fourContainer; CollisionNotifier.EventData fourData = CollisionNotifierHelper.GetEventData(out fourContainer); fourContainer.name = "four"; collisionList.Add(fourData); GameObject fiveContainer; CollisionNotifier.EventData fiveData = CollisionNotifierHelper.GetEventData(out fiveContainer); fiveContainer.name = "five"; collisionList.Add(fiveData); GameObject sixContainer; CollisionNotifier.EventData sixData = CollisionNotifierHelper.GetEventData(out sixContainer); sixContainer.name = "six"; collisionList.Add(sixData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 1; Assert.AreEqual("one,two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); Assert.IsFalse(slicedChangedMock.Received); Assert.IsFalse(slicedUnchangedMock.Received); Assert.IsFalse(remainedChangedMock.Received); Assert.IsFalse(remainedUnchangedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.IsTrue(slicedChangedMock.Received); Assert.IsFalse(slicedUnchangedMock.Received); Assert.IsTrue(remainedChangedMock.Received); Assert.IsFalse(remainedUnchangedMock.Received); Assert.AreEqual("one", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("two,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); slicedMock.Reset(); remainedMock.Reset(); slicedChangedMock.Reset(); slicedUnchangedMock.Reset(); remainedChangedMock.Reset(); remainedUnchangedMock.Reset(); subject.Slice(eventData, out remainedList); Assert.IsFalse(slicedChangedMock.Received); Assert.IsTrue(slicedUnchangedMock.Received); Assert.IsFalse(remainedChangedMock.Received); Assert.IsTrue(remainedUnchangedMock.Received); slicedMock.Reset(); remainedMock.Reset(); slicedChangedMock.Reset(); slicedUnchangedMock.Reset(); remainedChangedMock.Reset(); remainedUnchangedMock.Reset(); collisionList.Clear(); collisionList.Add(twoData); collisionList.Add(oneData); collisionList.Add(threeData); collisionList.Add(fourData); collisionList.Add(fiveData); collisionList.Add(sixData); eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); remainedList.Clear(); slicedList = subject.Slice(eventData, out remainedList); Assert.IsTrue(slicedMock.Received); Assert.IsTrue(remainedMock.Received); Assert.IsTrue(slicedChangedMock.Received); Assert.IsFalse(slicedUnchangedMock.Received); Assert.IsTrue(remainedChangedMock.Received); Assert.IsFalse(remainedUnchangedMock.Received); Assert.AreEqual("two", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,three,four,five,six", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); Object.DestroyImmediate(fourContainer); Object.DestroyImmediate(fiveContainer); Object.DestroyImmediate(sixContainer); } [Test] public void SliceInactiveGameObject() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 1; subject.gameObject.SetActive(false); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); } [Test] public void SliceInactiveComponent() { UnityEventListenerMock slicedMock = new UnityEventListenerMock(); subject.Sliced.AddListener(slicedMock.Listen); UnityEventListenerMock remainedMock = new UnityEventListenerMock(); subject.Remained.AddListener(remainedMock.Listen); List collisionList = new List(); GameObject oneContainer; CollisionNotifier.EventData oneData = CollisionNotifierHelper.GetEventData(out oneContainer); oneContainer.name = "one"; collisionList.Add(oneData); GameObject twoContainer; CollisionNotifier.EventData twoData = CollisionNotifierHelper.GetEventData(out twoContainer); twoContainer.name = "two"; collisionList.Add(twoData); GameObject threeContainer; CollisionNotifier.EventData threeData = CollisionNotifierHelper.GetEventData(out threeContainer); threeContainer.name = "three"; collisionList.Add(threeData); ActiveCollisionsContainer.EventData eventData = new ActiveCollisionsContainer.EventData().Set(collisionList); subject.StartIndex = 0; subject.Length = 1; subject.enabled = false; Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(eventData)); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); ActiveCollisionsContainer.EventData remainedList; ActiveCollisionsContainer.EventData slicedList = subject.Slice(eventData, out remainedList); Assert.IsFalse(slicedMock.Received); Assert.IsFalse(remainedMock.Received); Assert.AreEqual("", ActiveCollisionsHelper.GetNamesOfActiveCollisions(slicedList)); Assert.AreEqual("one,two,three", ActiveCollisionsHelper.GetNamesOfActiveCollisions(remainedList)); Object.DestroyImmediate(oneContainer); Object.DestroyImmediate(twoContainer); Object.DestroyImmediate(threeContainer); } } }