using NUnit.Framework; using System.Collections; using System.IO; using UnityEditor; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.TestTools; /// /// Test the MainMenuScreen class /// public class MainMenuScreenTests { /// /// Setup function to prepare the test environment before each test. /// [UnitySetUp] public IEnumerator SetupFunction() { string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; string oneUser = $"{{\"version\":1537,\"users\":[{{\"entries\":[],\"username\":\"TEST\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"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(); SceneManager.LoadScene("Common/Scenes/MainMenuScreen"); yield return new WaitForSeconds(0.2f); } /// /// Cleanup after testing. /// [TearDown] public void TearDown_MainMenuScreenTests() { PersistentDataController.PATH = null; } /// /// Test to verify the transition to the CourseMenuScreen. /// [UnityTest] public IEnumerator GotoCoursesTest() { var mainMenuScreen = GameObject.FindObjectOfType(); mainMenuScreen.GotoCourses(); yield return new WaitForSeconds(0.2f); var courseMenuScreen = GameObject.FindObjectOfType(); Assert.IsNotNull(courseMenuScreen); } /// /// Test to verify the transition to the ListMinigamesScreen. /// [UnityTest] public IEnumerator GotoMiniGamesTest() { var mainMenuScreen = GameObject.FindObjectOfType(); mainMenuScreen.GotoMinigames(); yield return new WaitForSeconds(0.2f); var listMinigamesScreen = GameObject.FindObjectOfType(); Assert.IsNotNull(listMinigamesScreen); } /// /// Test to verify the behavior when the user data is deleted. /// [UnityTest] public IEnumerator DeletedUserTest() { // Remove the user data file File.Delete(PersistentDataController.PATH); SceneManager.LoadScene("Common/Scenes/MainMenuScreen"); yield return new WaitForSeconds(0.2f); var userCreationScreen = GameObject.FindObjectOfType(); Assert.IsNotNull(userCreationScreen); } /// /// Test to verify the behavior when starting the scene from the Boot scene. /// [UnityTest] public IEnumerator StartFromBootTest() { SystemController.GetInstance().previousScene = SystemController.GetSceneIndex("Common/Scenes/Boot"); SceneManager.LoadScene("Common/Scenes/MainMenuScreen"); yield return new WaitForSeconds(0.2f); var mainMenuScreen = GameObject.FindObjectOfType(); Assert.IsTrue(mainMenuScreen.directorEnterFromBoot.state == UnityEngine.Playables.PlayState.Playing); } /// /// Test to verify the transition to the SettingsScreen. /// [UnityTest] public IEnumerator GotoSettingsTest() { var mainMenuScreen = GameObject.FindObjectOfType(); mainMenuScreen.GotoSettings(); yield return new WaitForSeconds(0.2f); var settingsScreen = GameObject.FindObjectOfType(); Assert.IsNotNull(settingsScreen); GameObject backbutton = GameObject.Find("ButtonBack"); Assert.IsNotNull(backbutton); backbutton.GetComponent().onClick.Invoke(); } /// /// Tests the QuicApplication function of the MainMenuScreen /// [UnityTest] public IEnumerator QuitAppTest() { var mainMenuScreen = GameObject.FindObjectOfType(); mainMenuScreen.QuitApplication(); yield return new WaitForSeconds(0.2f); } }