Merge branch 'WES-110-spelling-bee-tests' into 'development'

Spelling bee tests

See merge request wesign/unity-application!58
This commit was merged in pull request #58.
This commit is contained in:
Jerome Coudron
2023-03-25 22:47:27 +00:00
8 changed files with 202 additions and 10 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2fd5cdf8e7f70bf4882b352aaaa8a2bf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,78 @@
using System.Collections;
using System.Linq;
using System.IO;
using NUnit.Framework;
using TMPro;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.SceneManagement;
public class GameControllerTests
{
[UnitySetUp]
public IEnumerator SetupFunction()
{
string path = $"{Application.persistentDataPath}/unit_test_users.json";
var oneUser = "{\"currentUserIndex\": 0,\"storedUsers\": [{\"username\": \"TEST\",\"avatar\": {\"instanceID\": 40848},\"playtime\": 0.0,\"courses\": [],\"minigames\": []}]}";
using (StreamWriter writer = new StreamWriter(path))
{
writer.Write(oneUser);
}
SystemController.GetInstance().LoadNextScene("SpellingBee/Scenes/Game");
yield return new WaitForSeconds(0.2f);
}
[UnityTest]
public IEnumerator CheckScoreTest()
{
GameController gameController = (GameController)GameObject.FindObjectOfType(typeof(GameController));
yield return new WaitForSeconds(0.2f);
Assert.AreEqual(0, gameController.CalculateScore());
gameController.NextWord();
Assert.AreEqual(5, gameController.CalculateScore());
gameController.NextLetter(true);
Assert.AreEqual(6, gameController.CalculateScore());
}
[UnityTest]
public IEnumerator ActivateGameOverTest()
{
GameController gameController = (GameController)GameObject.FindObjectOfType(typeof(GameController));
gameController.ActivateGameOver();
yield return new WaitForSeconds(0.2f);
GameEndedPanel gameEndedPanel = (GameEndedPanel)GameObject.FindObjectOfType(typeof(GameEndedPanel));
Assert.NotNull(gameEndedPanel);
Assert.AreEqual("VERLOREN", gameEndedPanel.endText.text);
}
[UnityTest]
public IEnumerator ActivateWinTests()
{
GameController gameController = (GameController)GameObject.FindObjectOfType(typeof(GameController));
gameController.ActivateWin();
yield return new WaitForSeconds(0.2f);
GameEndedPanel gameEndedPanel = (GameEndedPanel)GameObject.FindObjectOfType(typeof(GameEndedPanel));
Assert.NotNull(gameEndedPanel);
Assert.AreEqual("GEWONNEN", gameEndedPanel.endText.text);
}
[UnityTest]
public IEnumerator CheckGameOverTest()
{
GameController gameController = (GameController)GameObject.FindObjectOfType(typeof(GameController));
gameController.AddSeconds(-60);
yield return new WaitForSeconds(0.1f);
GameEndedPanel gameEndedPanel = (GameEndedPanel)GameObject.FindObjectOfType(typeof(GameEndedPanel));
Assert.NotNull(gameEndedPanel);
Assert.AreEqual("VERLOREN", gameEndedPanel.endText.text);
}
}

View File

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

View File

@@ -0,0 +1,52 @@
using System.Collections;
using System.Linq;
using System.IO;
using NUnit.Framework;
using TMPro;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.SceneManagement;
public class GameEndedPanelTests
{
[UnitySetUp]
public IEnumerator SetupFunction()
{
string path = $"{Application.persistentDataPath}/unit_test_users.json";
var oneUser = "{\"currentUserIndex\": 0,\"storedUsers\": [{\"username\": \"TEST\",\"avatar\": {\"instanceID\": 40848},\"playtime\": 0.0,\"courses\": [],\"minigames\": []}]}";
using (StreamWriter writer = new StreamWriter(path))
{
writer.Write(oneUser);
}
SystemController.GetInstance().LoadNextScene("SpellingBee/Scenes/Game");
yield return new WaitForSeconds(0.2f);
}
[UnityTest]
public IEnumerator ScoreTest()
{
GameController gameController = (GameController)GameObject.FindObjectOfType(typeof(GameController));
gameController.NextWord();
gameController.NextLetter(false);
gameController.NextLetter(true);
gameController.NextLetter(false);
yield return new WaitForSeconds(1f);
gameController.ActivateWin();
GameEndedPanel gameEndedPanel = (GameEndedPanel)GameObject.FindObjectOfType(typeof(GameEndedPanel));
Assert.NotNull(gameEndedPanel);
Assert.AreEqual("Score: 6", gameEndedPanel.scoreText.text);
Assert.AreEqual("1", gameEndedPanel.lettersRightText.text);
Assert.AreEqual("2", gameEndedPanel.lettersWrongText.text);
Assert.AreEqual("3", gameEndedPanel.lettersTotalText.text);
Assert.AreEqual("00:01", gameEndedPanel.timeText.text);
}
}

