Files
unity-application/Assets/Accounts/Tests/UserTest.cs
Jelle De Geest c6faf3bf6f Sprint 3
2023-03-26 21:23:17 +00:00

167 lines
5.1 KiB
C#

using NUnit.Framework;
using System;
using System.Collections.Generic;
/// <summary>
/// Test the User class
/// </summary>
[TestFixture]
public class UserTest
{
/// <summary>
/// Reference to the user to be tested
/// </summary>
private User user;
/// <summary>
/// Setup the tests
/// </summary>
[SetUp]
public void Setup_User()
{
user = new User();
}
/// <summary>
/// Test for the creation of a new user
/// </summary>
[Test]
public void Test_New_User()
{
Assert.NotNull(user);
Assert.Zero(user.courses.Count);
Assert.Zero(user.minigames.Count);
}
/// <summary>
/// Test whether progress on a new course can be added
/// </summary>
[Test]
public void Test_User_AddCourse()
{
Progress p = new Progress();
user.courses.Add(p);
Assert.AreEqual(user.courses.Count, 1);
Assert.Zero(user.minigames.Count);
}
/// <summary>
/// Test whether progress on a new minigame can be added
/// </summary>
[Test]
public void Test_User_AddMinigame()
{
Progress p = new Progress();
user.minigames.Add(p);
Assert.Zero(user.courses.Count);
Assert.AreEqual(user.minigames.Count, 1);
}
/// <summary>
/// Test GetRecentCourses will return empty when no progress is stored
/// </summary>
[Test]
public void Test_User_GetRecentCourses_Empty()
{
Assert.Zero(user.GetRecentCourses().Count);
}
/// <summary>
/// TEMPORARY test for GetRecentCourses will return all progress that is stored
/// </summary>
[Test]
public void Test_User_GetRecentCourses_All()
{
Progress p = new Progress();
p.AddOrUpdate<CourseIndex>("courseIndex", CourseIndex.FINGERSPELLING);
p.AddOrUpdate<float>("courseProgress", 0.5f);
user.courses.Add(p);
List<Tuple<CourseIndex, float>> list = user.GetRecentCourses();
Assert.AreEqual(list.Count, 1);
Assert.AreEqual(list[0].Item1, CourseIndex.FINGERSPELLING);
Assert.AreEqual(list[0].Item2, 0.5f);
}
/// <summary>
/// Test GetRecommendedCourses will return <c>Tuple<CourseIndex.FINGERSPELLING, 0.0></c> when no progress is stored
/// </summary>
[Test]
public void Test_User_GetRecommendedCourses_Empty()
{
List<Tuple<CourseIndex, float>> list = user.GetRecommendedCourses();
Assert.AreEqual(list.Count, 1);
Assert.AreEqual(list[0].Item1, CourseIndex.FINGERSPELLING);
Assert.AreEqual(list[0].Item2, 0.0f);
}
/// <summary>
/// TEMPORARY test for GetRecommenedCourses will return all progress that is stored
/// </summary>
[Test]
public void Test_User_GetRecommendedCourses_All()
{
Progress p = new Progress();
p.AddOrUpdate<CourseIndex>("courseIndex", CourseIndex.FINGERSPELLING);
p.AddOrUpdate<float>("courseProgress", 0.5f);
user.courses.Add(p);
List<Tuple<CourseIndex, float>> list = user.GetRecommendedCourses();
Assert.AreEqual(list.Count, 1);
Assert.AreEqual(list[0].Item1, CourseIndex.FINGERSPELLING);
Assert.AreEqual(list[0].Item2, 0.5f);
}
/// <summary>
/// Test GetCourseProgress returns null when course cannot be found
/// </summary>
[Test]
public void Test_User_GetCourseProgress_Null()
{
Assert.Null(user.GetCourseProgress(CourseIndex.FINGERSPELLING));
Assert.Null(user.GetCourseProgress((CourseIndex)100));
}
/// <summary>
/// Test GetCourseProgress returns correct progress object
/// </summary>
[Test]
public void Test_User_GetCourseProgress_Valid()
{
Progress p = new Progress();
p.AddOrUpdate<CourseIndex>("courseIndex", CourseIndex.FINGERSPELLING);
p.AddOrUpdate<float>("courseProgress", 3.14159265f);
user.courses.Add(p);
Progress q = user.GetCourseProgress(CourseIndex.FINGERSPELLING);
Assert.AreEqual(q.Get<CourseIndex>("courseIndex"), CourseIndex.FINGERSPELLING);
Assert.AreEqual(q.Get<float>("courseProgress"), 3.14159265f);
}
/// <summary>
/// Test GetMinigameProgress returns null when minigame cannot be found
/// </summary>
[Test]
public void Test_User_GetMinigameProgress_Null()
{
Assert.Null(user.GetMinigameProgress(MinigameIndex.SPELLING_BEE));
Assert.Null(user.GetMinigameProgress((MinigameIndex)100));
Progress p = new Progress();
p.AddOrUpdate<MinigameIndex>("minigameIndex", MinigameIndex.SPELLING_BEE);
user.minigames.Add(p);
Assert.Null(user.GetMinigameProgress(MinigameIndex.HANGMAN));
}
/// <summary>
/// Test GetMinigameProgress returns correct progress object
/// </summary>
[Test]
public void Test_User_GetMinigameProgress_Valid()
{
Progress p = new Progress();
p.AddOrUpdate<MinigameIndex>("minigameIndex", MinigameIndex.SPELLING_BEE);
user.minigames.Add(p);
Progress q = user.GetMinigameProgress(MinigameIndex.SPELLING_BEE);
Assert.AreEqual(q.Get<CourseIndex>("minigameIndex"), CourseIndex.FINGERSPELLING);
}
}