Resolve WES-192 "Fix progress screen"

This commit is contained in:
Dries Van Schuylenbergh
2023-05-04 09:09:49 +00:00
parent 259259ac9c
commit 89f343780a
34 changed files with 4330 additions and 496 deletions

View File

@@ -33,13 +33,16 @@ public class CourseProgressCardTests
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayCourses();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_ChangeUserScreen()
public void TearDown_MinigameProgressCard()
{
PersistentDataController.PATH = null;
}

View File

@@ -0,0 +1,78 @@
using NUnit.Framework;
using System.Collections;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.TestTools;
/// <summary>
/// Test the LearnableProgressCard class
/// </summary>
[TestFixture]
public class LearnableProgressCardTests
{
/// <summary>
/// Wait time between scene transitions
/// </summary>
private const float WAIT_TIME = 0.2f;
/// <summary>
/// Setup the LearnableProgressCard tests
/// </summary>
[UnitySetUp]
public IEnumerator Setup_CourseProgressCard()
{
string path = $"{Application.persistentDataPath}/wesign_unit_test.json";
string course = "{\"entries\":[],\"courseIndex\":0,\"progress\":0.03846153989434242,\"completedLearnables\":1,\"inUseLearnables\":7,\"totalLearnables\":26,\"learnables\":[{\"entries\":[],\"index\":0,\"inUse\":true,\"name\":\"A\",\"progress\":3.0},{\"entries\":[],\"index\":1,\"inUse\":true,\"name\":\"B\",\"progress\":4.5},{\"entries\":[],\"index\":2,\"inUse\":true,\"name\":\"C\",\"progress\":1.5},{\"entries\":[],\"index\":3,\"inUse\":true,\"name\":\"D\",\"progress\":1.5},{\"entries\":[],\"index\":4,\"inUse\":true,\"name\":\"E\",\"progress\":1.5},{\"entries\":[],\"index\":5,\"inUse\":true,\"name\":\"F\",\"progress\":1.5},{\"entries\":[],\"index\":6,\"inUse\":true,\"name\":\"G\",\"progress\":0.0},{\"entries\":[],\"index\":7,\"inUse\":false,\"name\":\"H\",\"progress\":0.0},{\"entries\":[],\"index\":8,\"inUse\":false,\"name\":\"I\",\"progress\":0.0},{\"entries\":[],\"index\":9,\"inUse\":false,\"name\":\"J\",\"progress\":0.0},{\"entries\":[],\"index\":10,\"inUse\":false,\"name\":\"K\",\"progress\":0.0},{\"entries\":[],\"index\":11,\"inUse\":false,\"name\":\"L\",\"progress\":0.0},{\"entries\":[],\"index\":12,\"inUse\":false,\"name\":\"M\",\"progress\":0.0},{\"entries\":[],\"index\":13,\"inUse\":false,\"name\":\"N\",\"progress\":0.0},{\"entries\":[],\"index\":14,\"inUse\":false,\"name\":\"O\",\"progress\":0.0},{\"entries\":[],\"index\":15,\"inUse\":false,\"name\":\"P\",\"progress\":0.0},{\"entries\":[],\"index\":16,\"inUse\":false,\"name\":\"Q\",\"progress\":0.0},{\"entries\":[],\"index\":17,\"inUse\":false,\"name\":\"R\",\"progress\":0.0},{\"entries\":[],\"index\":18,\"inUse\":false,\"name\":\"S\",\"progress\":0.0},{\"entries\":[],\"index\":19,\"inUse\":false,\"name\":\"T\",\"progress\":0.0},{\"entries\":[],\"index\":20,\"inUse\":false,\"name\":\"U\",\"progress\":0.0},{\"entries\":[],\"index\":21,\"inUse\":false,\"name\":\"V\",\"progress\":0.0},{\"entries\":[],\"index\":22,\"inUse\":false,\"name\":\"W\",\"progress\":0.0},{\"entries\":[],\"index\":23,\"inUse\":false,\"name\":\"X\",\"progress\":0.0},{\"entries\":[],\"index\":24,\"inUse\":false,\"name\":\"Y\",\"progress\":0.0},{\"entries\":[],\"index\":25,\"inUse\":false,\"name\":\"Z\",\"progress\":0.0}]}";
string oneUser = $"{{\"version\":1027,\"users\":[{{\"entries\":[],\"username\":\"Tester0\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"courses\":[{course}]}}],\"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();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayCourses();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_MinigameProgressCard()
{
PersistentDataController.PATH = null;
}
/// <summary>
/// Test whether every item that needs to be assign in the editor, is assigned
/// </summary>
[Test]
public void Test_EditorAssignments()
{
var card = GameObject.FindObjectOfType<LearnableProgressCard>();
Assert.IsNotNull(card);
Assert.IsNotNull(card.learnable);
Assert.IsNotNull(card.thumbnail);
Assert.IsNotNull(card.stars);
Assert.AreEqual(3, card.stars.Count);
}
/// <summary>
/// Test whether the card is correctly initialized
/// </summary>
[Test]
public void Test_Start()
{
var card = GameObject.FindObjectOfType<LearnableProgressCard>();
Assert.AreEqual(card.learnable.image, card.thumbnail.sprite);
var starRewards = new float[] { 1.0f, 2.5f, 4.0f, };
for (int i = 0; i < 3; i++)
Assert.AreEqual(starRewards[i] < card.progress.progress ? Color.white : Color.black, card.stars[i].color);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 238c4a8454aff2744ac782a49d2fbbd6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -19,8 +19,7 @@ public class MinigameProgressCardTests
/// <summary>
/// Setup the MinigameProgressCard tests
/// </summary>
[UnitySetUp]
public IEnumerator Setup_MinigameProgressCard()
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\"}]}";
@@ -33,13 +32,37 @@ public class MinigameProgressCardTests
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Setup the MinigameProgressCard tests
/// </summary>
private IEnumerator Setup_MinigameProgressCard_Empty()
{
string path = $"{Application.persistentDataPath}/wesign_unit_test.json";
string minigame = "{\"entries\":[],\"minigameIndex\":0,\"latestScores\":[],\"highestScores\":[]}";
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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_ChangeUserScreen()
public void TearDown_MinigameProgressCard()
{
PersistentDataController.PATH = null;
}
@@ -47,9 +70,11 @@ public class MinigameProgressCardTests
/// <summary>
/// Test whether every item that needs to be assign in the editor, is assigned
/// </summary>
[Test]
public void Test_EditorAssignments()
[UnityTest]
public IEnumerator Test_EditorAssignments()
{
yield return Setup_MinigameProgressCard();
var card = GameObject.FindObjectOfType<MinigameProgressCard>();
Assert.IsNotNull(card);
Assert.IsNotNull(card.button);
@@ -63,15 +88,33 @@ public class MinigameProgressCardTests
/// <summary>
/// Test whether the card is correctly initialized
/// </summary>
[Test]
public void Test_Start()
[UnityTest]
public IEnumerator Test_Start()
{
yield return Setup_MinigameProgressCard();
var card = GameObject.FindObjectOfType<MinigameProgressCard>();
Minigame minigame = card.minigameList.GetMinigameByIndex(card.minigameProgress.minigameIndex);
Assert.AreEqual(minigame.thumbnail, card.thumbnail.sprite);
Assert.AreEqual(minigame.title, card.title.text);
Assert.AreEqual(card.highscore.text, $"Topscore: {card.minigameProgress.highestScores[0].scoreValue}");
Assert.AreEqual($"TOPSCORE: {card.minigameProgress.highestScores[0].scoreValue}", card.highscore.text);
}
/// <summary>
/// Test whether an empty card is correctly initialized
/// </summary>
[UnityTest]
public IEnumerator Test_Start_Empty()
{
yield return Setup_MinigameProgressCard_Empty();
var card = GameObject.FindObjectOfType<MinigameProgressCard>();
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);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 20981edad710f544984afd94847fa502
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,191 @@
using NUnit.Framework;
using System.Collections;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.UI;
/// <summary>
/// Test the PanelMinigameProgress class
/// </summary>
[TestFixture]
public class PanelMinigameProgressTests
{
/// <summary>
/// Wait time between scene transitions
/// </summary>
private const float WAIT_TIME = 0.2f;
/// <summary>
/// Setup the PanelMinigameProgress tests
/// </summary>
private IEnumerator Setup_PanelMinigameProgress()
{
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\":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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Setup the PanelMinigameProgress tests
/// </summary>
private IEnumerator Setup_PanelMinigameProgress_Empty()
{
string path = $"{Application.persistentDataPath}/wesign_unit_test.json";
string oneUser = $"{{\"version\":1027,\"users\":[{{\"entries\":[],\"username\":\"Tester0\",\"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();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Setup the PanelMinigameProgress tests
/// </summary>
private IEnumerator Setup_PanelMinigameProgress_NoScorePresent()
{
string path = $"{Application.persistentDataPath}/wesign_unit_test.json";
string minigame = "{\"entries\":[],\"minigameIndex\":1,\"latestScores\":[],\"highestScores\":[]}";
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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Setup the PanelMinigameProgress tests
/// </summary>
private IEnumerator Setup_PanelMinigameProgress_Multiple()
{
string path = $"{Application.persistentDataPath}/wesign_unit_test.json";
string minigame = "[{\"entries\":[],\"minigameIndex\":1,\"latestScores\":[{\"scoreValue\":70,\"time\":\"20/04/2023 16:08:43\"},{\"scoreValue\":20,\"time\":\"20/04/2023 16:11:53\"}],\"highestScores\":[{\"scoreValue\":70,\"time\":\"20/04/2023 16:08:43\"},{\"scoreValue\":20,\"time\":\"20/04/2023 16:11:53\"}]},{\"entries\":[],\"minigameIndex\":2,\"latestScores\":[{\"scoreValue\":194,\"time\":\"20/04/2023 15:27:41\"},{\"scoreValue\":155,\"time\":\"20/04/2023 15:28:56\"},{\"scoreValue\":84,\"time\":\"20/04/2023 15:42:10\"},{\"scoreValue\":465,\"time\":\"20/04/2023 16:14:22\"}],\"highestScores\":[{\"scoreValue\":465,\"time\":\"20/04/2023 16:14:22\"},{\"scoreValue\":194,\"time\":\"20/04/2023 15:27:41\"},{\"scoreValue\":155,\"time\":\"20/04/2023 15:28:56\"},{\"scoreValue\":84,\"time\":\"20/04/2023 15:42:10\"}]},{\"entries\":[],\"minigameIndex\":0,\"latestScores\":[{\"scoreValue\":1090,\"time\":\"20/04/2023 16:02:14\"},{\"scoreValue\":1180,\"time\":\"20/04/2023 16:07:02\"}],\"highestScores\":[{\"scoreValue\":1180,\"time\":\"20/04/2023 16:07:02\"},{\"scoreValue\":1090,\"time\":\"20/04/2023 16:02:14\"}]}]";
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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_PanelMinigameProgress()
{
PersistentDataController.PATH = null;
}
/// <summary>
/// Test whether every item that needs to be assign in the editor, is assigned
/// </summary>
[UnityTest]
public IEnumerator Test_EditorAssignments()
{
yield return Setup_PanelMinigameProgress();
var panel = GameObject.FindObjectOfType<PanelMinigameProgress>();
Assert.IsNotNull(panel);
Assert.IsNotNull(panel.minigameList);
Assert.IsNotNull(panel.minigameCardPrefab);
Assert.IsNotNull(panel.minigamesContainer);
Assert.IsNotNull(panel.minigameInfo);
Assert.IsNotNull(panel.emptyMinigames);
Assert.IsNotNull(panel.minigameTitle);
Assert.IsNotNull(panel.progressGraph);
Assert.IsNotNull(panel.emptyHighscore);
}
[UnityTest]
public IEnumerator Test_Start()
{
yield return Setup_PanelMinigameProgress();
var panel = GameObject.FindObjectOfType<PanelMinigameProgress>();
Assert.IsTrue(panel.minigameInfo.gameObject.activeSelf);
Assert.IsFalse(panel.emptyMinigames.gameObject.activeSelf);
Assert.IsFalse(panel.emptyHighscore.gameObject.activeSelf);
Assert.IsTrue(panel.progressGraph.gameObject.activeSelf);
var minigame = panel.minigameList.GetMinigameByIndex(MinigameIndex.HANGMAN);
Assert.AreEqual(minigame.title, panel.minigameTitle.text);
}
[UnityTest]
public IEnumerator Test_Start_Empty()
{
yield return Setup_PanelMinigameProgress_Empty();
var panel = GameObject.FindObjectOfType<PanelMinigameProgress>();
Assert.IsFalse(panel.minigameInfo.gameObject.activeSelf);
Assert.IsTrue(panel.emptyMinigames.gameObject.activeSelf);
}
[UnityTest]
public IEnumerator Test_Start_NoScorePresent()
{
yield return Setup_PanelMinigameProgress_NoScorePresent();
var panel = GameObject.FindObjectOfType<PanelMinigameProgress>();
Assert.IsTrue(panel.minigameInfo.gameObject.activeSelf);
Assert.IsFalse(panel.emptyMinigames.gameObject.activeSelf);
Assert.IsTrue(panel.emptyHighscore.gameObject.activeSelf);
Assert.IsFalse(panel.progressGraph.gameObject.activeSelf);
}
/// <summary>
/// Test whether we can select a minigame
/// </summary>
[UnityTest]
public IEnumerator Test_UpdateSelection()
{
yield return Setup_PanelMinigameProgress_Multiple();
var panel = GameObject.FindObjectOfType<PanelMinigameProgress>();
var minigames = GameObject.FindObjectsOfType<MinigameProgressCard>();
var currentMinigame = minigames[0];
currentMinigame.selectActivity.Invoke();
yield return new WaitForSeconds(WAIT_TIME);
Assert.AreEqual(Color.blue, currentMinigame.GetComponent<Image>().color);
for (int i = 1; i < minigames.Length; i++)
Assert.AreEqual(Color.gray, minigames[i].GetComponent<Image>().color);
Assert.AreEqual(currentMinigame.title.text, panel.minigameTitle.text);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f046d113e8709db438b49af46e271111
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,128 @@
using NUnit.Framework;
using System;
using System.Collections;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.TestTools;
/// <summary>
/// Test the ProgressGraph class
/// </summary>
[TestFixture]
public class ProgressGraphTests
{
/// <summary>
/// Wait time between scene transitions
/// </summary>
private const float WAIT_TIME = 0.2f;
/// <summary>
/// Setup the ProgressGraph tests
/// </summary>
private IEnumerator Setup_ProgressGraph(int amount, Func<int, int> 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<UserAvatarList>("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake();
SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen");
yield return new WaitForSeconds(WAIT_TIME);
GameObject.FindObjectOfType<UserProgressScreen>().DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
}
/// <summary>
/// Test whether every item that needs to be assign in the editor, is assigned
/// </summary>
[UnityTest]
public IEnumerator Test_EditorAssignments()
{
yield return Setup_ProgressGraph(1, (i) => i);
var graph = GameObject.FindObjectOfType<ProgressGraph>();
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);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: be53c4208fff73845b85978e1ecae7d4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -38,7 +38,7 @@ public class UserCardTests
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_ChangeUserScreen()
public void TearDown_UserCard()
{
PersistentDataController.PATH = null;
}

View File

@@ -40,7 +40,7 @@ public class UserCreationScreenTests
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_ChangeUserScreen()
public void TearDown_UserCreationScreen()
{
PersistentDataController.PATH = null;
}

View File

@@ -5,7 +5,6 @@ using System.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.UI;
/// <summary>
/// Test the UserProgressScreen class
@@ -42,7 +41,7 @@ public class UserProgressScreenTests
/// Cleanup after testing
/// </summary>
[TearDown]
public void TearDown_ChangeUserScreen()
public void TearDown_UserProgressScreen()
{
PersistentDataController.PATH = null;
}
@@ -58,15 +57,10 @@ public class UserProgressScreenTests
var userProgressController = GameObject.FindObjectOfType<UserProgressScreen>();
Assert.IsNotNull(userProgressController.username);
Assert.IsNotNull(userProgressController.avatar);
Assert.IsNotNull(userProgressController.playtime);
Assert.IsNotNull(userProgressController.highscoreMarker);
Assert.IsNotNull(userProgressController.courseCardPrefab);
Assert.IsNotNull(userProgressController.coursesContainer);
Assert.IsNotNull(userProgressController.emptyCourses);
Assert.IsNotNull(userProgressController.minigameCardPrefab);
Assert.IsNotNull(userProgressController.minigamesContainer);
Assert.IsNotNull(userProgressController.emptyMinigames);
Assert.IsNotNull(userProgressController.progressGraph);
Assert.IsNotNull(userProgressController.coursesPanel);
Assert.IsNotNull(userProgressController.coursesTabButton);
Assert.IsNotNull(userProgressController.minigamesPanel);
Assert.IsNotNull(userProgressController.minigamesTabButton);
}
/// <summary>
@@ -82,17 +76,10 @@ public class UserProgressScreenTests
Assert.AreEqual(user.GetUsername(), userProgressController.username.text);
Assert.AreEqual(user.GetAvatar(), userProgressController.avatar.sprite);
Assert.AreEqual($"Totale speeltijd: {user.GetPlaytime().ToString("0.00")}", userProgressController.playtime.text);
Assert.IsFalse(userProgressController.progressGraph.gameObject.activeSelf);
Assert.IsTrue(userProgressController.emptyCourses.gameObject.activeSelf);
Assert.IsFalse(userProgressController.coursesContainer.gameObject.activeSelf);
Assert.IsTrue(userProgressController.coursesPanel.activeSelf);
Assert.Zero(GameObject.FindObjectsOfType<CourseProgressCard>().Length);
Assert.IsTrue(userProgressController.emptyMinigames.gameObject.activeSelf);
Assert.IsFalse(userProgressController.minigamesContainer.gameObject.activeSelf);
Assert.Zero(GameObject.FindObjectsOfType<MinigameProgressCard>().Length);
Assert.IsFalse(userProgressController.minigamesPanel.activeSelf);
}
/// <summary>
@@ -108,87 +95,37 @@ public class UserProgressScreenTests
Assert.AreEqual(user.GetUsername(), userProgressController.username.text);
Assert.AreEqual(user.GetAvatar(), userProgressController.avatar.sprite);
Assert.AreEqual($"Totale speeltijd: {user.GetPlaytime().ToString("0.00")}", userProgressController.playtime.text);
Assert.IsFalse(userProgressController.progressGraph.gameObject.activeSelf);
Assert.IsFalse(userProgressController.emptyCourses.gameObject.activeSelf);
Assert.IsTrue(userProgressController.coursesContainer.gameObject.activeSelf);
Assert.IsTrue(userProgressController.coursesPanel.activeSelf);
var courses = GameObject.FindObjectsOfType<CourseProgressCard>().ToList();
Assert.AreEqual(user.GetCourses().Count, courses.Count);
foreach (var course in courses)
Assert.AreEqual(Color.gray, course.GetComponent<Image>().color);
Assert.IsFalse(userProgressController.emptyMinigames.gameObject.activeSelf);
Assert.IsTrue(userProgressController.minigamesContainer.gameObject.activeSelf);
var minigames = GameObject.FindObjectsOfType<MinigameProgressCard>().ToList();
Assert.AreEqual(user.GetMinigames().Count, minigames.Count);
foreach (var minigame in minigames)
Assert.AreEqual(Color.gray, minigame.GetComponent<Image>().color);
Assert.IsFalse(userProgressController.minigamesPanel.activeSelf);
}
/// <summary>
/// Test whether we can select a course
/// </summary>
[UnityTest]
public IEnumerator Test_UpdateSelection_Course()
public IEnumerator Test_DisplayCourses()
{
yield return Setup_UserProgressScreen();
var userProgressController = GameObject.FindObjectOfType<UserProgressScreen>();
var course = GameObject.FindObjectOfType<CourseProgressCard>();
var minigame = GameObject.FindObjectOfType<MinigameProgressCard>();
Assert.IsFalse(userProgressController.progressGraph.gameObject.activeSelf);
Assert.AreEqual(Color.gray, course.GetComponent<Image>().color);
Assert.AreEqual(Color.gray, minigame.GetComponent<Image>().color);
userProgressController.DisplayCourses();
yield return new WaitForSeconds(WAIT_TIME);
course.selectActivity.Invoke();
Assert.IsFalse(userProgressController.progressGraph.gameObject.activeSelf);
Assert.AreEqual(Color.blue, course.GetComponent<Image>().color);
Assert.AreEqual(Color.gray, minigame.GetComponent<Image>().color);
Assert.IsTrue(userProgressController.coursesPanel.activeSelf);
Assert.IsFalse(userProgressController.minigamesPanel.activeSelf);
}
/// <summary>
/// Test whether we can select a minigame
/// </summary>
[UnityTest]
public IEnumerator Test_UpdateSelection_Minigame()
public IEnumerator Test_DisplayMinigames()
{
yield return Setup_UserProgressScreen();
var userProgressController = GameObject.FindObjectOfType<UserProgressScreen>();
var course = GameObject.FindObjectOfType<CourseProgressCard>();
var minigame = GameObject.FindObjectOfType<MinigameProgressCard>();
Assert.IsFalse(userProgressController.progressGraph.gameObject.activeSelf);
Assert.AreEqual(Color.gray, course.GetComponent<Image>().color);
Assert.AreEqual(Color.gray, minigame.GetComponent<Image>().color);
userProgressController.DisplayMinigames();
yield return new WaitForSeconds(WAIT_TIME);
minigame.selectActivity.Invoke();
Assert.IsTrue(userProgressController.progressGraph.gameObject.activeSelf);
Assert.AreEqual(Color.gray, course.GetComponent<Image>().color);
Assert.AreEqual(Color.blue, minigame.GetComponent<Image>().color);
}
/// <summary>
/// Test whether the course graph is correctly displayed
/// </summary>
/// <remarks>Code is not implemented yet</remarks>
[UnityTest]
public IEnumerator Test_DisplayCourseGraph()
{
// TODO: not implemented yet
yield return null;
}
/// <summary>
/// Test whether the minigame graph is correctly displayed
/// </summary>
/// <remarks>Code is not implemented yet</remarks>
[UnityTest]
public IEnumerator Test_DisplayMinigameGraph()
{
// TODO: not implemented yet
yield return null;
Assert.IsFalse(userProgressController.coursesPanel.activeSelf);
Assert.IsTrue(userProgressController.minigamesPanel.activeSelf);
}
}