View File

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

View File

@@ -0,0 +1,25 @@
{
"name": "SpellingBeePlayModeTests",
"rootNamespace": "",
"references": [
"UnityEngine.TestRunner",
"UnityEditor.TestRunner",
"InterfacesScripts",
"Unity.TextMeshPro",
"SpellingBeeScripts",
"AccountsScripts"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": true,
"precompiledReferences": [
"nunit.framework.dll"
],
"autoReferenced": false,
"defineConstraints": [
"UNITY_INCLUDE_TESTS"
],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8024acb9574451c40ba558529a3ef51c
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -241,7 +241,7 @@ public partial class GameController : MonoBehaviour
/// <summary>
/// Randomly shuffle the list of words
/// </summary>
private void ShuffleWords()
public void ShuffleWords()
{
for (int i = words.Count - 1; i > 0; i--)
{
@@ -257,7 +257,7 @@ public partial class GameController : MonoBehaviour
/// Calculate the score
/// </summary>
/// <returns>The calculated score</returns>
private int CalculateScore()
public int CalculateScore()
{
return spelledWords * 5 + correctLetters;
}
@@ -265,7 +265,7 @@ public partial class GameController : MonoBehaviour
/// <summary>
/// Displays the game over panel and score values
/// </summary>
private void ActivateGameOver()
public void ActivateGameOver()
{
gameEnded = true;
DeleteWord();
@@ -287,7 +287,7 @@ public partial class GameController : MonoBehaviour
/// <summary>
/// Display win screen
/// </summary>
private void ActivateWin()
public void ActivateWin()
{
gameEnded = true;
DeleteWord();
@@ -309,7 +309,7 @@ public partial class GameController : MonoBehaviour
/// <summary>
/// Update and save the scores
/// </summary>
private void SaveScores()
public void SaveScores()
{
// Calculate new score
int newScore = CalculateScore();
@@ -344,7 +344,7 @@ public partial class GameController : MonoBehaviour
/// <summary>
/// Delete all letter objects
/// </summary>
private void DeleteWord()
public void DeleteWord()
{
for (int i = 0; i < letters.Count; i++)
{
@@ -357,7 +357,7 @@ public partial class GameController : MonoBehaviour
/// Adds seconds to timer
/// </summary>
/// <param name="seconds"></param>
private void AddSeconds(int seconds)
public void AddSeconds(int seconds)
{
timerValue += (float)seconds;
bonusTimeText.SetActive(true);
@@ -368,7 +368,7 @@ public partial class GameController : MonoBehaviour
/// Display the next letter
/// </summary>
/// <param name="successful">true if the letter was correctly signed, false otherwise</param>
private void NextLetter(bool successful)
public void NextLetter(bool successful)
{
// Change color of current letter (skip spaces)
if (successful)
@@ -402,7 +402,7 @@ public partial class GameController : MonoBehaviour
/// <summary>
/// Display next word in the series
/// </summary>
private void NextWord()
public void NextWord()
{
DeleteWord();
spelledWords++;
@@ -425,7 +425,7 @@ public partial class GameController : MonoBehaviour
/// Displays the word that needs to be spelled
/// </summary>
/// <param name="word">The word to display</param>
private void DisplayWord(string word)
public void DisplayWord(string word)
{
for (int i = 0; i < word.Length; i++)
{