using NUnit.Framework; using System.Collections; using System.IO; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; /// /// Test the MinigameProgressCard class /// [TestFixture] public class MinigameProgressCardTests { /// /// Wait time between scene transitions /// private const float WAIT_TIME = 0.2f; /// /// Setup the MinigameProgressCard tests /// private IEnumerator Setup_MinigameProgressCard() { string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; string minigame = "{\"entries\":[],\"minigameIndex\":1,\"latestScores\":[{\"scoreValue\":70,\"time\":\"19/04/2023 22:32:39\"},{\"scoreValue\":55,\"time\":\"20/04/2023 11:50:10\"},{\"scoreValue\":55,\"time\":\"20/04/2023 13:27:15\"}],\"highestScores\":[{\"scoreValue\":70,\"time\":\"19/04/2023 22:32:39\"},{\"scoreValue\":55,\"time\":\"20/04/2023 11:50:10\"},{\"scoreValue\":55,\"time\":\"20/04/2023 13:27:15\"}]}"; string oneUser = $"{{\"version\":1537,\"users\":[{{\"entries\":[],\"username\":\"Tester0\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[{minigame}],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0,\"useGPU\":false}}"; 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); } /// /// Setup the MinigameProgressCard tests /// private IEnumerator Setup_MinigameProgressCard_Empty() { string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; string minigame = "{\"entries\":[],\"minigameIndex\":0,\"latestScores\":[],\"highestScores\":[]}"; string oneUser = $"{{\"version\":1537,\"users\":[{{\"entries\":[],\"username\":\"Tester0\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[{minigame}],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0,\"useGPU\":false}}"; 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); } /// /// Cleanup after testing /// [TearDown] public void TearDown_MinigameProgressCard() { PersistentDataController.PATH = null; } /// /// Test whether every item that needs to be assign in the editor, is assigned /// [UnityTest] public IEnumerator Test_EditorAssignments() { yield return Setup_MinigameProgressCard(); var card = GameObject.FindObjectOfType(); Assert.IsNotNull(card); Assert.IsNotNull(card.button); Assert.IsNotNull(card.minigameProgress); Assert.IsNotNull(card.minigameList); Assert.IsNotNull(card.thumbnail); Assert.IsNotNull(card.title); Assert.IsNotNull(card.highscore); } /// /// Test whether the card is correctly initialized /// [UnityTest] public IEnumerator Test_Start() { yield return Setup_MinigameProgressCard(); var card = GameObject.FindObjectOfType(); Minigame minigame = card.minigameList.GetMinigameByIndex(card.minigameProgress.minigameIndex); Assert.AreEqual(minigame.thumbnail, card.thumbnail.sprite); Assert.AreEqual(minigame.title, card.title.text); Assert.AreEqual($"TOPSCORE: {card.minigameProgress.highestScores[0].scoreValue}", card.highscore.text); } /// /// Test whether an empty card is correctly initialized /// [UnityTest] public IEnumerator Test_Start_Empty() { yield return Setup_MinigameProgressCard_Empty(); var card = GameObject.FindObjectOfType(); Minigame minigame = card.minigameList.GetMinigameByIndex(card.minigameProgress.minigameIndex); Assert.AreEqual(minigame.thumbnail, card.thumbnail.sprite); Assert.AreEqual(minigame.title, card.title.text); Assert.AreEqual("(NOG) GEEN TOPSCORE", card.highscore.text); } }