Resolve WES-187 "Unit tests common and course"
This commit is contained in:
committed by
Jerome Coudron
parent
672ff367e2
commit
48b915acba
@@ -161,6 +161,16 @@ public class CoursesController : AbstractFeedback
|
||||
/// </summary>
|
||||
private GameObject previousPanel = null;
|
||||
|
||||
/// <summary>
|
||||
/// Boolean used to make a test possible
|
||||
/// </summary>
|
||||
private bool corruptPanelId = false;
|
||||
|
||||
/// <summary>
|
||||
/// Corrupted PanelID Value
|
||||
/// </summary>
|
||||
private int CorruptedPanelIDValue = 999;
|
||||
|
||||
/// <summary>
|
||||
/// This function is called when the script is initialised.
|
||||
/// It inactivatis the popup, finds a webcam to use and links it via the WebcamTexture to the display RawImage.
|
||||
@@ -319,7 +329,13 @@ public class CoursesController : AbstractFeedback
|
||||
/// <returns>Reference to the GameObject of the panel</returns>
|
||||
private GameObject SetupPanel()
|
||||
{
|
||||
(currentWordIndex, panelId) = FetchSign().ToValueTuple();
|
||||
if (corruptPanelId == true)
|
||||
{
|
||||
(currentWordIndex, panelId) = (1, CorruptedPanelIDValue);
|
||||
} else
|
||||
{
|
||||
(currentWordIndex, panelId) = FetchSign().ToValueTuple();
|
||||
}
|
||||
switch (panelId)
|
||||
{
|
||||
case 0:
|
||||
@@ -413,9 +429,11 @@ public class CoursesController : AbstractFeedback
|
||||
if (currentWordIndex < course.theme.learnables.Count && panelId != 1 && !hasAnswered)
|
||||
{
|
||||
// Get current sign
|
||||
|
||||
Learnable sign = course.theme.learnables[currentWordIndex];
|
||||
string currentSign = sign.name.ToUpper().Replace(" ", "-");
|
||||
|
||||
|
||||
// Get the predicted sign
|
||||
if (signPredictor != null && signPredictor.learnableProbabilities != null &&
|
||||
currentSign != null && signPredictor.learnableProbabilities.ContainsKey(currentSign))
|
||||
@@ -567,4 +585,60 @@ public class CoursesController : AbstractFeedback
|
||||
UserList.Save();
|
||||
SystemController.GetInstance().BackToPreviousScene();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns panelId for testing
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int GetPanelId()
|
||||
{
|
||||
return panelId;
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns currentSign for testing
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetCurrentSign()
|
||||
{
|
||||
Learnable sign = course.theme.learnables[currentWordIndex];
|
||||
return sign.name.ToUpper().Replace(" ", "-");
|
||||
}
|
||||
/// <summary>
|
||||
/// Used for testing an out of bounds PanelId
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public void CorruptPanelID()
|
||||
{
|
||||
corruptPanelId = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Needed to be able to test an out of bounds PanelId
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public IEnumerator CallSetupPanel()
|
||||
{
|
||||
yield return SetupPanel();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Needed to be able to test an out of bounds PanelId
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public void SetFeedbackProgress()
|
||||
{
|
||||
feedbackProgress.value = 0.0f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Open multiple choice panel for testing
|
||||
/// </summary>
|
||||
public IEnumerator SummonMultipleChoice()
|
||||
{
|
||||
CorruptPanelID();
|
||||
CorruptedPanelIDValue = 1;
|
||||
yield return CRNextSign();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
366
Assets/Courses/Tests/PlayMode/CourseControllerTests.cs
Normal file
366
Assets/Courses/Tests/PlayMode/CourseControllerTests.cs
Normal file
@@ -0,0 +1,366 @@
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
[TestFixture]
|
||||
public class CoursesControllerTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Setup the environment before each test
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
|
||||
SceneManager.LoadScene("Common/Scenes/MainMenuScreen");
|
||||
yield return null;
|
||||
|
||||
var mainMenuScreen = GameObject.FindObjectOfType<MainMenuScreen>();
|
||||
mainMenuScreen.GotoCourses();
|
||||
yield return null;
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cleanup after testing
|
||||
/// </summary>
|
||||
[TearDown]
|
||||
public void TearDown_CoursesControllerTests()
|
||||
{
|
||||
PersistentDataController.PATH = null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Function used to Spoof the sign predictor. The it uses 0f as certainty so the sign is "perfect".
|
||||
/// </summary>
|
||||
/// <param name="sign"></param>
|
||||
/// <param name="signPredictor"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerator SignLetter(string sign, SignPredictor signPredictor)
|
||||
{
|
||||
signPredictor.learnableProbabilities = new Dictionary<string, float>();
|
||||
// Loop through all capital letters of the alphabet
|
||||
for (char c = 'A'; c <= 'Z'; c++)
|
||||
{
|
||||
string letter = c.ToString();
|
||||
|
||||
// If the current letter is the input sign, set its value to 0.
|
||||
// Otherwise, set it to 20.
|
||||
signPredictor.learnableProbabilities[letter] = letter == sign ? 0f : 20f;
|
||||
}
|
||||
|
||||
foreach (Listener listener in signPredictor.listeners)
|
||||
{
|
||||
yield return listener.ProcessIncomingCall();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Simulates a little playtrough of a course
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator PlaytroughTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
var signPredictor = GameObject.FindObjectOfType<SignPredictor>();
|
||||
Assert.IsNotNull(signPredictor);
|
||||
|
||||
int counter = 0;
|
||||
while (counter < 100)
|
||||
{
|
||||
if (coursesController.GetPanelId() == 0 || coursesController.GetPanelId() == 2)
|
||||
{
|
||||
yield return SignLetter(coursesController.GetCurrentSign(), signPredictor);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject buttonObject = GameObject.Find("Choice Fingerspelling(Clone)");
|
||||
Assert.IsNotNull(buttonObject);
|
||||
Button button = buttonObject.GetComponent<Button>();
|
||||
button.onClick.Invoke();
|
||||
}
|
||||
yield return new WaitForSeconds(1.0f);
|
||||
counter++;
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(2.0f);
|
||||
coursesController.FinishCourse();
|
||||
coursesController.ReturnToActivityScreen();
|
||||
yield return new WaitForSeconds(1.0f);
|
||||
}
|
||||
/// <summary>
|
||||
/// Tests a preview course
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator PreviewTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(CourseIndex.CLOTHING);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
Assert.AreEqual(coursesController.GetPanelId(), 1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests the finisihing of a course
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator FinishedCourseTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(CourseIndex.FINGERSPELLING);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
var course = coursesController.courselist.courses[coursesController.courselist.currentCourseIndex];
|
||||
var maxWords = course.theme.learnables.Count;
|
||||
User user = UserList.GetCurrentUser();
|
||||
var progress = user.GetCourseProgress(CourseIndex.FINGERSPELLING);
|
||||
progress.completedLearnables = maxWords;
|
||||
|
||||
coursesController.NextSign();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tests what happens when a panel is being summoned with a none existing ID
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator BrokenPanelIDTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(CourseIndex.FINGERSPELLING);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
coursesController.CorruptPanelID();
|
||||
yield return coursesController.CallSetupPanel();
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
}
|
||||
/// <summary>
|
||||
/// Tests what happens when the sign is correct but not certain enough
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator UnconfidentTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
var signPredictor = GameObject.FindObjectOfType<SignPredictor>();
|
||||
Assert.IsNotNull(signPredictor);
|
||||
|
||||
Course course = coursesController.courselist.courses[coursesController.courselist.currentCourseIndex];
|
||||
Learnable sign = course.theme.learnables[0];
|
||||
|
||||
string signletter = "A";
|
||||
signPredictor.learnableProbabilities = new Dictionary<string, float>();
|
||||
for (char c = 'A'; c <= 'Z'; c++)
|
||||
{
|
||||
string letter = c.ToString();
|
||||
signPredictor.learnableProbabilities[letter] = letter == signletter ? sign.thresholdDistance * 1.2f : 20f;
|
||||
}
|
||||
foreach (Listener listener in signPredictor.listeners)
|
||||
{
|
||||
yield return listener.ProcessIncomingCall();
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(1.0f);
|
||||
Assert.AreEqual(coursesController.GetCurrentSign(), "A");
|
||||
}
|
||||
/// <summary>
|
||||
/// Test what happens when an incorrect sign is signed
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator IncorrectSignTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
var signPredictor = GameObject.FindObjectOfType<SignPredictor>();
|
||||
Assert.IsNotNull(signPredictor);
|
||||
|
||||
yield return SignLetter("B", signPredictor);
|
||||
yield return new WaitForSeconds(1.0f);
|
||||
Assert.AreEqual(coursesController.GetCurrentSign(), "A");
|
||||
}
|
||||
/// <summary>
|
||||
/// Test what happens when there is no sign being signed
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator NoSignTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
var signPredictor = GameObject.FindObjectOfType<SignPredictor>();
|
||||
Assert.IsNotNull(signPredictor);
|
||||
|
||||
yield return SignLetter("-", signPredictor);
|
||||
yield return new WaitForSeconds(1.0f);
|
||||
Assert.AreEqual(coursesController.GetCurrentSign(), "A");
|
||||
}
|
||||
/// <summary>
|
||||
/// Tests what happens when a wrong sign is performed twice but with a long enough interval
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator TwoWrongFastTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
var signPredictor = GameObject.FindObjectOfType<SignPredictor>();
|
||||
Assert.IsNotNull(signPredictor);
|
||||
|
||||
Course course = coursesController.courselist.courses[coursesController.courselist.currentCourseIndex];
|
||||
Learnable sign = course.theme.learnables[0];
|
||||
|
||||
yield return SignLetter("B", signPredictor);
|
||||
|
||||
yield return new WaitForSeconds(2.1f);
|
||||
|
||||
yield return SignLetter("B", signPredictor);
|
||||
|
||||
Assert.AreEqual(coursesController.GetCurrentSign(), "A");
|
||||
}
|
||||
/// <summary>
|
||||
/// Tests what happens when the sign can not be processed but the Feedback is not Null
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator FeedbackNotNullTest()
|
||||
{
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
var signPredictor = GameObject.FindObjectOfType<SignPredictor>();
|
||||
Assert.IsNotNull(signPredictor);
|
||||
|
||||
signPredictor.learnableProbabilities = null;
|
||||
coursesController.SetFeedbackProgress();
|
||||
|
||||
foreach (Listener listener in signPredictor.listeners)
|
||||
{
|
||||
yield return listener.ProcessIncomingCall();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
11
Assets/Courses/Tests/PlayMode/CourseControllerTests.cs.meta
Normal file
11
Assets/Courses/Tests/PlayMode/CourseControllerTests.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 08f61c7671fe3c64687258bc3f82f38f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -4,7 +4,15 @@
|
||||
"references": [
|
||||
"UnityEngine.TestRunner",
|
||||
"UnityEditor.TestRunner",
|
||||
"CourseScripts"
|
||||
"CourseScripts",
|
||||
"CommonScripts",
|
||||
"InterfacesScripts",
|
||||
"ArchitectureScripts",
|
||||
"AccountsScripts",
|
||||
"MediaPipeUnityScripts",
|
||||
"SignPredictor",
|
||||
"SignPredictorInterfaces",
|
||||
""
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": [],
|
||||
|
||||
93
Assets/Courses/Tests/PlayMode/PaneTests.cs
Normal file
93
Assets/Courses/Tests/PlayMode/PaneTests.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
[TestFixture]
|
||||
public class PaneTests
|
||||
{
|
||||
/// <summary>
|
||||
/// Setup the environment before each test
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
|
||||
SceneManager.LoadScene("Common/Scenes/MainMenuScreen");
|
||||
yield return null;
|
||||
|
||||
var mainMenuScreen = GameObject.FindObjectOfType<MainMenuScreen>();
|
||||
mainMenuScreen.GotoCourses();
|
||||
yield return null;
|
||||
|
||||
var courseMenuScreen = GameObject.FindObjectOfType<CourseMenuScreen>();
|
||||
var courseList = courseMenuScreen.courseList;
|
||||
Assert.IsNotNull(courseList, "Course was not started.");
|
||||
courseList.SetCurrentCourse(0);
|
||||
SystemController.GetInstance().LoadNextScene("Common/Scenes/CourseActivityScreen");
|
||||
yield return null;
|
||||
|
||||
var courseActivityScreen = GameObject.FindObjectOfType<CourseActivityScreen>();
|
||||
Assert.IsNotNull(courseActivityScreen);
|
||||
courseActivityScreen.StartCourse();
|
||||
yield return null;
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Cleanup after testing
|
||||
/// </summary>
|
||||
[TearDown]
|
||||
public void TearDown_PaneTests()
|
||||
{
|
||||
PersistentDataController.PATH = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test pausing/resuming the video in all course panels
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[UnityTest]
|
||||
public IEnumerator PlayPauseTest()
|
||||
{
|
||||
var coursesController = GameObject.FindObjectOfType<CoursesController>();
|
||||
Assert.IsNotNull(coursesController);
|
||||
|
||||
yield return null;
|
||||
|
||||
PanelWithVideoAndImage panel = GameObject.FindObjectOfType<PanelWithVideoAndImage>();
|
||||
Assert.IsNotNull(panel);
|
||||
|
||||
panel.TogglePlayPause();
|
||||
yield return null;
|
||||
Assert.IsTrue(panel.videoPlayer.isPlaying == false);
|
||||
panel.TogglePlayPause();
|
||||
yield return null;
|
||||
Assert.IsTrue(panel.videoPlayer.isPlaying == true);
|
||||
|
||||
yield return coursesController.SummonMultipleChoice();
|
||||
|
||||
PanelMultipleChoice panel2 = GameObject.FindObjectOfType<PanelMultipleChoice>();
|
||||
Assert.IsNotNull(panel2);
|
||||
|
||||
panel2.TogglePlayPause();
|
||||
yield return null;
|
||||
Assert.IsTrue(panel2.videoPlayer.isPlaying == false);
|
||||
panel2.TogglePlayPause();
|
||||
yield return null;
|
||||
Assert.IsTrue(panel2.videoPlayer.isPlaying == true);
|
||||
yield return null;
|
||||
|
||||
}
|
||||
}
|
||||
11
Assets/Courses/Tests/PlayMode/PaneTests.cs.meta
Normal file
11
Assets/Courses/Tests/PlayMode/PaneTests.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e93be4ce8a774984b8f79e5b6828780f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user