using NUnit.Framework; using System; using System.Collections; using System.IO; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; /// /// Test the ProgressGraph class /// [TestFixture] public class ProgressGraphTests { /// /// Wait time between scene transitions /// private const float WAIT_TIME = 0.2f; /// /// Setup the ProgressGraph tests /// private IEnumerator Setup_ProgressGraph(int amount, Func f) { string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; string score = ""; for (int i = 0; i < amount; i++) { score += $"{{\"scoreValue\":{f(i)},\"time\":\"19/04/2023 22:32:39\"}}"; if (i < amount - 1) score += ","; } string minigame = $"{{\"entries\":[],\"minigameIndex\":1,\"latestScores\":[{score}],\"highestScores\":[{score}]}}"; string oneUser = $"{{\"version\":1027,\"users\":[{{\"entries\":[],\"username\":\"Tester0\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[{minigame}],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; File.WriteAllText(path, oneUser); PersistentDataController.PATH = path; PersistentDataController.GetInstance().Load(); AssetDatabase.LoadAssetAtPath("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen"); yield return new WaitForSeconds(WAIT_TIME); GameObject.FindObjectOfType().DisplayMinigames(); yield return new WaitForSeconds(WAIT_TIME); } /// /// Test whether every item that needs to be assign in the editor, is assigned /// [UnityTest] public IEnumerator Test_EditorAssignments() { yield return Setup_ProgressGraph(1, (i) => i); var graph = GameObject.FindObjectOfType(); Assert.IsNotNull(graph); Assert.IsNotNull(graph.progressGraph); Assert.IsNotNull(graph.highscoreMarker); Assert.IsNotNull(graph.axesTickMarker); } [UnityTest] public IEnumerator Test_PlotGraph_Negative() { yield return Setup_ProgressGraph(4, (i) => -5 * (i + 1)); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_SmallerThen1() { yield return Setup_ProgressGraph(4, (i) => (3 * i + 20) / 100); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_AroundZero() { yield return Setup_ProgressGraph(4, (i) => 5 * i - 10); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_AllZeros() { yield return Setup_ProgressGraph(4, (i) => 0); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_BetweenPos1AndNeg1() { yield return Setup_ProgressGraph(10, (i) => (i % 3) - 1); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_Single() { yield return Setup_ProgressGraph(1, (i) => i + 500); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_Multiple() { yield return Setup_ProgressGraph(5, (i) => 5 * i); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } [UnityTest] public IEnumerator Test_PlotGraph_TooMany() { yield return Setup_ProgressGraph(10, (i) => 5 * i); yield return new WaitForSeconds(5.0f); Assert.IsTrue(true); } }