using Zinnia.Data.Operation.Cache; namespace Test.Zinnia.Data.Operation.Cache { using NUnit.Framework; using Test.Zinnia.Utility.Mock; using UnityEngine; public class IntCacheTest { private GameObject containingObject; #pragma warning disable 0618 private IntCache subject; #pragma warning restore 0618 [SetUp] public void SetUp() { containingObject = new GameObject("IntCacheTest"); #pragma warning disable 0618 subject = containingObject.AddComponent(); #pragma warning restore 0618 } [TearDown] public void TearDown() { Object.DestroyImmediate(containingObject); } [Test] public void CacheChanged() { UnityEventListenerMock modifiedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock unmodifiedListenerMock = new UnityEventListenerMock(); subject.Modified.AddListener(modifiedListenerMock.Listen); subject.Unmodified.AddListener(unmodifiedListenerMock.Listen); Assert.IsFalse(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(0, subject.Data); subject.Data = 1; Assert.IsTrue(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(1, subject.Data); modifiedListenerMock.Reset(); unmodifiedListenerMock.Reset(); subject.Data = 1; Assert.IsFalse(modifiedListenerMock.Received); Assert.IsTrue(unmodifiedListenerMock.Received); Assert.AreEqual(1, subject.Data); modifiedListenerMock.Reset(); unmodifiedListenerMock.Reset(); subject.Data = 2; Assert.IsTrue(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(2, subject.Data); modifiedListenerMock.Reset(); unmodifiedListenerMock.Reset(); subject.ClearCache(); Assert.IsTrue(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(0, subject.Data); } [Test] public void CacheChangedInactiveGameObject() { UnityEventListenerMock modifiedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock unmodifiedListenerMock = new UnityEventListenerMock(); subject.Modified.AddListener(modifiedListenerMock.Listen); subject.Unmodified.AddListener(unmodifiedListenerMock.Listen); Assert.IsFalse(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(0, subject.Data); subject.gameObject.SetActive(false); subject.Data = 1; Assert.IsFalse(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(0, subject.Data); } [Test] public void CacheChangedInactiveComponent() { UnityEventListenerMock modifiedListenerMock = new UnityEventListenerMock(); UnityEventListenerMock unmodifiedListenerMock = new UnityEventListenerMock(); subject.Modified.AddListener(modifiedListenerMock.Listen); subject.Unmodified.AddListener(unmodifiedListenerMock.Listen); Assert.IsFalse(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(0, subject.Data); subject.enabled = false; subject.Data = 1; Assert.IsFalse(modifiedListenerMock.Received); Assert.IsFalse(unmodifiedListenerMock.Received); Assert.AreEqual(0, subject.Data); } } }