diff --git a/Assets/Common/Scripts/BootScreen.cs b/Assets/Common/Scripts/BootScreen.cs index b1a7c71..ff2f9e6 100644 --- a/Assets/Common/Scripts/BootScreen.cs +++ b/Assets/Common/Scripts/BootScreen.cs @@ -31,7 +31,21 @@ public class BootScreen : MonoBehaviour { if (0 < WebCamTexture.devices.Length) { - SystemController.GetInstance().SwapScene("Common/Scenes/MainMenuScreen"); + WebCamTexture webcamTexture = new WebCamTexture(); + webcamTexture.deviceName = WebCamTexture.devices[0].name; + + webcamTexture.Play(); + yield return new WaitForSeconds(0.1f); // Wait a little for the webcam to start + + if (webcamTexture.isPlaying) + { + webcamTexture.Stop(); + SystemController.GetInstance().SwapScene("Common/Scenes/MainMenuScreen"); + } + else + { + errorText.text = "Zorg ervoor dat je webcam niet in gebruik is door een andere applicatie!"; + } } else { @@ -43,4 +57,6 @@ public class BootScreen : MonoBehaviour errorText.text = "Zorg ervoor dat deze applicatie toegang heeft tot je webcam!"; } } + + } diff --git a/Assets/Common/Scripts/UserButton.cs b/Assets/Common/Scripts/UserButton.cs index ee25a5e..1958b9c 100644 --- a/Assets/Common/Scripts/UserButton.cs +++ b/Assets/Common/Scripts/UserButton.cs @@ -3,7 +3,7 @@ using UnityEngine; using UnityEngine.UI; /// -/// Handles actions when a user presses the account button (upper left corner) +/// Handles actions when a user presses the account button (upper right corner) /// public class UserButton : MonoBehaviour { diff --git a/Assets/Common/Tests/PlayMode/BackButtonTests.cs b/Assets/Common/Tests/PlayMode/BackButtonTests.cs index a802033..fbc3f64 100644 --- a/Assets/Common/Tests/PlayMode/BackButtonTests.cs +++ b/Assets/Common/Tests/PlayMode/BackButtonTests.cs @@ -7,12 +7,15 @@ using UnityEngine.TestTools; public class BackButtonTests { - + /// + /// Setup the environment before each test + /// + /// [UnitySetUp] public IEnumerator SetupFunction() { string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; - string oneUser = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[{{\"entries\":[],\"username\":\"TEST\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string oneUser = $"{{\"version\":1027,\"users\":[{{\"entries\":[],\"username\":\"TEST\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; File.WriteAllText(path, oneUser); PersistentDataController.PATH = path; @@ -24,15 +27,28 @@ public class BackButtonTests yield return new WaitForSeconds(0.2f); } + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_BackButtonTests() + { + PersistentDataController.PATH = null; + } + + /// + /// Tests returning to the previous screen with the backbutton + /// + /// [UnityTest] public IEnumerator BackTest() { - var backButton = (BackButton)GameObject.FindObjectOfType(typeof(BackButton)); + var backButton = GameObject.FindObjectOfType (); backButton.Back(); yield return new WaitForSeconds(0.2f); - var mainMenuScreen = (MainMenuScreen)GameObject.FindObjectOfType(typeof(MainMenuScreen)); + var mainMenuScreen = GameObject.FindObjectOfType(); Assert.IsNotNull(mainMenuScreen); } } diff --git a/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef b/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef index 1f100b1..b1b5755 100644 --- a/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef +++ b/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef @@ -10,7 +10,10 @@ "Unity.TextMeshPro", "AccountsScripts", "SignPredictor", - "ArchitectureScripts" + "ArchitectureScripts", + "HangmanScripts", + "MinigameScripts", + "SpellingBeeScripts" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Common/Tests/PlayMode/CourseActivityTests.cs b/Assets/Common/Tests/PlayMode/CourseActivityTests.cs index 15829a0..77f90b1 100644 --- a/Assets/Common/Tests/PlayMode/CourseActivityTests.cs +++ b/Assets/Common/Tests/PlayMode/CourseActivityTests.cs @@ -7,29 +7,80 @@ using UnityEngine.TestTools; public class CourseActivityTests { - + /// + /// Setup the environment before each test + /// + /// [UnitySetUp] public IEnumerator SetupFunction() { string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; - string oneUser = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[{{\"entries\":[],\"username\":\"TEST\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string oneUser = $"{{\"version\":1027,\"users\":[{{\"entries\":[],\"username\":\"TEST\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"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().LoadNextScene("Common/Scenes/CourseActivityScreen"); + SystemController.GetInstance().LoadNextScene("Common/Scenes/Boot"); yield return new WaitForSeconds(0.2f); } - [UnityTest] - public IEnumerator StartCoursesTests() + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_CourseActivityTests() { - var courseActivityScreen = (CourseActivityScreen)GameObject.FindObjectOfType(typeof(CourseActivityScreen)); - courseActivityScreen.StartCourse(); + PersistentDataController.PATH = null; + } + /// + /// Full tests of the CoursesActivityScreen + /// + /// + [UnityTest] + public IEnumerator CoursesActivityTest() + { + var mainMenuScreen = GameObject.FindObjectOfType(); + mainMenuScreen.GotoCourses(); yield return new WaitForSeconds(0.2f); - var templateCourse = (CoursesController)GameObject.FindObjectOfType(typeof(CoursesController)); + var courseMenuScreen = GameObject.FindObjectOfType(); + Assert.IsNotNull(courseMenuScreen, "Course was not started."); + + var courseList = courseMenuScreen.courseList; + Assert.IsNotNull(courseList, "Course was not started."); + courseList.SetCurrentCourse(0); + SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen"); + + yield return new WaitForSeconds(0.2f); + + var courseActivityScreen = GameObject.FindObjectOfType(); + Assert.IsNotNull(courseActivityScreen); + courseActivityScreen.StartCourse(); + yield return new WaitForSeconds(0.5f); + + var templateCourse = GameObject.FindObjectOfType(); Assert.IsNotNull(templateCourse); + + templateCourse.ReturnToActivityScreen(); + yield return new WaitForSeconds(0.2f); + + var courseActivityScreen2 = GameObject.FindObjectOfType(); + Assert.IsNotNull(courseActivityScreen2); + + courseActivityScreen2.ResetCourseProgress(); + yield return new WaitForSeconds(0.2f); + + var templateCourse2 = GameObject.FindObjectOfType(); + Assert.IsNotNull(templateCourse2); + + var user = UserList.GetCurrentUser(); + var progress = user.GetCourseProgress(0); + progress.progress = 1.00f; + progress.inUseLearnables = 0; + + templateCourse2.ReturnToActivityScreen(); + yield return new WaitForSeconds(0.2f); } } + diff --git a/Assets/Common/Tests/PlayMode/CourseItemTests.cs b/Assets/Common/Tests/PlayMode/CourseItemTests.cs new file mode 100644 index 0000000..cb816ea --- /dev/null +++ b/Assets/Common/Tests/PlayMode/CourseItemTests.cs @@ -0,0 +1,53 @@ +using NUnit.Framework; +using UnityEngine.UI; +using System.Collections; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestTools; + +public class CourseItemTests +{ + [UnitySetUp] + public IEnumerator SetupFunction() + { + string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; + string oneUser = $"{{\"version\":1027,\"users\":[{{\"entries\":[],\"username\":\"TEST\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"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().LoadNextScene("Common/Scenes/CoursesMenuScreen"); + yield return new WaitForSeconds(0.2f); + } + + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_CourseItemTests() + { + PersistentDataController.PATH = null; + } + + /// + /// Test to verify the callback function of a course item button. + /// + [UnityTest] + public IEnumerator CallBackTest() + { + GameObject buttonObject = GameObject.Find("Course Item(Clone)"); + Assert.IsNotNull(buttonObject, "Could not find button object"); + + Button button = buttonObject.GetComponent