// System using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; // Test using NUnit.Framework; // Unity using UnityEngine; using UnityEngine.TestTools; // GUPS - AntiCheat using GUPS.AntiCheat.Protected.Collection; namespace GUPS.AntiCheat.Tests { public class Protected_Collection_Tests { #if UNITY_EDITOR [SetUp] public void Setup_Global_Settings() { GUPS.AntiCheat.Settings.GlobalSettings.LoadOrCreateAsset(); } #endif [Test] public void Protected_List_Int32_Test() { // Arange ProtectedList var_List = new ProtectedList(); // Act var_List.Add(1); var_List.Add(2); var_List.Add(3); // Assert Assert.AreEqual(1, var_List[0]); Assert.AreEqual(2, var_List[1]); Assert.AreEqual(3, var_List[2]); Assert.IsTrue(var_List.CheckIntegrity()); // Act var_List.RemoveAt(1); // Assert Assert.AreEqual(1, var_List[0]); Assert.AreEqual(3, var_List[1]); Assert.IsTrue(var_List.CheckIntegrity()); // Act var_List[1] = 4; // Assert Assert.AreEqual(1, var_List[0]); Assert.AreEqual(4, var_List[1]); Assert.IsTrue(var_List.CheckIntegrity()); // Act var_List.Remove(1); // Assert Assert.AreEqual(4, var_List[0]); Assert.IsTrue(var_List.CheckIntegrity()); // Act var_List.Clear(); // Assert Assert.AreEqual(0, var_List.Count); Assert.IsTrue(var_List.CheckIntegrity()); // Act int var_HalfMax = Int32.MaxValue / 2; var_List.Add(var_HalfMax); var_List.Add(var_HalfMax * 2); var_List.Add(var_HalfMax * 3); // Assert Assert.AreEqual(var_HalfMax, var_List[0]); Assert.AreEqual(var_HalfMax * 2, var_List[1]); Assert.AreEqual(var_HalfMax * 3, var_List[2]); Assert.IsTrue(var_List.CheckIntegrity()); } [Test] public void Protected_List_Int32_CheckIntegrity_Test() { // Arange ProtectedList list = new ProtectedList(); // Act list.Add(1); list.Add(2); list.Add(3); // Assert Assert.IsTrue(list.CheckIntegrity()); // Get the list field via reflection from the protected list. var field = list.GetType().GetField("list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); // Get the list field value. var value = (IList)field.GetValue(list); // Remove an item from the list. value.RemoveAt(1); // Assert Assert.IsFalse(list.CheckIntegrity()); // Assert Assert.AreEqual(2, list.Count); } [Test] public void Protected_Queue_Int32_Test() { // Arange ProtectedQueue queue = new ProtectedQueue(); // Act queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3); // Assert Assert.IsTrue(queue.CheckIntegrity()); Assert.AreEqual(1, queue.Dequeue()); Assert.AreEqual(2, queue.Dequeue()); Assert.AreEqual(3, queue.Dequeue()); Assert.IsTrue(queue.CheckIntegrity()); // Act queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3); // Assert Assert.IsTrue(queue.CheckIntegrity()); Assert.AreEqual(1, queue.Dequeue()); Assert.AreEqual(2, queue.Dequeue()); Assert.AreEqual(3, queue.Dequeue()); Assert.IsTrue(queue.CheckIntegrity()); } [Test] public void Protected_Queue_Int32_CheckIntegrity_Test() { // Arange ProtectedQueue queue = new ProtectedQueue(); // Act queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3); // Assert Assert.IsTrue(queue.CheckIntegrity()); // Get the queue field via reflection from the protected queue. var field = queue.GetType().GetField("queue", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); // Get the queue field value. var value = (Queue)field.GetValue(queue); // Remove an item from the queue. value.Dequeue(); // Assert Assert.IsFalse(queue.CheckIntegrity()); // Assert Assert.AreEqual(2, queue.Count); } [Test] public void Protected_Stack_Int32_Test() { // Arange ProtectedStack stack = new ProtectedStack(); // Act stack.Push(1); stack.Push(2); stack.Push(3); // Assert Assert.IsTrue(stack.CheckIntegrity()); Assert.AreEqual(3, stack.Pop()); Assert.AreEqual(2, stack.Pop()); Assert.AreEqual(1, stack.Pop()); Assert.IsTrue(stack.CheckIntegrity()); // Act stack.Push(1); stack.Push(2); stack.Push(3); // Assert Assert.IsTrue(stack.CheckIntegrity()); Assert.AreEqual(3, stack.Pop()); Assert.AreEqual(2, stack.Pop()); Assert.AreEqual(1, stack.Pop()); Assert.IsTrue(stack.CheckIntegrity()); } [Test] public void Protected_Stack_Int32_CheckIntegrity_Test() { // Arange ProtectedStack stack = new ProtectedStack(); // Act stack.Push(1); stack.Push(2); stack.Push(3); // Assert Assert.IsTrue(stack.CheckIntegrity()); // Get the stack field via reflection from the protected stack. var field = stack.GetType().GetField("stack", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); // Get the stack field value. var value = (Stack)field.GetValue(stack); // Remove an item from the stack. value.Pop(); // Assert Assert.IsFalse(stack.CheckIntegrity()); // Assert Assert.AreEqual(2, stack.Count); } } }