diff --git a/.gitignore b/.gitignore index e1e8c6d..3532347 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,4 @@ crashlytics-build.properties .DS_Store /ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json +CodeCoverage/ diff --git a/Assets/Accounts/Scripts/User.cs b/Assets/Accounts/Scripts/User.cs index 7a57238..79d20b1 100644 --- a/Assets/Accounts/Scripts/User.cs +++ b/Assets/Accounts/Scripts/User.cs @@ -26,19 +26,16 @@ public class User /// /// Get the username /// - /// public string GetUsername() { return storedUserData.username; } /// /// Get the total playtime /// - /// public double GetPlaytime() { return storedUserData.playtime; } /// /// Get the avatar /// - /// public Sprite GetAvatar() { return UserList.AVATARS[storedUserData.avatarIndex]; } diff --git a/Assets/Accounts/Scripts/UserProgressScreen.cs b/Assets/Accounts/Scripts/UserProgressScreen.cs index a89fcbb..d5fac81 100644 --- a/Assets/Accounts/Scripts/UserProgressScreen.cs +++ b/Assets/Accounts/Scripts/UserProgressScreen.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using TMPro; using UnityEngine; using UnityEngine.UI; @@ -70,26 +69,6 @@ public class UserProgressScreen : MonoBehaviour /// public RawImage progressGraph; - /// - /// Left and right padding of the graph - /// - private const int GRAPH_PADDING_X_PX = 50; - - /// - /// Top and bottom padding of the graph - /// - private const int GRAPH_PADDING_Y_PX = 50; - - /// - /// Radius of the point on the graph - /// - private const int GRAPH_POINT_RADIUS = 10; - - /// - /// Size of the line on the graph - /// - private const int GRAPH_LINE_SIZE = 4; - /// /// Current selected activity draw to the graph /// @@ -113,8 +92,7 @@ public class UserProgressScreen : MonoBehaviour // Set correct displayed items username.text = user.GetUsername(); avatar.sprite = user.GetAvatar(); - // TODO: implement total playtime - //playtime.text = $"Totale speeltijd: {user.playtime.ToString("0.00")}"; + playtime.text = $"Totale speeltijd: {user.GetPlaytime().ToString("0.00")}"; // Set graph inactive progressGraph.gameObject.SetActive(false); @@ -206,170 +184,6 @@ public class UserProgressScreen : MonoBehaviour /// Plot the graph of a minigame /// /// Index of the minigame - private void DisplayMinigameGraph(MinigameIndex minigameIndex) - { - var progress = user.GetMinigameProgress(minigameIndex); - List latestScores = progress.latestScores; - List highestScores = progress.highestScores; - if (0 < highestScores.Count) - { - PlotGraph(latestScores.ConvertAll((s) => (double)s.scoreValue), highestScores[0].scoreValue); - } - else - { - progressGraph.gameObject.SetActive(false); - } - } - - /// - /// Plot points and a highscore on the graph - /// - /// List of score values to plot - /// Highscore value (this will be plotted in a fancy color) - private void PlotGraph(List scores, double highscore) - { - // Remove previous marker(s) - foreach (Transform child in progressGraph.gameObject.transform) - { - Destroy(child.gameObject); - } - - // Get texture reference - Texture2D tex = progressGraph.texture as Texture2D; - if (tex == null) - { - RectTransform rt = progressGraph.gameObject.transform as RectTransform; - tex = new Texture2D( - width: (int)rt.sizeDelta.x, - height: (int)rt.sizeDelta.y, - textureFormat: TextureFormat.ARGB32, - mipCount: 3, - linear: true - ); - } - tex.filterMode = FilterMode.Point; - - // calculate positions and offsets - int x0 = GRAPH_PADDING_X_PX, x1 = tex.width - GRAPH_PADDING_X_PX; - int y0 = GRAPH_PADDING_Y_PX, y1 = tex.height - GRAPH_PADDING_Y_PX; - double min = scores.Min(); - double max = scores.Max(); - - List> points = new List>(); - for (int i = 0; i < scores.Count; i++) - { - int x = x0 + (scores.Count > 1 ? i * ((x1 - x0) / (scores.Count - 1)) : (x1 - x0) / 2); - int y = y0 + (int)((y1 - y0) * (min != max ? (scores[i] - min) / (max - min) : 0.5)); - points.Add(Tuple.Create(x, y)); - } - - // Calculate scaling - int mag = (int)Math.Round(Math.Log10(max)); - int MAG = (int)Math.Pow(10, mag); - double c = max / MAG; - - // Draw axes - if (min != max) - { - for (double d = c / 5.0; d < c; d += 0.2 * c) - { - int y = y0 + (int)((y1 - y0) * (MAG * d - min) / (max - min)); - DrawLine(tex, x0, y, x1, y, 2, Color.gray); - } - } - else - { - int y = y0 + (int)((y1 - y0) * 0.5); - DrawLine(tex, x0, y0, x1, y0, 2, Color.gray); - DrawLine(tex, x0, y, x1, y, 2, Color.gray); - DrawLine(tex, x0, y1, x1, y1, 2, Color.gray); - } - - // Draw highscore - if (min <= highscore && highscore <= max) - { - int y = y0 + (int)((y1 - y0) * (min != max ? (highscore - min) / (max - min) : 0.5)); - DrawLine(tex, x0, y, x1, y, 3, new Color(255, 192, 0)); - GameObject marker = GameObject.Instantiate(highscoreMarker, progressGraph.gameObject.transform); - RectTransform rect = marker.GetComponent(); - rect.localPosition = new Vector3(0, y - 25, 0); - } - - // Draw points - for (int i = 0; i < points.Count; i++) - { - Tuple p = points[i]; - if (0 < i) - { - Tuple q = points[i - 1]; - DrawLine(tex, p.Item1, p.Item2, q.Item1, q.Item2, GRAPH_LINE_SIZE, Color.blue); - } - DrawPoint(tex, p.Item1, p.Item2, GRAPH_POINT_RADIUS, Color.blue); - } - - // Apply to graph GameObject - tex.Apply(); - progressGraph.texture = tex; - } - - /// - /// Draw a point to a texture - /// - /// Texture2D to plot point on - /// Center x-pos - /// Center y-pos - /// Radius (aka width and height) - /// Color of the point - private void DrawPoint(Texture2D tex, int xc, int yc, int r, Color color) - { - for (int y = yc - r; y < yc + r; y++) - { - for (int x = xc - r; x < xc + r; x++) - { - tex.SetPixel(x, y, color); - } - } - } - - /// - /// Draw a line to a texture - /// - /// Texture2D to plot line on - /// Starting x-pos - /// Strating y-pos - /// Ending x-pos - /// Ending y-pos - /// Size of the line (width) - /// Color of the line - private void DrawLine(Texture2D tex, int x0, int y0, int x1, int y1, int size, Color color) - { - int w = x1 - x0; - int h = y1 - y0; - - int length = Mathf.Abs(x1 - x0); - if (Mathf.Abs(y1 - y0) > length) - { - length = Mathf.Abs(h); - } - - double dx = w / (double)length; - double dy = h / (double)length; - - double x = x0; - double y = y0; - double r = size / 2; - for (int i = 0; i <= length; i++) - { - for (int j = (int)(y - r); j < y + r; j++) - { - for (int k = (int)(x - r); k < x + r; k++) - { - tex.SetPixel(k, j, color); - } - } - - x += dx; - y += dy; - } - } + /// TODO: reworking + private void DisplayMinigameGraph(MinigameIndex minigameIndex) { } } diff --git a/Assets/Courses/PlayModeTests.meta b/Assets/Accounts/Tests/EditMode.meta similarity index 77% rename from Assets/Courses/PlayModeTests.meta rename to Assets/Accounts/Tests/EditMode.meta index 0dd3079..a9a48c1 100644 --- a/Assets/Courses/PlayModeTests.meta +++ b/Assets/Accounts/Tests/EditMode.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d322616d16e32135eb3735e3bb704d05 +guid: fa6a54c35531563408befe54af56be0f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Accounts/Tests/AccountsTests.asmdef b/Assets/Accounts/Tests/EditMode/AccountEditMode.asmdef similarity index 94% rename from Assets/Accounts/Tests/AccountsTests.asmdef rename to Assets/Accounts/Tests/EditMode/AccountEditMode.asmdef index a492685..1df2de2 100644 --- a/Assets/Accounts/Tests/AccountsTests.asmdef +++ b/Assets/Accounts/Tests/EditMode/AccountEditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "AccountsTests", + "name": "AccountEditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/Accounts/Tests/AccountsTests.asmdef.meta b/Assets/Accounts/Tests/EditMode/AccountEditMode.asmdef.meta similarity index 100% rename from Assets/Accounts/Tests/AccountsTests.asmdef.meta rename to Assets/Accounts/Tests/EditMode/AccountEditMode.asmdef.meta diff --git a/Assets/Accounts/Tests/EditMode/UserAvatarListTests.cs b/Assets/Accounts/Tests/EditMode/UserAvatarListTests.cs new file mode 100644 index 0000000..5bb1b39 --- /dev/null +++ b/Assets/Accounts/Tests/EditMode/UserAvatarListTests.cs @@ -0,0 +1,27 @@ +using NUnit.Framework; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +/// +/// Test the UserAvatarList class +/// +[TestFixture] +public class UserAvatarListTests +{ + /// + /// Test the UserAvatarList class correctly initializes the UserList class + /// + [Test] + public void Test_Awake() + { + UserList.AVATARS = new List(); + + var scriptableObject = AssetDatabase.LoadAssetAtPath("Assets/Accounts/ScriptableObjects/UserAvatarList.asset"); + scriptableObject.Awake(); + + for (int i = 0; i < scriptableObject.avatars.Count; i++) + Assert.AreEqual(scriptableObject.avatars[i], UserList.AVATARS[i]); + } +} + diff --git a/Assets/Hangman/Tests/BasicTests.cs.meta b/Assets/Accounts/Tests/EditMode/UserAvatarListTests.cs.meta similarity index 83% rename from Assets/Hangman/Tests/BasicTests.cs.meta rename to Assets/Accounts/Tests/EditMode/UserAvatarListTests.cs.meta index 1fc46b5..64f3dd3 100644 --- a/Assets/Hangman/Tests/BasicTests.cs.meta +++ b/Assets/Accounts/Tests/EditMode/UserAvatarListTests.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b3a4277e90159fa578bf998923333834 +guid: 6c26e155ab597954a8c65fafe61a8e22 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Accounts/Tests/UserCreationScreenTest.cs b/Assets/Accounts/Tests/EditMode/UserCreationScreenTests.cs similarity index 96% rename from Assets/Accounts/Tests/UserCreationScreenTest.cs rename to Assets/Accounts/Tests/EditMode/UserCreationScreenTests.cs index d2fc819..924684d 100644 --- a/Assets/Accounts/Tests/UserCreationScreenTest.cs +++ b/Assets/Accounts/Tests/EditMode/UserCreationScreenTests.cs @@ -4,7 +4,7 @@ using NUnit.Framework; /// Test the UserCreationScreen class /// [TestFixture] -public class UserCreationScreenTest +public class UserCreationScreenTests { /// /// Tets IsValidUsername will return true for an valid username diff --git a/Assets/Accounts/Tests/UserCreationScreenTest.cs.meta b/Assets/Accounts/Tests/EditMode/UserCreationScreenTests.cs.meta similarity index 100% rename from Assets/Accounts/Tests/UserCreationScreenTest.cs.meta rename to Assets/Accounts/Tests/EditMode/UserCreationScreenTests.cs.meta diff --git a/Assets/Accounts/Tests/UserListTest.cs b/Assets/Accounts/Tests/EditMode/UserListTests.cs similarity index 97% rename from Assets/Accounts/Tests/UserListTest.cs rename to Assets/Accounts/Tests/EditMode/UserListTests.cs index faef19b..5e90ab0 100644 --- a/Assets/Accounts/Tests/UserListTest.cs +++ b/Assets/Accounts/Tests/EditMode/UserListTests.cs @@ -9,12 +9,12 @@ using UnityEngine; /// Test the UserList class /// [TestFixture] -public class UserListTest +public class UserListTests { /// /// Create a new path so the existing .json file will not be overwritten /// - private static string PATH = $"{Application.persistentDataPath}/unit_test_users.json"; + private static string PATH = $"{Application.persistentDataPath}/wesign_unit_test.json"; /// /// Helper variable for quick user creation @@ -26,13 +26,15 @@ public class UserListTest /// private Sprite avatar = null; + private string cachedPath; + /// /// Setup the tests /// [SetUp] public void Setup_UserList() { - PersistentDataController.PATH = UserListTest.PATH; + PersistentDataController.PATH = UserListTests.PATH; if (File.Exists(PATH)) File.Delete(PATH); @@ -42,6 +44,15 @@ public class UserListTest avatar = UserList.AVATARS[0]; } + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_UserList() + { + PersistentDataController.PATH = null; + } + /// /// Test for creation of a new UserList /// @@ -271,7 +282,7 @@ public class UserListTest /// Test whether deleting a non-existing user (referenced by wrong index) will fail /// [Test] - public void Test_UserList_DeleteUser_InValidIndex() + public void Test_UserList_DeleteUser_InvalidIndex() { User u = UserList.AddUser($"{username}_{'u'}", avatar); User v = UserList.AddUser($"{username}_{'v'}", avatar); diff --git a/Assets/Accounts/Tests/UserListTest.cs.meta b/Assets/Accounts/Tests/EditMode/UserListTests.cs.meta similarity index 100% rename from Assets/Accounts/Tests/UserListTest.cs.meta rename to Assets/Accounts/Tests/EditMode/UserListTests.cs.meta diff --git a/Assets/Accounts/Tests/UserTest.cs b/Assets/Accounts/Tests/EditMode/UserTests.cs similarity index 90% rename from Assets/Accounts/Tests/UserTest.cs rename to Assets/Accounts/Tests/EditMode/UserTests.cs index e95924d..d0daeec 100644 --- a/Assets/Accounts/Tests/UserTest.cs +++ b/Assets/Accounts/Tests/EditMode/UserTests.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; /// Test the User class /// [TestFixture] -public class UserTest +public class UserTests { /// /// Reference to the user to be tested @@ -37,6 +37,33 @@ public class UserTest Assert.Zero(user.GetMinigames().Count); } + /// + /// Test whether the correct username is returned + /// + [Test] + public void Test_User_GetUsername() + { + Assert.AreEqual("username", user.GetUsername()); + } + + /// + /// Test whether the correct avatar is returned + /// + [Test] + public void Test_User_GetAvatar() + { + Assert.AreEqual(UserList.AVATARS[0], user.GetAvatar()); + } + + /// + /// Test whether the correct total playtime is returned + /// + [Test] + public void Test_User_GetPlaytime() + { + Assert.AreEqual(0.0, user.GetPlaytime()); + } + /// /// Test whether progress on a new course can be added /// diff --git a/Assets/Accounts/Tests/UserTest.cs.meta b/Assets/Accounts/Tests/EditMode/UserTests.cs.meta similarity index 100% rename from Assets/Accounts/Tests/UserTest.cs.meta rename to Assets/Accounts/Tests/EditMode/UserTests.cs.meta diff --git a/Assets/Accounts/Tests/PlayMode.meta b/Assets/Accounts/Tests/PlayMode.meta new file mode 100644 index 0000000..1b91e1b --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03b891ac179161f4b99b84a2205edffa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Accounts/Tests/PlayMode/AccountPlayMode.asmdef b/Assets/Accounts/Tests/PlayMode/AccountPlayMode.asmdef new file mode 100644 index 0000000..00dd80a --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/AccountPlayMode.asmdef @@ -0,0 +1,26 @@ +{ + "name": "AccountPlayMode", + "rootNamespace": "", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "AccountsScripts", + "InterfacesScripts", + "Unity.TextMeshPro", + "CommonScripts", + "ArchitectureScripts" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Courses/PlayModeTests/PlayModeTests.asmdef.meta b/Assets/Accounts/Tests/PlayMode/AccountPlayMode.asmdef.meta similarity index 76% rename from Assets/Courses/PlayModeTests/PlayModeTests.asmdef.meta rename to Assets/Accounts/Tests/PlayMode/AccountPlayMode.asmdef.meta index aa1cea9..5596918 100644 --- a/Assets/Courses/PlayModeTests/PlayModeTests.asmdef.meta +++ b/Assets/Accounts/Tests/PlayMode/AccountPlayMode.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1606ac91cab3333be8c7e7281c392595 +guid: 3692a9a813d54b0449b55e372a28697a AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/Assets/Accounts/Tests/PlayMode/ChangeUserScreenTests.cs b/Assets/Accounts/Tests/PlayMode/ChangeUserScreenTests.cs new file mode 100644 index 0000000..f650f97 --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/ChangeUserScreenTests.cs @@ -0,0 +1,378 @@ +using NUnit.Framework; +using System.Collections; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; +using UnityEngine.UI; + +/// +/// Test the ChangeUserScreen class +/// +[TestFixture] +public class ChangeUserScreenTests +{ + /// + /// Wait time between scene transitions + /// + private const float WAIT_TIME = 0.2f; + + /// + /// The default current user when dealing with multiple users + /// + private const int currentUser = 2; + + /// + /// Setup the tests for a single user + /// + private IEnumerator Setup_ChangeUserScreen_SingleUser(string startScreen = "Accounts/Scenes/ChangeUserScreen") + { + 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("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + SystemController.GetInstance().SwapScene(startScreen); + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Setup the tests for a multiple users + /// + private IEnumerator Setup_ChangeUserScreen_MultipleUsers(string startScreen = "Accounts/Scenes/ChangeUserScreen") + { + string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; + string users = ""; + for (int i = 0; i < 5; i++) + { + users += $"{{\"entries\":[],\"username\":\"Tester{i}\",\"avatarIndex\":{i},\"playtime\":0.0,\"minigames\":[],\"courses\":[]}}"; + if (i < 4) users += ","; + } + const int currentUser = 2; + string fiveUsers = $"{{\"version\":1027,\"users\":[{users}],\"currentUser\":{currentUser},\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + + File.WriteAllText(path, fiveUsers); + PersistentDataController.PATH = path; + PersistentDataController.GetInstance().Load(); + AssetDatabase.LoadAssetAtPath("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + SystemController.GetInstance().SwapScene(startScreen); + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_ChangeUserScreen() + { + PersistentDataController.PATH = null; + } + + /// + /// Test whether every item that needs to be assign in the editor, is assigned + /// + [UnityTest] + public IEnumerator Test_EditorAssignments() + { + yield return Setup_ChangeUserScreen_SingleUser(); + + var changeUserController = GameObject.FindObjectOfType(); + Assert.IsNotNull(changeUserController); + Assert.IsNotNull(changeUserController.userPrefab); + Assert.IsNotNull(changeUserController.usersContainer); + Assert.IsNotNull(changeUserController.error); + } + + /// + /// Test whether the screen is correctly initialized (one user) + /// + [UnityTest] + public IEnumerator Test_Start_SingleUser() + { + yield return Setup_ChangeUserScreen_SingleUser(); + + var changeUserController = GameObject.FindObjectOfType(); + Assert.IsFalse(changeUserController.error.activeSelf); + } + + /// + /// Test whether the users is correctly displayed (one user) + /// + [UnityTest] + public IEnumerator Test_DisplayUsers_SingleUser() + { + yield return Setup_ChangeUserScreen_SingleUser(); + + // The content of the usercard is tested in the `UserCardTests`-script + // Here, we only check the amount of users + Assert.AreEqual(1, UserList.GetUsers().Count); + var cards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(1, cards.Count); + Assert.AreEqual(Color.blue, cards[0].gameObject.GetComponent().color); + } + + /// + /// Test whether the users are correctly displayed (mulitple users) + /// + [UnityTest] + public IEnumerator Test_DisplayUsers_MultipleUsers() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + // The content of the usercard is tested in the `UserCardTests`-script + // Here, we only check the amount of users and whether the correct one is selected + Assert.AreEqual(UserList.GetCurrentUser().GetUsername(), UserList.GetUserByIndex(currentUser).GetUsername()); + var cards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(UserList.GetUsers().Count, cards.Count); + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test whether selecting a new user before the current one updates the display correctly + /// + [UnityTest] + public IEnumerator Test_UpdateSelection_BeforeCurrentUser() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + var cards = GameObject.FindObjectsOfType().ToList(); + + // Before update + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + + // Update + const int newUser = 1; + cards[newUser].selectUser.Invoke(); + + // After update + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == newUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test whether selecting the current user for update the display will change nothing + /// + [UnityTest] + public IEnumerator Test_UpdateSelection_CurrentUser() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + var cards = GameObject.FindObjectsOfType().ToList(); + + // Before update + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + + // Update + cards[currentUser].selectUser.Invoke(); + + // After update + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test whether selecting a new user after the current one updates the display correctly + /// + [UnityTest] + public IEnumerator Test_UpdateSelection_AfterCurrentUser() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + var cards = GameObject.FindObjectsOfType().ToList(); + + // Before update + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + + // Update + const int newUser = 3; + cards[newUser].selectUser.Invoke(); + + // After update + for (int i = 0; i < cards.Count; i++) + { + Color expected = i == newUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, cards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test IChooseYou callback + /// + [UnityTest] + public IEnumerator Test_IChooseYou() + { + yield return Setup_ChangeUserScreen_SingleUser("Common/Scenes/MainMenuScreen"); + + SystemController.GetInstance().LoadNextScene("Accounts/Scenes/ChangeUserScreen"); + yield return new WaitForSeconds(WAIT_TIME); + + var changeUserController = GameObject.FindObjectOfType(); + changeUserController.IChooseYou(); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex("Common/Scenes/MainMenuScreen"), SystemController.GetInstance().currentScene); + } + + /// + /// Test the GotoUserCreation callback + /// + [UnityTest] + public IEnumerator Test_GotoUserCreation() + { + yield return Setup_ChangeUserScreen_SingleUser(); + + var changeUserController = GameObject.FindObjectOfType(); + changeUserController.GotoUserCreation(); + yield return new WaitForSeconds(WAIT_TIME); + + var userCreationController = GameObject.FindObjectOfType(); + Assert.IsNotNull(userCreationController); + } + + /// + /// Test the user cards DeleteUser callback + /// + [UnityTest] + public IEnumerator Test_UserCardDeleteUser_BeforeCurrentUser() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + // Before update + var oldCards = GameObject.FindObjectsOfType().ToList(); + for (int i = 0; i < oldCards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, oldCards[i].gameObject.GetComponent().color); + } + + // Update + oldCards[1].DeleteUser(); + var changeUserController = GameObject.FindObjectOfType(); + Assert.IsFalse(changeUserController.error.activeSelf); + yield return new WaitForSeconds(WAIT_TIME); + + // After update + var newCards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(oldCards.Count - 1, newCards.Count); + for (int i = 0; i < newCards.Count; i++) + { + Color expected = i == (currentUser - 1) ? Color.blue : Color.gray; + Assert.AreEqual(expected, newCards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test the user cards DeleteUser callback + /// + [UnityTest] + public IEnumerator Test_UserCardDeleteUser_CurrentUser() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + // Before update + var oldCards = GameObject.FindObjectsOfType().ToList(); + for (int i = 0; i < oldCards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, oldCards[i].gameObject.GetComponent().color); + } + + // Update + oldCards[currentUser].DeleteUser(); + var changeUserController = GameObject.FindObjectOfType(); + Assert.IsFalse(changeUserController.error.activeSelf); + yield return new WaitForSeconds(WAIT_TIME); + + // After update + var newCards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(oldCards.Count - 1, newCards.Count); + for (int i = 0; i < newCards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, newCards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test the user cards DeleteUser callback + /// + [UnityTest] + public IEnumerator Test_UserCardDeleteUser_AfterCurrentUser() + { + yield return Setup_ChangeUserScreen_MultipleUsers(); + + // Before update + var oldCards = GameObject.FindObjectsOfType().ToList(); + for (int i = 0; i < oldCards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, oldCards[i].gameObject.GetComponent().color); + } + + // Update + oldCards[3].DeleteUser(); + var changeUserController = GameObject.FindObjectOfType(); + Assert.IsFalse(changeUserController.error.activeSelf); + yield return new WaitForSeconds(WAIT_TIME); + + // After update + var newCards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(oldCards.Count - 1, newCards.Count); + for (int i = 0; i < newCards.Count; i++) + { + Color expected = i == currentUser ? Color.blue : Color.gray; + Assert.AreEqual(expected, newCards[i].gameObject.GetComponent().color); + } + } + + /// + /// Test the user cards DeleteUser callback + /// + [UnityTest] + public IEnumerator Test_UserCardDeleteUser_Invalid() + { + yield return Setup_ChangeUserScreen_SingleUser(); + + // Before update + var oldCards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(1, oldCards.Count); + Assert.AreEqual(Color.blue, oldCards[0].gameObject.GetComponent().color); + + // Update + oldCards[0].DeleteUser(); + var changeUserController = GameObject.FindObjectOfType(); + Assert.IsTrue(changeUserController.error.activeSelf); + + // After update + var newCards = GameObject.FindObjectsOfType().ToList(); + Assert.AreEqual(1, newCards.Count); + Assert.AreEqual(Color.blue, newCards[0].gameObject.GetComponent().color); + } +} diff --git a/Assets/Courses/PlayModeTests/BasicTests.cs.meta b/Assets/Accounts/Tests/PlayMode/ChangeUserScreenTests.cs.meta similarity index 83% rename from Assets/Courses/PlayModeTests/BasicTests.cs.meta rename to Assets/Accounts/Tests/PlayMode/ChangeUserScreenTests.cs.meta index 71c5f8d..0838f50 100644 --- a/Assets/Courses/PlayModeTests/BasicTests.cs.meta +++ b/Assets/Accounts/Tests/PlayMode/ChangeUserScreenTests.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 98c67df90515b0fec8184240768037cd +guid: 82964bdf541a6d64bae05c104ef64494 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Accounts/Tests/PlayMode/CourseProgressCardTests.cs b/Assets/Accounts/Tests/PlayMode/CourseProgressCardTests.cs new file mode 100644 index 0000000..48754ce --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/CourseProgressCardTests.cs @@ -0,0 +1,77 @@ +using NUnit.Framework; +using System.Collections; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +/// +/// Test the CourseProgressCard class +/// +[TestFixture] +public class CourseProgressCardTests +{ + /// + /// Wait time between scene transitions + /// + private const float WAIT_TIME = 0.2f; + + /// + /// Setup the CourseProgressCard tests + /// + [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("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen"); + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_ChangeUserScreen() + { + PersistentDataController.PATH = null; + } + + /// + /// Test whether every item that needs to be assign in the editor, is assigned + /// + [Test] + public void Test_EditorAssignments() + { + var card = GameObject.FindObjectOfType(); + Assert.IsNotNull(card); + Assert.IsNotNull(card.button); + Assert.IsNotNull(card.courseProgress); + Assert.IsNotNull(card.courseList); + Assert.IsNotNull(card.thumbnail); + Assert.IsNotNull(card.title); + Assert.IsNotNull(card.progressBar); + } + + /// + /// Test whether the card is correctly initialized + /// + [Test] + public void Test_Start() + { + var card = GameObject.FindObjectOfType(); + Course course = card.courseList.GetCourseByIndex(card.courseProgress.courseIndex); + + Assert.AreEqual(course.thumbnail, card.thumbnail.sprite); + Assert.AreEqual(course.title, card.title.text); + Assert.AreEqual(card.courseProgress.progress, card.progressBar.value); + } +} + diff --git a/Assets/JustSign/Tests/BasicTests.cs.meta b/Assets/Accounts/Tests/PlayMode/CourseProgressCardTests.cs.meta similarity index 83% rename from Assets/JustSign/Tests/BasicTests.cs.meta rename to Assets/Accounts/Tests/PlayMode/CourseProgressCardTests.cs.meta index 8f0f393..df29175 100644 --- a/Assets/JustSign/Tests/BasicTests.cs.meta +++ b/Assets/Accounts/Tests/PlayMode/CourseProgressCardTests.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5ce78cb7021f901bc8d26bf7534a92bf +guid: 82e22c178ff48c146b6c87a7552e97ed MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Accounts/Tests/PlayMode/MinigameProgressCardTests.cs b/Assets/Accounts/Tests/PlayMode/MinigameProgressCardTests.cs new file mode 100644 index 0000000..320255a --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/MinigameProgressCardTests.cs @@ -0,0 +1,77 @@ +using NUnit.Framework; +using System.Collections; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +/// +/// Test the MinigameProgressCard class +/// +[TestFixture] +public class MinigameProgressCardTests +{ + /// + /// Wait time between scene transitions + /// + private const float WAIT_TIME = 0.2f; + + /// + /// Setup the MinigameProgressCard tests + /// + [UnitySetUp] + public 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\"}]}"; + 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("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + SystemController.GetInstance().SwapScene("Accounts/Scenes/UserProgressScreen"); + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_ChangeUserScreen() + { + PersistentDataController.PATH = null; + } + + /// + /// Test whether every item that needs to be assign in the editor, is assigned + /// + [Test] + public void Test_EditorAssignments() + { + var card = GameObject.FindObjectOfType(); + Assert.IsNotNull(card); + Assert.IsNotNull(card.button); + Assert.IsNotNull(card.minigameProgress); + Assert.IsNotNull(card.minigameList); + Assert.IsNotNull(card.thumbnail); + Assert.IsNotNull(card.title); + Assert.IsNotNull(card.highscore); + } + + /// + /// Test whether the card is correctly initialized + /// + [Test] + public void Test_Start() + { + var card = GameObject.FindObjectOfType(); + 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}"); + } +} + diff --git a/Assets/Courses/Tests/BasicTests.cs.meta b/Assets/Accounts/Tests/PlayMode/MinigameProgressCardTests.cs.meta similarity index 83% rename from Assets/Courses/Tests/BasicTests.cs.meta rename to Assets/Accounts/Tests/PlayMode/MinigameProgressCardTests.cs.meta index a459051..56c3f06 100644 --- a/Assets/Courses/Tests/BasicTests.cs.meta +++ b/Assets/Accounts/Tests/PlayMode/MinigameProgressCardTests.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ec3ef897a8a62eee2b7d8822edf923d0 +guid: 5c4901279eafb874a897edf876b30def MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Accounts/Tests/PlayMode/UserCardTests.cs b/Assets/Accounts/Tests/PlayMode/UserCardTests.cs new file mode 100644 index 0000000..2e8a397 --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/UserCardTests.cs @@ -0,0 +1,71 @@ +using NUnit.Framework; +using System.Collections; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; + +/// +/// Test the UserCard class +/// +[TestFixture] +public class UserCardTests +{ + /// + /// Wait time between scene transitions + /// + private const float WAIT_TIME = 0.2f; + + /// + /// Setup the tests + /// + [UnitySetUp] + public IEnumerator Setup_UserCard() + { + 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("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + SystemController.GetInstance().SwapScene("Accounts/Scenes/ChangeUserScreen"); + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_ChangeUserScreen() + { + PersistentDataController.PATH = null; + } + + /// + /// Test whether every item that needs to be assign in the editor, is assigned + /// + [Test] + public void Test_EditorAssignments() + { + var card = GameObject.FindObjectOfType(); + Assert.IsNotNull(card); + Assert.IsNotNull(card.user); + Assert.IsNotNull(card.button); + Assert.IsNotNull(card.avatar); + Assert.IsNotNull(card.username); + } + + /// + /// Test whether the card is correctly initialized + /// + [Test] + public void Test_Start() + { + var card = GameObject.FindObjectOfType(); + Assert.AreEqual(card.user.GetAvatar(), card.avatar.sprite); + Assert.AreEqual(card.user.GetUsername(), card.username.text); + } +} + diff --git a/Assets/Accounts/Tests/PlayMode/UserCardTests.cs.meta b/Assets/Accounts/Tests/PlayMode/UserCardTests.cs.meta new file mode 100644 index 0000000..2cc308c --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/UserCardTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a9cd2a546e38bc4ba1ba66f5f9c8f71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Accounts/Tests/PlayMode/UserCreationScreenTests.cs b/Assets/Accounts/Tests/PlayMode/UserCreationScreenTests.cs new file mode 100644 index 0000000..785c001 --- /dev/null +++ b/Assets/Accounts/Tests/PlayMode/UserCreationScreenTests.cs @@ -0,0 +1,172 @@ +using NUnit.Framework; +using System.Collections; +using System.IO; +using System.Linq; +using TMPro; +using UnityEditor; +using UnityEngine; +using UnityEngine.TestTools; +using UnityEngine.UI; + +/// +/// Test the UserCreationScreen class +/// +[TestFixture] +public class UserCreationScreenTests +{ + /// + /// Wait time between scene transitions + /// + private const float WAIT_TIME = 0.2f; + + /// + /// Setup the UserCreationScreen tests + /// + private IEnumerator Setup_UserCreationScreen(string startScreen = "Accounts/Scenes/UserCreationScreen") + { + 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("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + SystemController.GetInstance().SwapScene(startScreen); + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Cleanup after testing + /// + [TearDown] + public void TearDown_ChangeUserScreen() + { + PersistentDataController.PATH = null; + } + /// + /// Test whether every item that needs to be assign in the editor, is assigned + /// + [UnityTest] + public IEnumerator Test_EditorAssignments() + { + yield return Setup_UserCreationScreen(); + + var userCreationController = GameObject.FindObjectOfType(); + Assert.IsNotNull(userCreationController); + Assert.IsNotNull(userCreationController.errorMessage); + Assert.IsNotNull(userCreationController.inputName); + Assert.IsNotNull(userCreationController.avatarsContainer); + Assert.IsNotNull(userCreationController.avatarPrefab); + Assert.IsNotNull(userCreationController.backButton); + Assert.IsTrue(UserCreationScreen.canGoBack); + } + + /// + /// Test whether the screen is correctly initialized + /// + [UnityTest] + public IEnumerator Test_Start() + { + yield return Setup_UserCreationScreen(); + + var userCreationController = GameObject.FindObjectOfType(); + Assert.IsFalse(userCreationController.errorMessage.activeSelf); + Assert.IsTrue(userCreationController.backButton.activeSelf); + + var avatars = userCreationController.avatarsContainer.GetComponentsInChildren /// MSB represent sprint version, LSB represent subversion - public static readonly int VERSION = 0x04_03; + public const int VERSION = 0x04_03; /// /// Path of the .json-file to store all serialized data @@ -194,28 +194,19 @@ public class PersistentDataController { SavedLearnableProgress learnable = learnables.Find(l => l.name == learnableName); if (learnable == null) - { - return; - } + throw new KeyNotFoundException(); // Update the progress value of the SavedLearnableProgress learnable.progress += addValue; // crop the learnable progress around -5 and 5 if (learnable.progress > 5.0f) - { learnable.progress = 5.0f; - } else if (learnable.progress < -5.0f) - { learnable.progress = -5.0f; - } // if learnable progress is big enough it is "completed" - if (learnable.progress > 3) - { completedLearnables++; - } } /// @@ -239,16 +230,15 @@ public class PersistentDataController } /// - /// find learnable in learnables which is not yet in use, and set it active + /// Find learnable in learnables which is not yet in use, and set it active /// - /// bool which indicates the success of the function - public SavedLearnableProgress AddNewLearnable() + /// SavedLearnableProgress learnable + private SavedLearnableProgress UseUnusedLearnable() { SavedLearnableProgress learnable = learnables.Find(l => !l.inUse); if (learnable == null) - { return null; - } + learnable.inUse = true; inUseLearnables++; return learnable; @@ -261,23 +251,17 @@ public class PersistentDataController public SavedLearnableProgress GetRandomLearnable() { if (!EnoughLearnables()) - { - return AddNewLearnable(); - } - else - { - // only select inUse learnables which are not yet completed (progress < 3.5f) - List inUseLearnables = learnables.FindAll(l => l.inUse && l.progress <= 3.5f); + return UseUnusedLearnable(); - if (inUseLearnables.Count == 0) - { - return null; - } + // only select inUse learnables which are not yet completed (progress < 3.5f) + List inUseLearnables = learnables.FindAll(l => l.inUse && l.progress <= 3.5f); - // Select a random index from the in-use learnables list - int randomIndex = UnityEngine.Random.Range(0, inUseLearnables.Count); - return inUseLearnables[randomIndex]; - } + if (inUseLearnables.Count == 0) + return null; + + // Select a random index from the in-use learnables list + int randomIndex = UnityEngine.Random.Range(0, inUseLearnables.Count); + return inUseLearnables[randomIndex]; } /// @@ -356,7 +340,7 @@ public class PersistentDataController public static PersistentDataController GetInstance() { // Create a new instance if non exists - if (instance == null) + if (instance == null || PATH == null) { if (PATH == null) PersistentDataController.PATH = $"{Application.persistentDataPath}/wesign_saved_data.json"; diff --git a/Assets/SystemArchitecture/Scripts/PersistentDataController.cs.meta b/Assets/Architecture/Scripts/PersistentDataController.cs.meta similarity index 100% rename from Assets/SystemArchitecture/Scripts/PersistentDataController.cs.meta rename to Assets/Architecture/Scripts/PersistentDataController.cs.meta diff --git a/Assets/SystemArchitecture/Scripts/Score.cs b/Assets/Architecture/Scripts/Score.cs similarity index 100% rename from Assets/SystemArchitecture/Scripts/Score.cs rename to Assets/Architecture/Scripts/Score.cs diff --git a/Assets/SystemArchitecture/Scripts/Score.cs.meta b/Assets/Architecture/Scripts/Score.cs.meta similarity index 100% rename from Assets/SystemArchitecture/Scripts/Score.cs.meta rename to Assets/Architecture/Scripts/Score.cs.meta diff --git a/Assets/SystemArchitecture/Scripts/SlicedSlider.cs b/Assets/Architecture/Scripts/SlicedSlider.cs similarity index 100% rename from Assets/SystemArchitecture/Scripts/SlicedSlider.cs rename to Assets/Architecture/Scripts/SlicedSlider.cs diff --git a/Assets/SystemArchitecture/Scripts/SlicedSlider.cs.meta b/Assets/Architecture/Scripts/SlicedSlider.cs.meta similarity index 100% rename from Assets/SystemArchitecture/Scripts/SlicedSlider.cs.meta rename to Assets/Architecture/Scripts/SlicedSlider.cs.meta diff --git a/Assets/SystemArchitecture/Scripts/SystemController.cs b/Assets/Architecture/Scripts/SystemController.cs similarity index 96% rename from Assets/SystemArchitecture/Scripts/SystemController.cs rename to Assets/Architecture/Scripts/SystemController.cs index 41f601f..376d43e 100644 --- a/Assets/SystemArchitecture/Scripts/SystemController.cs +++ b/Assets/Architecture/Scripts/SystemController.cs @@ -43,6 +43,11 @@ public class SystemController return instance; } + /// + /// Get the number of passively 'active' scenes + /// + public int GetSceneStackSize() { return sceneStack.Count; } + /// /// Load the scene and push on the stack /// diff --git a/Assets/SystemArchitecture/Scripts/SystemController.cs.meta b/Assets/Architecture/Scripts/SystemController.cs.meta similarity index 100% rename from Assets/SystemArchitecture/Scripts/SystemController.cs.meta rename to Assets/Architecture/Scripts/SystemController.cs.meta diff --git a/Assets/SystemArchitecture/Scripts/ThemeIndex.cs b/Assets/Architecture/Scripts/ThemeIndex.cs similarity index 100% rename from Assets/SystemArchitecture/Scripts/ThemeIndex.cs rename to Assets/Architecture/Scripts/ThemeIndex.cs diff --git a/Assets/SystemArchitecture/Scripts/ThemeIndex.cs.meta b/Assets/Architecture/Scripts/ThemeIndex.cs.meta similarity index 100% rename from Assets/SystemArchitecture/Scripts/ThemeIndex.cs.meta rename to Assets/Architecture/Scripts/ThemeIndex.cs.meta diff --git a/Assets/SystemArchitecture/Tests.meta b/Assets/Architecture/Tests.meta similarity index 100% rename from Assets/SystemArchitecture/Tests.meta rename to Assets/Architecture/Tests.meta diff --git a/Assets/Architecture/Tests/EditMode.meta b/Assets/Architecture/Tests/EditMode.meta new file mode 100644 index 0000000..b72d745 --- /dev/null +++ b/Assets/Architecture/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05ae9a4f64d7f5049b18346b8277e525 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Architecture/Tests/EditMode/ArchitectureEditMode.asmdef b/Assets/Architecture/Tests/EditMode/ArchitectureEditMode.asmdef new file mode 100644 index 0000000..abd1d00 --- /dev/null +++ b/Assets/Architecture/Tests/EditMode/ArchitectureEditMode.asmdef @@ -0,0 +1,24 @@ +{ + "name": "ArchitectureEditMode", + "rootNamespace": "", + "references": [ + "UnityEditor.TestRunner", + "UnityEngine.TestRunner", + "ArchitectureScripts" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/SystemArchitecture/Tests/ArchitectureTests.asmdef.meta b/Assets/Architecture/Tests/EditMode/ArchitectureEditMode.asmdef.meta similarity index 100% rename from Assets/SystemArchitecture/Tests/ArchitectureTests.asmdef.meta rename to Assets/Architecture/Tests/EditMode/ArchitectureEditMode.asmdef.meta diff --git a/Assets/SystemArchitecture/Tests/PersistentDataControllerTest.cs b/Assets/Architecture/Tests/EditMode/PersistentDataControllerTests.cs similarity index 76% rename from Assets/SystemArchitecture/Tests/PersistentDataControllerTest.cs rename to Assets/Architecture/Tests/EditMode/PersistentDataControllerTests.cs index ceb885d..308e803 100644 --- a/Assets/SystemArchitecture/Tests/PersistentDataControllerTest.cs +++ b/Assets/Architecture/Tests/EditMode/PersistentDataControllerTests.cs @@ -1,12 +1,15 @@ using NUnit.Framework; +using NUnit.Framework.Internal; using System; using System.Collections.Generic; using System.IO; using UnityEngine; - +/// +/// Test the PersistentDataController class +/// [TestFixture] -public class PersistentDataTests +public class PersistentDataControllerTests { /// /// Create a new path so the existing .json file will not be overwritten @@ -41,16 +44,24 @@ public class PersistentDataTests [SetUp] public void Setup_PersistentDataController() { - PersistentDataController.PATH = PersistentDataTests.PATH; - //PersistentDataController.PATH = null; + Assert.IsNull(PersistentDataController.PATH); + PersistentDataController.PATH = PersistentDataControllerTests.PATH; pdc = PersistentDataController.GetInstance(); } + [TearDown] + public void TearDown_PersistentDataController() + { + PersistentDataController.PATH = null; + } + [Test] public void Test_PersistentDataController_GetInstance() { - Assert.IsNotNull(pdc); - //Assert.AreEqual($"{Application.persistentDataPath}/wesign_saved_data.json", PersistentDataController.PATH); + PersistentDataController.PATH = null; + Assert.IsNotNull(PersistentDataController.GetInstance()); + Assert.AreEqual(0x04_03, PersistentDataController.VERSION); + Assert.AreEqual($"{Application.persistentDataPath}/wesign_saved_data.json", PersistentDataController.PATH); } [Test] @@ -72,7 +83,7 @@ public class PersistentDataTests FileAssert.Exists(PATH); string content = File.ReadAllText(PATH); - string expected = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string expected = "{\"version\":1027,\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; Assert.AreEqual(expected, content); } @@ -88,14 +99,14 @@ public class PersistentDataTests FileAssert.Exists(PATH); string content = File.ReadAllText(PATH); - string expected = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string expected = "{\"version\":1027,\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; Assert.AreEqual(expected, content); } [Test] public void Test_PersistentDataController_Load_Existing() { - string content = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string content = "{\"version\":1027,\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; File.WriteAllText(PATH, content); Assert.IsTrue(pdc.Load(false)); } @@ -103,7 +114,7 @@ public class PersistentDataTests [Test] public void Test_PersistentDataController_Load_OlderVersion() { - string content = $"{{\"version\":{PersistentDataController.VERSION - 1},\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string content = "{\"version\":1026,\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; File.WriteAllText(PATH, content); Assert.IsFalse(pdc.Load(false)); } @@ -111,7 +122,7 @@ public class PersistentDataTests [Test] public void Test_PersistentDataController_Load_NewerVersion() { - string content = $"{{\"version\":{PersistentDataController.VERSION + 1},\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string content = "{\"version\":1028,\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; File.WriteAllText(PATH, content); Assert.IsFalse(pdc.Load(false)); } @@ -139,7 +150,7 @@ public class PersistentDataTests File.WriteAllText(PATH, "https://www.youtube.com/watch?v=dQw4w9WgXcQ"); Assert.IsFalse(pdc.Load(true)); string content = File.ReadAllText(PATH); - string expected = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string expected = "{\"version\":1027,\"users\":[],\"currentUser\":-1,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; Assert.AreEqual(expected, content); } @@ -163,7 +174,7 @@ public class PersistentDataTests pdc.AddUser(d); string content = File.ReadAllText(PATH); - string expected = $"{{\"version\":{PersistentDataController.VERSION},\"users\":[{{\"entries\":[],\"username\":\"username\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"courses\":[]}}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}}"; + string expected = "{\"version\":1027,\"users\":[{\"entries\":[],\"username\":\"username\",\"avatarIndex\":0,\"playtime\":0.0,\"minigames\":[],\"courses\":[]}],\"currentUser\":0,\"currentMinigame\":0,\"currentCourse\":0,\"currentTheme\":0}"; Assert.AreEqual(expected, content); } @@ -614,156 +625,153 @@ public class PersistentDataTests } [Test] - public void Test_AddLearnable_AddsLearnable() + public void Test_SavedCourseProgress_AddLearnable_Valid() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); + Assert.Zero(progress.learnables.Count); - bool added = progress.AddLearnable("test learnable", 0); - + bool added = progress.AddLearnable("learnable", 0); Assert.IsTrue(added); - Assert.AreEqual(progress.learnables.Count, 1); - Assert.AreEqual(progress.learnables[0].name, "test learnable"); - Assert.AreEqual(progress.learnables[0].index, 0); + Assert.AreEqual(1, progress.learnables.Count); + Assert.AreEqual("learnable", progress.learnables[0].name); + Assert.AreEqual(0, progress.FindLearnable("learnable").index); } [Test] - public void Test_AddLearnable_FailsWithDuplicateName() + public void Test_SavedCourseProgress_AddLearnable_DuplicateName() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable", 0); + progress.AddLearnable("learnable", 0); - bool added = progress.AddLearnable("test learnable", 1); - - Assert.IsFalse(added); - Assert.AreEqual(progress.learnables.Count, 1); + Assert.AreEqual(1, progress.learnables.Count); + Assert.IsFalse(progress.AddLearnable("learnable", 1)); + Assert.AreEqual(1, progress.learnables.Count); } [Test] - public void Test_AddLearnable_FailsWithDuplicateIndex() + public void Test_SavedCourseProgress_AddLearnable_DuplicateIndex() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable", 0); + progress.AddLearnable("learnable", 0); - bool added = progress.AddLearnable("test learnable 2", 0); - - Assert.IsFalse(added); - Assert.AreEqual(progress.learnables.Count, 1); + Assert.AreEqual(1, progress.learnables.Count); + Assert.IsFalse(progress.AddLearnable("LEARNABLE", 0)); + Assert.AreEqual(1, progress.learnables.Count); } [Test] - public void Test_UpdateLearnable_UpdatesProgress() + public void Test_SavedCourseProgress_UpdateLearnable_InvalidName() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable", 0); + progress.AddLearnable("learnable", 0); + Assert.AreEqual(0.0f, progress.FindLearnable("learnable").progress); + Assert.Throws(delegate { progress.UpdateLearnable("LEARNABLE", 3.0f); }); + Assert.AreEqual(0.0f, progress.FindLearnable("learnable").progress); + } - progress.UpdateLearnable("test learnable", 3.0f); - Assert.AreEqual(progress.learnables[0].progress, 3.0f); + [Test] + public void Test_SavedCourseProgress_UpdateLearnable_UpdatesProgress() + { + PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); + + progress.AddLearnable("learnable", 0); + Assert.AreEqual(0.0f, progress.FindLearnable("learnable").progress); + progress.UpdateLearnable("learnable", 3.0f); + Assert.AreEqual(3.0f, progress.FindLearnable("learnable").progress); } [Test] - public void Test_UpdateLearnable_CropsProgressAtFive() + public void Test_SavedCourseProgress_UpdateLearnable_CropsProgressAtFive() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable", 0); - - progress.UpdateLearnable("test learnable", 10.0f); - - Assert.AreEqual(progress.learnables[0].progress, 5.0f); - Assert.AreEqual(progress.completedLearnables, 1); + progress.AddLearnable("learnable", 0); + Assert.AreEqual(0, progress.completedLearnables); + progress.UpdateLearnable("learnable", 10.0f); + Assert.AreEqual(5.0f, progress.FindLearnable("learnable").progress); + Assert.AreEqual(1, progress.completedLearnables); } [Test] - public void Test_UpdateLearnable_CropsProgressAtNegativeFive() + public void Test_SavedCourseProgress_UpdateLearnable_CropsProgressAtNegativeFive() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable", 0); - - progress.UpdateLearnable("test learnable", -10.0f); - - Assert.AreEqual(progress.learnables[0].progress, -5.0f); + progress.AddLearnable("learnable", 0); + Assert.AreEqual(0, progress.completedLearnables); + progress.UpdateLearnable("learnable", -10.0f); + Assert.AreEqual(-5.0f, progress.FindLearnable("learnable").progress); + Assert.AreEqual(0, progress.completedLearnables); } [Test] - public void Test_FindLearnable_ReturnsNullWhenNotFound() + public void Test_SavedCourseProgress_FindLearnable() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable 1", 0); - progress.AddLearnable("test learnable 2", 1); + progress.AddLearnable("learnable 1", 0); - PersistentDataController.SavedLearnableProgress learnable = progress.FindLearnable("not found"); - - Assert.IsNull(learnable); + Assert.IsNull(progress.FindLearnable("learnable 2")); + progress.AddLearnable("learnable 2", 1); + Assert.IsNotNull(progress.FindLearnable("learnable 2")); } [Test] - public void Test_FindLearnable_ReturnsLearnableByName() + public void Test_SavedCourseProgress_GetRandomLearnable_NoLearnables() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable 1", 0); - progress.AddLearnable("test learnable 2", 1); - - PersistentDataController.SavedLearnableProgress learnable = progress.FindLearnable("test learnable 2"); - - Assert.AreEqual(learnable.index, 1); + Assert.IsNull(progress.GetRandomLearnable()); } [Test] - public void Test_AddNewLearnable_ReturnsFalseWhenNoUnusedLearnables() + public void Test_SavedCourseProgress_GetRandomLearnable_NoUnusedLearnables() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable 1", 0); - progress.learnables[0].inUse = true; + progress.AddLearnable("learnable", 0); + progress.FindLearnable("learnable").inUse = true; + progress.completedLearnables = 1; + progress.inUseLearnables = 0; - PersistentDataController.SavedLearnableProgress learnable = progress.AddNewLearnable(); - - Assert.IsNull(learnable); + Assert.IsNull(progress.GetRandomLearnable()); } [Test] - public void Test_AddNewLearnable_ReturnsTrueWhenUnusedLearnableFound() + public void Test_SavedCourseProgress_GetRandomLearnable_OnlyCompletedLearnables() { PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable 1", 0); - progress.AddLearnable("test learnable 2", 1); - - PersistentDataController.SavedLearnableProgress learnable = progress.AddNewLearnable(); - - Assert.IsNotNull(learnable); - Assert.AreEqual(progress.inUseLearnables, 1); - } - - [Test] - public void Test_GetRandomLearnable_ReturnsNullWhenNoLearnables() - { - PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - - PersistentDataController.SavedLearnableProgress learnable = progress.GetRandomLearnable(); - - Assert.IsNull(learnable); - } - - [Test] - public void Test_GetRandomLearnable_ReturnsNullWhenOnlyCompletedLearnables() - { - PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); - progress.AddLearnable("test learnable 1", 0); - progress.AddLearnable("test learnable 2", 1); - progress.learnables[0].progress = 4.0f; - progress.learnables[0].inUse = true; - progress.learnables[1].progress = 4.0f; - progress.learnables[1].inUse = true; + for (int i = 0; i < 2; i++) + { + progress.AddLearnable($"learnable {i}", i); + var learnable = progress.FindLearnable($"learnable {i}"); + learnable.progress = 4.0f; + learnable.inUse = true; + } progress.completedLearnables = 2; progress.inUseLearnables = 0; - PersistentDataController.SavedLearnableProgress learnable = progress.GetRandomLearnable(); + Assert.IsNull(progress.GetRandomLearnable()); + } - Assert.IsNull(learnable); + [Test] + public void Test_SavedCourseProgress_GetRandomLearnable_Valid() + { + PersistentDataController.SavedCourseProgress progress = new PersistentDataController.SavedCourseProgress(); + for (int i = 0; i < 10; i++) + { + progress.AddLearnable($"learnable {i}", i); + progress.FindLearnable($"learnable {i}").inUse = true; + } + progress.completedLearnables = 0; + progress.inUseLearnables = 10; + + Assert.AreEqual(10, progress.inUseLearnables); + Assert.AreEqual(0, progress.completedLearnables); + Assert.IsNotNull(progress.GetRandomLearnable()); + Assert.AreEqual(10, progress.inUseLearnables); + Assert.AreEqual(0, progress.completedLearnables); } } diff --git a/Assets/SystemArchitecture/Tests/PersistentDataControllerTest.cs.meta b/Assets/Architecture/Tests/EditMode/PersistentDataControllerTests.cs.meta similarity index 100% rename from Assets/SystemArchitecture/Tests/PersistentDataControllerTest.cs.meta rename to Assets/Architecture/Tests/EditMode/PersistentDataControllerTests.cs.meta diff --git a/Assets/Architecture/Tests/EditMode/SystemControllerTests.cs b/Assets/Architecture/Tests/EditMode/SystemControllerTests.cs new file mode 100644 index 0000000..a92e93b --- /dev/null +++ b/Assets/Architecture/Tests/EditMode/SystemControllerTests.cs @@ -0,0 +1,48 @@ +using NUnit.Framework; +using System.Collections.Generic; +using UnityEngine.SceneManagement; + +/// +/// Test the SystemController class +/// +[TestFixture] +public class SystemControllerTests +{ + [Test] + public void Test_SystemController_GetInstance() + { + Assert.IsNotNull(SystemController.GetInstance()); + } + + [Test] + public void Test_GetSceneIndex_InvalidScene() + { + Assert.AreEqual(-1, SystemController.GetSceneIndex("a/non/existing/scene")); + } + + [Test] + public void Test_GetSceneIndex_ValidScene() + { + List scenes = new List() + { + "Common/Scenes/Boot", + "Common/Scenes/MainMenuScreen", + "Common/Scenes/CoursesMenuScreen", + "Common/Scenes/ListCoursesScreen", + "Common/Scenes/ListMinigamesScreen", + "Common/Scenes/CourseActivityScreen", + "Common/Scenes/MinigameActivityScreen", + "Common/Scenes/ThemeSelectionScreen", + "Common/Scenes/SettingsScreen", + "Accounts/Scenes/UserCreationScreen", + "Accounts/Scenes/ChangeUserScreen", + "Accounts/Scenes/UserProgressScreen", + "Courses/Scenes/CourseScreen", + "SpellingBee/Scenes/SpellingBeeGame", + "Hangman/Scenes/HangmanGame", + "JustSign/Scenes/JustSignGame", + }; + Assert.AreEqual(SceneManager.sceneCountInBuildSettings, scenes.Count); + // Testing wether the names and indices are correct needs to be done in PlayMode + } +} diff --git a/Assets/Architecture/Tests/EditMode/SystemControllerTests.cs.meta b/Assets/Architecture/Tests/EditMode/SystemControllerTests.cs.meta new file mode 100644 index 0000000..8b22e04 --- /dev/null +++ b/Assets/Architecture/Tests/EditMode/SystemControllerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17b5c320c11ddd6439fc5823fc1aaca6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Architecture/Tests/PlayMode.meta b/Assets/Architecture/Tests/PlayMode.meta new file mode 100644 index 0000000..3c126f8 --- /dev/null +++ b/Assets/Architecture/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 865ee232b6fa1184084ab1d58aaba61e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Architecture/Tests/PlayMode/ArchitecturePlayMode.asmdef b/Assets/Architecture/Tests/PlayMode/ArchitecturePlayMode.asmdef new file mode 100644 index 0000000..53991f0 --- /dev/null +++ b/Assets/Architecture/Tests/PlayMode/ArchitecturePlayMode.asmdef @@ -0,0 +1,23 @@ +{ + "name": "ArchitecturePlayMode", + "rootNamespace": "", + "references": [ + "UnityEditor.TestRunner", + "UnityEngine.TestRunner", + "ArchitectureScripts", + "AccountsScripts" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Architecture/Tests/PlayMode/ArchitecturePlayMode.asmdef.meta b/Assets/Architecture/Tests/PlayMode/ArchitecturePlayMode.asmdef.meta new file mode 100644 index 0000000..fd8692b --- /dev/null +++ b/Assets/Architecture/Tests/PlayMode/ArchitecturePlayMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8ed003d51e12ca44a9b41f98a4f9f3d +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Architecture/Tests/PlayMode/SystemControllerTests.cs b/Assets/Architecture/Tests/PlayMode/SystemControllerTests.cs new file mode 100644 index 0000000..fd2e5df --- /dev/null +++ b/Assets/Architecture/Tests/PlayMode/SystemControllerTests.cs @@ -0,0 +1,304 @@ +using NUnit.Framework; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.TestTools; + +/// +/// Test the SystemController class +/// +[TestFixture] +public class SystemControllerTests +{ + /// + /// Wait time between scene transitions + /// + private const float WAIT_TIME = 0.2f; + + /// + /// Reference to the SystemController instance + /// + private SystemController controller; + + /// + /// Setting up the tests + /// + [UnitySetUp] + public IEnumerator Setup_SystemController() + { + 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("Assets/Accounts/ScriptableObjects/UserAvatarList.asset").Awake(); + + controller = SystemController.GetInstance(); + controller.LoadNextScene("Common/Scenes/MainMenuScreen"); + + yield return new WaitForSeconds(WAIT_TIME); + } + + /// + /// Cleaning up the tests + /// + [TearDown] + public void TearDown_SystemController() + { + controller.BackToScene(SceneManager.sceneCountInBuildSettings); + } + + /// + /// Test whether all scenes are correctly inserted to the build path + /// + [Test] + public void Test_GetSceneIndex_ValidScene() + { + List scenes = new List() + { + "Common/Scenes/Boot", + "Common/Scenes/MainMenuScreen", + "Common/Scenes/CoursesMenuScreen", + "Common/Scenes/ListCoursesScreen", + "Common/Scenes/ListMinigamesScreen", + "Common/Scenes/CourseActivityScreen", + "Common/Scenes/MinigameActivityScreen", + "Common/Scenes/ThemeSelectionScreen", + "Common/Scenes/SettingsScreen", + "Accounts/Scenes/UserCreationScreen", + "Accounts/Scenes/ChangeUserScreen", + "Accounts/Scenes/UserProgressScreen", + "Courses/Scenes/CourseScreen", + "SpellingBee/Scenes/SpellingBeeGame", + "Hangman/Scenes/HangmanGame", + "JustSign/Scenes/JustSignGame", + }; + for (var i = 0; i < scenes.Count; i++) + Assert.AreEqual(i, SystemController.GetSceneIndex(scenes[i])); + } + + /// + /// Test whether a next scene can be loaded + /// + [UnityTest] + public IEnumerator Test_LoadNextScene_String() + { + int stackSize = controller.GetSceneStackSize(); + string previous = "Common/Scenes/MainMenuScreen"; + string next = "Common/Scenes/CoursesMenuScreen"; + Assert.AreEqual(SystemController.GetSceneIndex(previous), controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(previous), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(next), controller.currentScene); + Assert.AreEqual(stackSize + 1, controller.GetSceneStackSize()); + } + + /// + /// Test whether a next scene can be loaded + /// + [UnityTest] + public IEnumerator Test_LoadNextScene_Int() + { + int stackSize = controller.GetSceneStackSize(); + int previous = 1; + int next = 2; + Assert.AreEqual(previous, controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(previous, controller.previousScene); + Assert.AreEqual(next, controller.currentScene); + Assert.AreEqual(stackSize + 1, controller.GetSceneStackSize()); + } + + /// + /// Test whether a scene can be swapped with the current one + /// + [UnityTest] + public IEnumerator Test_SwapScene_String() + { + int stackSize = controller.GetSceneStackSize(); + string previous = "Common/Scenes/MainMenuScreen"; + string next = "Common/Scenes/CoursesMenuScreen"; + Assert.AreEqual(SystemController.GetSceneIndex(previous), controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + controller.SwapScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(previous), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(next), controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + } + + /// + /// Test whether a scene can be swapped with the current one + /// + [UnityTest] + public IEnumerator Test_SwapScene_Int() + { + int stackSize = controller.GetSceneStackSize(); + int previous = 1; + int next = 2; + Assert.AreEqual(previous, controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + controller.SwapScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(previous, controller.previousScene); + Assert.AreEqual(next, controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + } + + /// + /// Test whether the previous scene can be loaded + /// + [UnityTest] + public IEnumerator Test_BackToPreviousScene_LoadScene() + { + int stackSize = controller.GetSceneStackSize(); + string previous = "Common/Scenes/MainMenuScreen"; + string current = "Common/Scenes/CoursesMenuScreen"; + string next = "Common/Scenes/ListCoursesScreen"; + controller.LoadNextScene(current); + yield return new WaitForSeconds(WAIT_TIME); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(current), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(next), controller.currentScene); + Assert.AreEqual(stackSize + 2, controller.GetSceneStackSize()); + controller.BackToPreviousScene(); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(stackSize + 1, controller.GetSceneStackSize()); + controller.BackToPreviousScene(); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(current), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(previous), controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + } + + /// + /// Test whether when requesting to go back on the ast scene, will close the application + /// + [UnityTest] + public IEnumerator Test_BackToPreviousScene_QuitApplication() + { + int stackSize = controller.GetSceneStackSize(); + + controller.BackToPreviousScene(); + yield return new WaitForSeconds(WAIT_TIME); + Assert.AreEqual(stackSize - 1, controller.GetSceneStackSize()); + } + + /// + /// Test whether a previous scene can be loaded + /// + [UnityTest] + public IEnumerator Test_BackToScene_String_LoadScene() + { + int stackSize = controller.GetSceneStackSize(); + string previous = "Common/Scenes/MainMenuScreen"; + string current = "Common/Scenes/CoursesMenuScreen"; + string next = "Common/Scenes/ListCoursesScreen"; + controller.LoadNextScene(current); + yield return new WaitForSeconds(WAIT_TIME); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(current), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(next), controller.currentScene); + Assert.AreEqual(stackSize + 2, controller.GetSceneStackSize()); + controller.BackToScene(previous); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(next), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(previous), controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + } + + /// + /// Test whether when requesting to go back to scene that is no longer loaded, will close the application + /// + [UnityTest] + public IEnumerator Test_BackToScene_String_QuitApplication() + { + int stackSize = controller.GetSceneStackSize(); + + string previous = "Common/Scenes/MainMenuScreen"; + string current = "Common/Scenes/CoursesMenuScreen"; + string next = "Common/Scenes/ListCoursesScreen"; + controller.SwapScene(current); + yield return new WaitForSeconds(WAIT_TIME); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(SystemController.GetSceneIndex(current), controller.previousScene); + Assert.AreEqual(SystemController.GetSceneIndex(next), controller.currentScene); + Assert.AreEqual(stackSize + 1, controller.GetSceneStackSize()); + controller.BackToScene(previous); + + yield return new WaitForSeconds(WAIT_TIME); + Assert.AreEqual(stackSize - 1, controller.GetSceneStackSize()); + } + + /// + /// Test whether a previous scene can be loaded + /// + [UnityTest] + public IEnumerator Test_BackToScene_Int_LoadScene() + { + int stackSize = controller.GetSceneStackSize(); + int previous = 1; + int current = 2; + int next = 3; + controller.LoadNextScene(current); + yield return new WaitForSeconds(WAIT_TIME); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(current, controller.previousScene); + Assert.AreEqual(next, controller.currentScene); + Assert.AreEqual(stackSize + 2, controller.GetSceneStackSize()); + controller.BackToScene(previous); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(next, controller.previousScene); + Assert.AreEqual(previous, controller.currentScene); + Assert.AreEqual(stackSize, controller.GetSceneStackSize()); + } + + /// + /// Test whether when requesting to go back to scene that is no longer loaded, will close the application + /// + [UnityTest] + public IEnumerator Test_BackToScene_Int_QuitApplication() + { + int stackSize = controller.GetSceneStackSize(); + + int previous = 1; + int current = 2; + int next = 3; + controller.SwapScene(current); + yield return new WaitForSeconds(WAIT_TIME); + controller.LoadNextScene(next); + yield return new WaitForSeconds(WAIT_TIME); + + Assert.AreEqual(current, controller.previousScene); + Assert.AreEqual(next, controller.currentScene); + Assert.AreEqual(stackSize + 1, controller.GetSceneStackSize()); + controller.BackToScene(previous); + + yield return new WaitForSeconds(WAIT_TIME); + Assert.AreEqual(stackSize - 1, controller.GetSceneStackSize()); + } +} diff --git a/Assets/Architecture/Tests/PlayMode/SystemControllerTests.cs.meta b/Assets/Architecture/Tests/PlayMode/SystemControllerTests.cs.meta new file mode 100644 index 0000000..d6d872f --- /dev/null +++ b/Assets/Architecture/Tests/PlayMode/SystemControllerTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ede8e90b1ef6144ca9b5e54493894fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Common/Scripts/ThemeItem.cs b/Assets/Common/Scripts/ThemeItem.cs index b448446..6d0874f 100644 --- a/Assets/Common/Scripts/ThemeItem.cs +++ b/Assets/Common/Scripts/ThemeItem.cs @@ -1,6 +1,5 @@ using TMPro; using UnityEngine; -using UnityEngine.Events; using UnityEngine.UI; /// diff --git a/Assets/Common/Tests/EditMode.meta b/Assets/Common/Tests/EditMode.meta new file mode 100644 index 0000000..de5a71e --- /dev/null +++ b/Assets/Common/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7efafb99e31fdd243b9470c45ec5da7d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Common/Tests/CommonTests.asmdef b/Assets/Common/Tests/EditMode/CommonEditMode.asmdef similarity index 95% rename from Assets/Common/Tests/CommonTests.asmdef rename to Assets/Common/Tests/EditMode/CommonEditMode.asmdef index a568a8e..048dfbe 100644 --- a/Assets/Common/Tests/CommonTests.asmdef +++ b/Assets/Common/Tests/EditMode/CommonEditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "CommonTests", + "name": "CommonEditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/Common/Tests/CommonTests.asmdef.meta b/Assets/Common/Tests/EditMode/CommonEditMode.asmdef.meta similarity index 100% rename from Assets/Common/Tests/CommonTests.asmdef.meta rename to Assets/Common/Tests/EditMode/CommonEditMode.asmdef.meta diff --git a/Assets/Common/Tests/CourseListTest.cs b/Assets/Common/Tests/EditMode/CourseListTests.cs similarity index 98% rename from Assets/Common/Tests/CourseListTest.cs rename to Assets/Common/Tests/EditMode/CourseListTests.cs index db511b5..389b584 100644 --- a/Assets/Common/Tests/CourseListTest.cs +++ b/Assets/Common/Tests/EditMode/CourseListTests.cs @@ -5,7 +5,7 @@ using UnityEngine; /// Test the CourseList class /// [TestFixture] -public class CourseListTest +public class CourseListTests { private CourseList courseList; diff --git a/Assets/Common/Tests/CourseListTest.cs.meta b/Assets/Common/Tests/EditMode/CourseListTests.cs.meta similarity index 100% rename from Assets/Common/Tests/CourseListTest.cs.meta rename to Assets/Common/Tests/EditMode/CourseListTests.cs.meta diff --git a/Assets/Common/Tests/MinigameListTest.cs b/Assets/Common/Tests/EditMode/MinigameListTests.cs similarity index 98% rename from Assets/Common/Tests/MinigameListTest.cs rename to Assets/Common/Tests/EditMode/MinigameListTests.cs index 8dfa673..b7f555a 100644 --- a/Assets/Common/Tests/MinigameListTest.cs +++ b/Assets/Common/Tests/EditMode/MinigameListTests.cs @@ -5,7 +5,7 @@ using UnityEngine; /// Test the MinigameList class /// [TestFixture] -public class MinigameListTest +public class MinigameListTests { private MinigameList minigameList; diff --git a/Assets/Common/Tests/MinigameListTest.cs.meta b/Assets/Common/Tests/EditMode/MinigameListTests.cs.meta similarity index 100% rename from Assets/Common/Tests/MinigameListTest.cs.meta rename to Assets/Common/Tests/EditMode/MinigameListTests.cs.meta diff --git a/Assets/Common/Tests/ModelListTest.cs b/Assets/Common/Tests/EditMode/ModelListTests.cs similarity index 99% rename from Assets/Common/Tests/ModelListTest.cs rename to Assets/Common/Tests/EditMode/ModelListTests.cs index bc1f44d..cf7b425 100644 --- a/Assets/Common/Tests/ModelListTest.cs +++ b/Assets/Common/Tests/EditMode/ModelListTests.cs @@ -5,7 +5,7 @@ using UnityEngine; /// Test the ModelList class /// [TestFixture] -public class ModelListTest +public class ModelListTests { private ModelList modelList; diff --git a/Assets/Common/Tests/ModelListTest.cs.meta b/Assets/Common/Tests/EditMode/ModelListTests.cs.meta similarity index 100% rename from Assets/Common/Tests/ModelListTest.cs.meta rename to Assets/Common/Tests/EditMode/ModelListTests.cs.meta diff --git a/Assets/Common/Tests/ThemeListTest.cs b/Assets/Common/Tests/EditMode/ThemeListTests.cs similarity index 98% rename from Assets/Common/Tests/ThemeListTest.cs rename to Assets/Common/Tests/EditMode/ThemeListTests.cs index 6a34fe1..1ad5a8b 100644 --- a/Assets/Common/Tests/ThemeListTest.cs +++ b/Assets/Common/Tests/EditMode/ThemeListTests.cs @@ -5,7 +5,7 @@ using UnityEngine; /// Test the ThemeList class /// [TestFixture] -public class ThemeListTest +public class ThemeListTests { private ThemeList themeList; diff --git a/Assets/Common/Tests/ThemeListTest.cs.meta b/Assets/Common/Tests/EditMode/ThemeListTests.cs.meta similarity index 100% rename from Assets/Common/Tests/ThemeListTest.cs.meta rename to Assets/Common/Tests/EditMode/ThemeListTests.cs.meta diff --git a/Assets/Common/Tests/ThemeTest.cs b/Assets/Common/Tests/EditMode/ThemeTests.cs similarity index 97% rename from Assets/Common/Tests/ThemeTest.cs rename to Assets/Common/Tests/EditMode/ThemeTests.cs index a93d7e4..b9fc9bf 100644 --- a/Assets/Common/Tests/ThemeTest.cs +++ b/Assets/Common/Tests/EditMode/ThemeTests.cs @@ -6,7 +6,7 @@ using UnityEngine; /// Test the Theme class /// [TestFixture] -public class ThemeTest +public class ThemeTests { private Theme theme; private List names = new List() { "appel", "peer", "banaan" }; diff --git a/Assets/Common/Tests/ThemeTest.cs.meta b/Assets/Common/Tests/EditMode/ThemeTests.cs.meta similarity index 100% rename from Assets/Common/Tests/ThemeTest.cs.meta rename to Assets/Common/Tests/EditMode/ThemeTests.cs.meta diff --git a/Assets/Common/PlayModeTests.meta b/Assets/Common/Tests/PlayMode.meta similarity index 100% rename from Assets/Common/PlayModeTests.meta rename to Assets/Common/Tests/PlayMode.meta diff --git a/Assets/Common/PlayModeTests/BackButtonTests.cs b/Assets/Common/Tests/PlayMode/BackButtonTests.cs similarity index 94% rename from Assets/Common/PlayModeTests/BackButtonTests.cs rename to Assets/Common/Tests/PlayMode/BackButtonTests.cs index 07bcefe..a802033 100644 --- a/Assets/Common/PlayModeTests/BackButtonTests.cs +++ b/Assets/Common/Tests/PlayMode/BackButtonTests.cs @@ -11,7 +11,7 @@ public class BackButtonTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/BackButtonTests.cs.meta b/Assets/Common/Tests/PlayMode/BackButtonTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/BackButtonTests.cs.meta rename to Assets/Common/Tests/PlayMode/BackButtonTests.cs.meta diff --git a/Assets/Common/PlayModeTests/CommonPlayModeTests.asmdef b/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef similarity index 94% rename from Assets/Common/PlayModeTests/CommonPlayModeTests.asmdef rename to Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef index efc27fc..1f100b1 100644 --- a/Assets/Common/PlayModeTests/CommonPlayModeTests.asmdef +++ b/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef @@ -1,5 +1,5 @@ { - "name": "CommonPlayModeTests", + "name": "CommonPlayMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/Common/PlayModeTests/CommonPlayModeTests.asmdef.meta b/Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef.meta similarity index 100% rename from Assets/Common/PlayModeTests/CommonPlayModeTests.asmdef.meta rename to Assets/Common/Tests/PlayMode/CommonPlayMode.asmdef.meta diff --git a/Assets/Common/PlayModeTests/CourseActivityTests.cs b/Assets/Common/Tests/PlayMode/CourseActivityTests.cs similarity index 94% rename from Assets/Common/PlayModeTests/CourseActivityTests.cs rename to Assets/Common/Tests/PlayMode/CourseActivityTests.cs index 4eb81ac..15829a0 100644 --- a/Assets/Common/PlayModeTests/CourseActivityTests.cs +++ b/Assets/Common/Tests/PlayMode/CourseActivityTests.cs @@ -11,7 +11,7 @@ public class CourseActivityTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/CourseActivityTests.cs.meta b/Assets/Common/Tests/PlayMode/CourseActivityTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/CourseActivityTests.cs.meta rename to Assets/Common/Tests/PlayMode/CourseActivityTests.cs.meta diff --git a/Assets/Common/PlayModeTests/CourseMenuScreenTests.cs b/Assets/Common/Tests/PlayMode/CourseMenuScreenTests.cs similarity index 91% rename from Assets/Common/PlayModeTests/CourseMenuScreenTests.cs rename to Assets/Common/Tests/PlayMode/CourseMenuScreenTests.cs index ce2a517..88922a3 100644 --- a/Assets/Common/PlayModeTests/CourseMenuScreenTests.cs +++ b/Assets/Common/Tests/PlayMode/CourseMenuScreenTests.cs @@ -5,13 +5,13 @@ using UnityEditor; using UnityEngine; using UnityEngine.TestTools; -public class CourseMenuScreenTest +public class CourseMenuScreenTests { [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/CourseMenuScreenTests.cs.meta b/Assets/Common/Tests/PlayMode/CourseMenuScreenTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/CourseMenuScreenTests.cs.meta rename to Assets/Common/Tests/PlayMode/CourseMenuScreenTests.cs.meta diff --git a/Assets/Common/PlayModeTests/ListCoursesScreenTests.cs b/Assets/Common/Tests/PlayMode/ListCoursesScreenTests.cs similarity index 91% rename from Assets/Common/PlayModeTests/ListCoursesScreenTests.cs rename to Assets/Common/Tests/PlayMode/ListCoursesScreenTests.cs index 0efcd63..1334264 100644 --- a/Assets/Common/PlayModeTests/ListCoursesScreenTests.cs +++ b/Assets/Common/Tests/PlayMode/ListCoursesScreenTests.cs @@ -5,13 +5,13 @@ using UnityEditor; using UnityEngine; using UnityEngine.TestTools; -public class ListCoursesScreenTest +public class ListCoursesScreenTests { [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/ListCoursesScreenTests.cs.meta b/Assets/Common/Tests/PlayMode/ListCoursesScreenTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/ListCoursesScreenTests.cs.meta rename to Assets/Common/Tests/PlayMode/ListCoursesScreenTests.cs.meta diff --git a/Assets/Common/PlayModeTests/MainMenuScreenTests.cs b/Assets/Common/Tests/PlayMode/MainMenuScreenTests.cs similarity index 96% rename from Assets/Common/PlayModeTests/MainMenuScreenTests.cs rename to Assets/Common/Tests/PlayMode/MainMenuScreenTests.cs index 1517265..51cbc10 100644 --- a/Assets/Common/PlayModeTests/MainMenuScreenTests.cs +++ b/Assets/Common/Tests/PlayMode/MainMenuScreenTests.cs @@ -13,7 +13,7 @@ public class MainMenuScreenTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/MainMenuScreenTests.cs.meta b/Assets/Common/Tests/PlayMode/MainMenuScreenTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/MainMenuScreenTests.cs.meta rename to Assets/Common/Tests/PlayMode/MainMenuScreenTests.cs.meta diff --git a/Assets/Common/PlayModeTests/MinigameActivityScreenTests.cs b/Assets/Common/Tests/PlayMode/MinigameActivityScreenTests.cs similarity index 94% rename from Assets/Common/PlayModeTests/MinigameActivityScreenTests.cs rename to Assets/Common/Tests/PlayMode/MinigameActivityScreenTests.cs index 59e5ac5..5a29d14 100644 --- a/Assets/Common/PlayModeTests/MinigameActivityScreenTests.cs +++ b/Assets/Common/Tests/PlayMode/MinigameActivityScreenTests.cs @@ -12,7 +12,7 @@ public class MiniGameActivityScreenTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/MinigameActivityScreenTests.cs.meta b/Assets/Common/Tests/PlayMode/MinigameActivityScreenTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/MinigameActivityScreenTests.cs.meta rename to Assets/Common/Tests/PlayMode/MinigameActivityScreenTests.cs.meta diff --git a/Assets/Common/PlayModeTests/StartGameTests.cs b/Assets/Common/Tests/PlayMode/StartGameTests.cs similarity index 95% rename from Assets/Common/PlayModeTests/StartGameTests.cs rename to Assets/Common/Tests/PlayMode/StartGameTests.cs index e8c9ecc..24d9d9c 100644 --- a/Assets/Common/PlayModeTests/StartGameTests.cs +++ b/Assets/Common/Tests/PlayMode/StartGameTests.cs @@ -12,7 +12,7 @@ public class StartGamesTests [UnityTest] public IEnumerator BootWithUsersTest() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); @@ -54,7 +54,7 @@ public class StartGamesTests [UnityTest] public IEnumerator BootWithoutUsersTest() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + string path = $"{Application.persistentDataPath}/wesign_unit_test.json"; string noUsers = "https://www.youtube.com/watch?v=dQw4w9WgXcQ"; File.WriteAllText(path, noUsers); diff --git a/Assets/Common/PlayModeTests/StartGameTests.cs.meta b/Assets/Common/Tests/PlayMode/StartGameTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/StartGameTests.cs.meta rename to Assets/Common/Tests/PlayMode/StartGameTests.cs.meta diff --git a/Assets/Common/PlayModeTests/UserButtonTests.cs b/Assets/Common/Tests/PlayMode/UserButtonTests.cs similarity index 95% rename from Assets/Common/PlayModeTests/UserButtonTests.cs rename to Assets/Common/Tests/PlayMode/UserButtonTests.cs index 271b7cb..772c00b 100644 --- a/Assets/Common/PlayModeTests/UserButtonTests.cs +++ b/Assets/Common/Tests/PlayMode/UserButtonTests.cs @@ -12,7 +12,7 @@ public class UserButtonTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/Common/PlayModeTests/UserButtonTests.cs.meta b/Assets/Common/Tests/PlayMode/UserButtonTests.cs.meta similarity index 100% rename from Assets/Common/PlayModeTests/UserButtonTests.cs.meta rename to Assets/Common/Tests/PlayMode/UserButtonTests.cs.meta diff --git a/Assets/Courses/PlayModeTests/BasicTests.cs b/Assets/Courses/PlayModeTests/BasicTests.cs deleted file mode 100644 index 6d4d054..0000000 --- a/Assets/Courses/PlayModeTests/BasicTests.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using NUnit.Framework; -using UnityEngine; -using UnityEngine.TestTools; -using UnityEngine.SceneManagement; - -public class BasicTests -{ - // A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use - // `yield return null;` to skip a frame. - [UnityTest] - public IEnumerator BasicTestsWithEnumeratorPasses() - { - SceneManager.LoadScene("CourseScreen"); - // Use the Assert class to test conditions. - // Use yield to skip a frame. - yield return null; - - - - // var courseObject = GameObject.findGameObjectWithTag("Course"); - // Assert.IsNotNull(courseObject); - - } -} - diff --git a/Assets/Courses/Tests/BasicTests.cs b/Assets/Courses/Tests/BasicTests.cs deleted file mode 100644 index 7da4cc0..0000000 --- a/Assets/Courses/Tests/BasicTests.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using NUnit.Framework; -using UnityEngine; -using UnityEngine.TestTools; - -public class BasicTests -{ - // A Test behaves as an ordinary method - [Test] - public void BasicTestsSimplePasses() - { - // Use the Assert class to test conditions - } - - // A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use - // `yield return null;` to skip a frame. - [UnityTest] - public IEnumerator BasicTestsWithEnumeratorPasses() - { - // Use the Assert class to test conditions. - // Use yield to skip a frame. - yield return null; - } -} diff --git a/Assets/Courses/Tests/EditMode.meta b/Assets/Courses/Tests/EditMode.meta new file mode 100644 index 0000000..7ec459f --- /dev/null +++ b/Assets/Courses/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b612bda41dae86458d68ba90d0130d3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Tests/CoursesTests.asmdef b/Assets/Courses/Tests/EditMode/CoursesEditMode.asmdef similarity index 94% rename from Assets/Courses/Tests/CoursesTests.asmdef rename to Assets/Courses/Tests/EditMode/CoursesEditMode.asmdef index 084e8f0..5b72ccf 100644 --- a/Assets/Courses/Tests/CoursesTests.asmdef +++ b/Assets/Courses/Tests/EditMode/CoursesEditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "CoursesTests", + "name": "CoursesEditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/Courses/Tests/CoursesTests.asmdef.meta b/Assets/Courses/Tests/EditMode/CoursesEditMode.asmdef.meta similarity index 100% rename from Assets/Courses/Tests/CoursesTests.asmdef.meta rename to Assets/Courses/Tests/EditMode/CoursesEditMode.asmdef.meta diff --git a/Assets/Courses/Tests/PlayMode.meta b/Assets/Courses/Tests/PlayMode.meta new file mode 100644 index 0000000..d078a78 --- /dev/null +++ b/Assets/Courses/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 25fe0e709e59ccf45af2c8588d777727 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/PlayModeTests/PlayModeTests.asmdef b/Assets/Courses/Tests/PlayMode/CoursesPlayMode.asmdef similarity index 88% rename from Assets/Courses/PlayModeTests/PlayModeTests.asmdef rename to Assets/Courses/Tests/PlayMode/CoursesPlayMode.asmdef index 081dc61..e9a265f 100644 --- a/Assets/Courses/PlayModeTests/PlayModeTests.asmdef +++ b/Assets/Courses/Tests/PlayMode/CoursesPlayMode.asmdef @@ -1,10 +1,10 @@ { - "name": "PlayModeTests", + "name": "CoursesPlayMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", "UnityEditor.TestRunner", - "ArchitectureScripts" + "CourseScripts" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Courses/Tests/PlayMode/CoursesPlayMode.asmdef.meta b/Assets/Courses/Tests/PlayMode/CoursesPlayMode.asmdef.meta new file mode 100644 index 0000000..9709c96 --- /dev/null +++ b/Assets/Courses/Tests/PlayMode/CoursesPlayMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4428dbcc740985848a614df62a4e4610 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/Color_scheme_WeSign.colors b/Assets/Editor/Color Scheme WeSign.colors similarity index 97% rename from Assets/Editor/Color_scheme_WeSign.colors rename to Assets/Editor/Color Scheme WeSign.colors index e9e8f97..eeb38e6 100644 --- a/Assets/Editor/Color_scheme_WeSign.colors +++ b/Assets/Editor/Color Scheme WeSign.colors @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 12323, guid: 0000000000000000e000000000000000, type: 0} - m_Name: Color_scheme_WeSign + m_Name: Color Scheme WeSign m_EditorClassIdentifier: m_Presets: - m_Name: diff --git a/Assets/Editor/Color_scheme_WeSign.colors.meta b/Assets/Editor/Color Scheme WeSign.colors.meta similarity index 100% rename from Assets/Editor/Color_scheme_WeSign.colors.meta rename to Assets/Editor/Color Scheme WeSign.colors.meta diff --git a/Assets/Hangman/Scripts/HangmanScripts.asmdef b/Assets/Hangman/Scripts/HangmanScripts.asmdef index 161066e..65252b0 100644 --- a/Assets/Hangman/Scripts/HangmanScripts.asmdef +++ b/Assets/Hangman/Scripts/HangmanScripts.asmdef @@ -7,8 +7,8 @@ "GUID:1631ed2680c61245b8211d943c1639a8", "GUID:58e104b97fb3752438ada2902a36dcbf", "GUID:7f2d0ee6dd21e1d4eb25b71b7a749d25", - "GUID:403dd94a93598934eb522dc36df43d7b", - "GUID:d0b6b39a21908f94fbbd9f2c196a9725" + "GUID:d0b6b39a21908f94fbbd9f2c196a9725", + "GUID:403dd94a93598934eb522dc36df43d7b" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Hangman/Tests/BasicTests.cs b/Assets/Hangman/Tests/BasicTests.cs deleted file mode 100644 index a6355d4..0000000 --- a/Assets/Hangman/Tests/BasicTests.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using NUnit.Framework; -using UnityEngine; -using UnityEngine.TestTools; - -public class BasicTests -{ - // A Test behaves as an ordinary method - [Test] - public void BasicTestsSimplePasses() - { - Assert.True(true); - } - - // A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use - // `yield return null;` to skip a frame. - [UnityTest] - public IEnumerator BasicTestsWithEnumeratorPasses() - { - // Use the Assert class to test conditions. - // Use yield to skip a frame. - yield return null; - } -} \ No newline at end of file diff --git a/Assets/Hangman/Tests/EditMode.meta b/Assets/Hangman/Tests/EditMode.meta new file mode 100644 index 0000000..be07931 --- /dev/null +++ b/Assets/Hangman/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89a614164a62fcc4b83897e3552a0872 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Hangman/Tests/HangmanTests.asmdef b/Assets/Hangman/Tests/EditMode/HangmanEditMode.asmdef similarity index 94% rename from Assets/Hangman/Tests/HangmanTests.asmdef rename to Assets/Hangman/Tests/EditMode/HangmanEditMode.asmdef index 211b815..20b7cc8 100644 --- a/Assets/Hangman/Tests/HangmanTests.asmdef +++ b/Assets/Hangman/Tests/EditMode/HangmanEditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "HangmanTests", + "name": "HangmanEditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/Hangman/Tests/HangmanTests.asmdef.meta b/Assets/Hangman/Tests/EditMode/HangmanEditMode.asmdef.meta similarity index 100% rename from Assets/Hangman/Tests/HangmanTests.asmdef.meta rename to Assets/Hangman/Tests/EditMode/HangmanEditMode.asmdef.meta diff --git a/Assets/Hangman/Tests/PlayMode.meta b/Assets/Hangman/Tests/PlayMode.meta new file mode 100644 index 0000000..b216f94 --- /dev/null +++ b/Assets/Hangman/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: efc47f081bd72be4ca7d8a27f75fbf3d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SystemArchitecture/Tests/ArchitectureTests.asmdef b/Assets/Hangman/Tests/PlayMode/HangmanPlayMode.asmdef similarity index 87% rename from Assets/SystemArchitecture/Tests/ArchitectureTests.asmdef rename to Assets/Hangman/Tests/PlayMode/HangmanPlayMode.asmdef index 0192c2f..99559ed 100644 --- a/Assets/SystemArchitecture/Tests/ArchitectureTests.asmdef +++ b/Assets/Hangman/Tests/PlayMode/HangmanPlayMode.asmdef @@ -1,10 +1,10 @@ { - "name": "ArchitectureTests", + "name": "HangmanPlayMode", "rootNamespace": "", "references": [ - "UnityEditor.TestRunner", "UnityEngine.TestRunner", - "ArchitectureScripts" + "UnityEditor.TestRunner", + "HangmanScripts" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Hangman/Tests/PlayMode/HangmanPlayMode.asmdef.meta b/Assets/Hangman/Tests/PlayMode/HangmanPlayMode.asmdef.meta new file mode 100644 index 0000000..d16c069 --- /dev/null +++ b/Assets/Hangman/Tests/PlayMode/HangmanPlayMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 385f3b8fff6fe894585df4d587a1c98a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JustSign/Tests/BasicTests.cs b/Assets/JustSign/Tests/BasicTests.cs deleted file mode 100644 index 7da4cc0..0000000 --- a/Assets/JustSign/Tests/BasicTests.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using NUnit.Framework; -using UnityEngine; -using UnityEngine.TestTools; - -public class BasicTests -{ - // A Test behaves as an ordinary method - [Test] - public void BasicTestsSimplePasses() - { - // Use the Assert class to test conditions - } - - // A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use - // `yield return null;` to skip a frame. - [UnityTest] - public IEnumerator BasicTestsWithEnumeratorPasses() - { - // Use the Assert class to test conditions. - // Use yield to skip a frame. - yield return null; - } -} diff --git a/Assets/JustSign/Tests/EditMode.meta b/Assets/JustSign/Tests/EditMode.meta new file mode 100644 index 0000000..903a801 --- /dev/null +++ b/Assets/JustSign/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8b45bf5698991a48912d8e48161dbd6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JustSign/Tests/JustSignTests.asmdef b/Assets/JustSign/Tests/EditMode/JustSignEditMode.asmdef similarity index 94% rename from Assets/JustSign/Tests/JustSignTests.asmdef rename to Assets/JustSign/Tests/EditMode/JustSignEditMode.asmdef index 2860755..536b0d7 100644 --- a/Assets/JustSign/Tests/JustSignTests.asmdef +++ b/Assets/JustSign/Tests/EditMode/JustSignEditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "JustSignTests", + "name": "JustSignEditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/JustSign/Tests/EditMode/JustSignEditMode.asmdef.meta b/Assets/JustSign/Tests/EditMode/JustSignEditMode.asmdef.meta new file mode 100644 index 0000000..4857bed --- /dev/null +++ b/Assets/JustSign/Tests/EditMode/JustSignEditMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da301c270732e794bbe57f9dcbf37bd9 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JustSign/Tests/PlayMode.meta b/Assets/JustSign/Tests/PlayMode.meta new file mode 100644 index 0000000..5b2e5b6 --- /dev/null +++ b/Assets/JustSign/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 84bb363c6a8203a4d97987e5acb0d4ce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/JustSign/Tests/PlayMode/JustSignPlayMode.asmdef b/Assets/JustSign/Tests/PlayMode/JustSignPlayMode.asmdef new file mode 100644 index 0000000..8c1b4c1 --- /dev/null +++ b/Assets/JustSign/Tests/PlayMode/JustSignPlayMode.asmdef @@ -0,0 +1,22 @@ +{ + "name": "JustSignPlayMode", + "rootNamespace": "", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "JustSignScripts" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/JustSign/Tests/JustSignTests.asmdef.meta b/Assets/JustSign/Tests/PlayMode/JustSignPlayMode.asmdef.meta similarity index 100% rename from Assets/JustSign/Tests/JustSignTests.asmdef.meta rename to Assets/JustSign/Tests/PlayMode/JustSignPlayMode.asmdef.meta diff --git a/Assets/Minigames/Tests.meta b/Assets/Minigames/Tests.meta new file mode 100644 index 0000000..c7a71dd --- /dev/null +++ b/Assets/Minigames/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43dc2b3a7ccb6f44092dae9cfafcfdf7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Minigames/Tests/EditMode.meta b/Assets/Minigames/Tests/EditMode.meta new file mode 100644 index 0000000..a89bee0 --- /dev/null +++ b/Assets/Minigames/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8bdff8c43ae2ed3408ac9dd22babdea1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Minigames/Tests/EditMode/MinigameEditMode.asmdef b/Assets/Minigames/Tests/EditMode/MinigameEditMode.asmdef new file mode 100644 index 0000000..a4e2aee --- /dev/null +++ b/Assets/Minigames/Tests/EditMode/MinigameEditMode.asmdef @@ -0,0 +1,24 @@ +{ + "name": "MinigameEditMode", + "rootNamespace": "", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "MinigameScripts" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Minigames/Tests/EditMode/MinigameEditMode.asmdef.meta b/Assets/Minigames/Tests/EditMode/MinigameEditMode.asmdef.meta new file mode 100644 index 0000000..ee8a2a3 --- /dev/null +++ b/Assets/Minigames/Tests/EditMode/MinigameEditMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea6df98465882b7449460b40b88f7c28 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Minigames/Tests/PlayMode.meta b/Assets/Minigames/Tests/PlayMode.meta new file mode 100644 index 0000000..3ea74aa --- /dev/null +++ b/Assets/Minigames/Tests/PlayMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9fa435327784afc45b5e3ed2c59eae23 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Minigames/Tests/PlayMode/MinigamePlayMode.asmdef b/Assets/Minigames/Tests/PlayMode/MinigamePlayMode.asmdef new file mode 100644 index 0000000..038cda6 --- /dev/null +++ b/Assets/Minigames/Tests/PlayMode/MinigamePlayMode.asmdef @@ -0,0 +1,22 @@ +{ + "name": "MinigamePlayMode", + "rootNamespace": "", + "references": [ + "UnityEngine.TestRunner", + "UnityEditor.TestRunner", + "MinigameScripts" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": true, + "precompiledReferences": [ + "nunit.framework.dll" + ], + "autoReferenced": false, + "defineConstraints": [ + "UNITY_INCLUDE_TESTS" + ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Minigames/Tests/PlayMode/MinigamePlayMode.asmdef.meta b/Assets/Minigames/Tests/PlayMode/MinigamePlayMode.asmdef.meta new file mode 100644 index 0000000..0179373 --- /dev/null +++ b/Assets/Minigames/Tests/PlayMode/MinigamePlayMode.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a2381a064b1ef7745ad9ce696bde7a5f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpellingBee/Scripts/SpellingBeeScripts.asmdef b/Assets/SpellingBee/Scripts/SpellingBeeScripts.asmdef index bbf25b5..6b8b974 100644 --- a/Assets/SpellingBee/Scripts/SpellingBeeScripts.asmdef +++ b/Assets/SpellingBee/Scripts/SpellingBeeScripts.asmdef @@ -7,9 +7,9 @@ "GUID:3444c67d5a3a93e5a95a48906078c372", "GUID:d0b6b39a21908f94fbbd9f2c196a9725", "GUID:58e104b97fb3752438ada2902a36dcbf", - "GUID:e83ddf9a537a96b4a804a16bb7872ec1", "GUID:7f2d0ee6dd21e1d4eb25b71b7a749d25", - "GUID:403dd94a93598934eb522dc36df43d7b" + "GUID:403dd94a93598934eb522dc36df43d7b", + "GUID:e83ddf9a537a96b4a804a16bb7872ec1" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/SpellingBee/Tests/BasicTests.cs b/Assets/SpellingBee/Tests/BasicTests.cs deleted file mode 100644 index 7cffd7c..0000000 --- a/Assets/SpellingBee/Tests/BasicTests.cs +++ /dev/null @@ -1,23 +0,0 @@ -using NUnit.Framework; -using System.Collections; -using UnityEngine.TestTools; - -public class BasicTests -{ - // A Test behaves as an ordinary method - [Test] - public void BasicTestsSimplePasses() - { - // Use the Assert class to test conditions - } - - // A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use - // `yield return null;` to skip a frame. - [UnityTest] - public IEnumerator BasicTestsWithEnumeratorPasses() - { - // Use the Assert class to test conditions. - // Use yield to skip a frame. - yield return null; - } -} diff --git a/Assets/SpellingBee/Tests/BasicTests.cs.meta b/Assets/SpellingBee/Tests/BasicTests.cs.meta deleted file mode 100644 index 6035afb..0000000 --- a/Assets/SpellingBee/Tests/BasicTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8f299faea6f9535d0a1e6698b5be94ed -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/SpellingBee/Tests/EditMode.meta b/Assets/SpellingBee/Tests/EditMode.meta new file mode 100644 index 0000000..321edca --- /dev/null +++ b/Assets/SpellingBee/Tests/EditMode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61b004829d55df545a3bfb03c40eca7b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpellingBee/Tests/SpellingBeeTests.asmdef b/Assets/SpellingBee/Tests/EditMode/SpellingBeeEditMode.asmdef similarity index 93% rename from Assets/SpellingBee/Tests/SpellingBeeTests.asmdef rename to Assets/SpellingBee/Tests/EditMode/SpellingBeeEditMode.asmdef index dc9de8e..33473f7 100644 --- a/Assets/SpellingBee/Tests/SpellingBeeTests.asmdef +++ b/Assets/SpellingBee/Tests/EditMode/SpellingBeeEditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "SpellingBeeTests", + "name": "SpellingBeeEditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", diff --git a/Assets/SpellingBee/Tests/SpellingBeeTests.asmdef.meta b/Assets/SpellingBee/Tests/EditMode/SpellingBeeEditMode.asmdef.meta similarity index 100% rename from Assets/SpellingBee/Tests/SpellingBeeTests.asmdef.meta rename to Assets/SpellingBee/Tests/EditMode/SpellingBeeEditMode.asmdef.meta diff --git a/Assets/SpellingBee/PlayModeTests.meta b/Assets/SpellingBee/Tests/PlayMode.meta similarity index 100% rename from Assets/SpellingBee/PlayModeTests.meta rename to Assets/SpellingBee/Tests/PlayMode.meta diff --git a/Assets/SpellingBee/PlayModeTests/GameEndedPanelTests.cs b/Assets/SpellingBee/Tests/PlayMode/GameEndedPanelTests.cs similarity index 96% rename from Assets/SpellingBee/PlayModeTests/GameEndedPanelTests.cs rename to Assets/SpellingBee/Tests/PlayMode/GameEndedPanelTests.cs index df4428a..8ec0c00 100644 --- a/Assets/SpellingBee/PlayModeTests/GameEndedPanelTests.cs +++ b/Assets/SpellingBee/Tests/PlayMode/GameEndedPanelTests.cs @@ -10,7 +10,7 @@ public class SpellingBeeGameEndedPanelTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/SpellingBee/PlayModeTests/GameEndedPanelTests.cs.meta b/Assets/SpellingBee/Tests/PlayMode/GameEndedPanelTests.cs.meta similarity index 100% rename from Assets/SpellingBee/PlayModeTests/GameEndedPanelTests.cs.meta rename to Assets/SpellingBee/Tests/PlayMode/GameEndedPanelTests.cs.meta diff --git a/Assets/SpellingBee/PlayModeTests/SpellingBeeControllerTests.cs b/Assets/SpellingBee/Tests/PlayMode/SpellingBeeControllerTests.cs similarity index 97% rename from Assets/SpellingBee/PlayModeTests/SpellingBeeControllerTests.cs rename to Assets/SpellingBee/Tests/PlayMode/SpellingBeeControllerTests.cs index d8db61d..a849d3f 100644 --- a/Assets/SpellingBee/PlayModeTests/SpellingBeeControllerTests.cs +++ b/Assets/SpellingBee/Tests/PlayMode/SpellingBeeControllerTests.cs @@ -10,7 +10,7 @@ public class SpellingBeeControllerTests [UnitySetUp] public IEnumerator SetupFunction() { - string path = $"{Application.persistentDataPath}/unit_test_users.json"; + 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}}"; File.WriteAllText(path, oneUser); diff --git a/Assets/SpellingBee/PlayModeTests/SpellingBeeControllerTests.cs.meta b/Assets/SpellingBee/Tests/PlayMode/SpellingBeeControllerTests.cs.meta similarity index 100% rename from Assets/SpellingBee/PlayModeTests/SpellingBeeControllerTests.cs.meta rename to Assets/SpellingBee/Tests/PlayMode/SpellingBeeControllerTests.cs.meta diff --git a/Assets/SpellingBee/PlayModeTests/SpellingBeePlayModeTests.asmdef b/Assets/SpellingBee/Tests/PlayMode/SpellingBeePlayMode.asmdef similarity index 86% rename from Assets/SpellingBee/PlayModeTests/SpellingBeePlayModeTests.asmdef rename to Assets/SpellingBee/Tests/PlayMode/SpellingBeePlayMode.asmdef index 90cc80d..73ed5b0 100644 --- a/Assets/SpellingBee/PlayModeTests/SpellingBeePlayModeTests.asmdef +++ b/Assets/SpellingBee/Tests/PlayMode/SpellingBeePlayMode.asmdef @@ -1,5 +1,5 @@ { - "name": "SpellingBeePlayModeTests", + "name": "SpellingBeePlayMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", @@ -8,9 +8,9 @@ "Unity.TextMeshPro", "SpellingBeeScripts", "AccountsScripts", - "ArchitectureScripts", "SignPredictor", - "MinigameScripts" + "MinigameScripts", + "ArchitectureScripts" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/SpellingBee/PlayModeTests/SpellingBeePlayModeTests.asmdef.meta b/Assets/SpellingBee/Tests/PlayMode/SpellingBeePlayMode.asmdef.meta similarity index 100% rename from Assets/SpellingBee/PlayModeTests/SpellingBeePlayModeTests.asmdef.meta rename to Assets/SpellingBee/Tests/PlayMode/SpellingBeePlayMode.asmdef.meta diff --git a/Packages/manifest.json b/Packages/manifest.json index f87140d..c1b9b32 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -9,14 +9,14 @@ } ], "dependencies": { - "ai.natml.natml": "1.1.3", + "ai.natml.natml": "1.1.5", "com.unity.2d.sprite": "1.0.0", "com.unity.collab-proxy": "2.0.0", "com.unity.ide.rider": "3.0.18", - "com.unity.ide.visualstudio": "2.0.17", + "com.unity.ide.visualstudio": "2.0.18", "com.unity.ide.vscode": "1.2.5", "com.unity.test-framework": "1.1.33", - "com.unity.testtools.codecoverage": "1.2.2", + "com.unity.testtools.codecoverage": "1.2.3", "com.unity.textmeshpro": "3.0.6", "com.unity.timeline": "1.6.4", "com.unity.ugui": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 3e3a80c..549a82c 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -8,11 +8,12 @@ "url": "https://registry.npmjs.com" }, "ai.natml.natml": { - "version": "1.1.3", + "version": "1.1.5", "depth": 0, "source": "registry", "dependencies": { - "ai.natml.hub": "1.0.20" + "ai.natml.hub": "1.0.20", + "com.unity.nuget.newtonsoft-json": "3.1.0" }, "url": "https://registry.npmjs.com" }, @@ -52,7 +53,7 @@ "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.17", + "version": "2.0.18", "depth": 0, "source": "registry", "dependencies": { @@ -67,6 +68,13 @@ "dependencies": {}, "url": "https://packages.unity.com" }, + "com.unity.nuget.newtonsoft-json": { + "version": "3.1.0", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.settings-manager": { "version": "1.0.3", "depth": 1, @@ -86,7 +94,7 @@ "url": "https://packages.unity.com" }, "com.unity.testtools.codecoverage": { - "version": "1.2.2", + "version": "1.2.3", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index ebaed27..b36ab04 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -11,6 +11,27 @@ EditorBuildSettings: - enabled: 1 path: Assets/Common/Scenes/MainMenuScreen.unity guid: a50df781449ac1fa5a036626c4710b24 + - enabled: 1 + path: Assets/Common/Scenes/CoursesMenuScreen.unity + guid: 4fb0b014dad7fcdcb96413a2c31b9cd1 + - enabled: 1 + path: Assets/Common/Scenes/ListCoursesScreen.unity + guid: 854b0d72c38c8e992be22284a35990ae + - enabled: 1 + path: Assets/Common/Scenes/ListMinigamesScreen.unity + guid: bfec7d1fbaa2ffd038ca6a86e6213bb7 + - enabled: 1 + path: Assets/Common/Scenes/CourseActivityScreen.unity + guid: 5ff44b09f5858a64692f58938fd6d2ff + - enabled: 1 + path: Assets/Common/Scenes/MinigameActivityScreen.unity + guid: 8e27404f21454dc4583f76b4c7df0c30 + - enabled: 1 + path: Assets/Common/Scenes/ThemeSelectionScreen.unity + guid: 2dfa1265c9d65014c90941ac4240a977 + - enabled: 1 + path: Assets/Common/Scenes/SettingsScreen.unity + guid: 082b8c0d94b135d4a98f83699c92e45b - enabled: 1 path: Assets/Accounts/Scenes/UserCreationScreen.unity guid: 401cfc17c01f88847b434260a6a93933 @@ -20,30 +41,6 @@ EditorBuildSettings: - enabled: 1 path: Assets/Accounts/Scenes/UserProgressScreen.unity guid: 222ac8b048efd45478729efeea1f6110 - - enabled: 1 - path: Assets/Common/Scenes/CoursesMenuScreen.unity - guid: 4fb0b014dad7fcdcb96413a2c31b9cd1 - - enabled: 1 - path: Assets/Common/Scenes/ListMinigamesScreen.unity - guid: bfec7d1fbaa2ffd038ca6a86e6213bb7 - - enabled: 1 - path: Assets/Common/Scenes/ListCoursesScreen.unity - guid: 854b0d72c38c8e992be22284a35990ae - - enabled: 1 - path: Assets/Common/Scenes/SettingsScreen.unity - guid: 082b8c0d94b135d4a98f83699c92e45b - - enabled: 1 - path: Assets/Common/Scenes/CourseActivityScreen.unity - guid: 5ff44b09f5858a64692f58938fd6d2ff - - enabled: 1 - path: Assets/Common/Scenes/MinigameActivityScreen.unity - guid: 8e27404f21454dc4583f76b4c7df0c30 - - enabled: 1 - path: Assets/JustSign/Scenes/JustSignGame.unity - guid: 1283017ac1c1f6226854442564bd7e3d - - enabled: 1 - path: Assets/Common/Scenes/ThemeSelectionScreen.unity - guid: 2dfa1265c9d65014c90941ac4240a977 - enabled: 1 path: Assets/Courses/Scenes/CourseScreen.unity guid: 2cda990e2423bbf4892e6590ba056729 diff --git a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json index ad11087..dea77e3 100644 --- a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json +++ b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json @@ -2,6 +2,57 @@ "m_Name": "Settings", "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json", "m_Dictionary": { - "m_DictionaryValues": [] + "m_DictionaryValues": [ + { + "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "IncludeAssemblies", + "value": "{\"m_Value\":\"AccountsScripts,ArchitectureScripts,CommonScripts,CourseScripts,HangmanScripts,InterfacesScripts,JustSignScripts,MinigameScripts,SignPredictor,SignPredictorInterfaces,SpellingBeeScripts\"}" + }, + { + "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "Path", + "value": "{\"m_Value\":\"{ProjectPath}\"}" + }, + { + "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "HistoryPath", + "value": "{\"m_Value\":\"{ProjectPath}\"}" + }, + { + "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "PathsToInclude", + "value": "{\"m_Value\":\"\"}" + }, + { + "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "PathsToExclude", + "value": "{\"m_Value\":\"{ProjectPath}/Assets/Architecture/Scripts/SlicedSlider.cs\"}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "EnableCodeCoverage", + "value": "{\"m_Value\":true}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "OpenReportWhenGenerated", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "GenerateTestReferences", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "IncludeHistoryInReport", + "value": "{\"m_Value\":true}" + }, + { + "type": "System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "VerbosityLevel", + "value": "{\"m_Value\":4}" + } + ] } } \ No newline at end of file diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 8502e64..37f0423 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -170,6 +170,8 @@ PlayerSettings: - {fileID: 0} - {fileID: 0} - {fileID: 0} + - {fileID: 11400000, guid: 327974eea6e413e418ae0fddd61a0e00, type: 2} + - {fileID: 11400000, guid: 6b1932f44c6135240a0c0fdaf35d9d61, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1