< Summary

Class:Tests.ExploreHUDShould
Assembly:ExploreHUDTest
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ExploreHUD/Test/ExploretHUDTest.cs
Covered lines:69
Uncovered lines:1
Coverable lines:70
Total lines:248
Line coverage:98.5% (69 of 70)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
ExploreHUDShould()0%110100%
SetUp()0%330100%
TearDown()0%330100%
TriggerToggleCorrectly()0%220100%
DisplayCorrectly()0%330100%
SetupFriendController()0%2100%
SetupUserProfileController()0%110100%
SimulateFriendsUpdate()0%110100%
SimulateHotSceneUpdate()0%330100%
GetActiveCells()0%220100%
GetFriendsCount(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/ExploreHUD/Test/ExploretHUDTest.cs

#LineLine coverage
 1using System.Collections;
 2using NUnit.Framework;
 3using UnityEngine;
 4using UnityEngine.TestTools;
 5using System;
 6using System.Collections.Generic;
 7
 8namespace Tests
 9{
 10    public class ExploreHUDShould : IntegrationTestSuite_Legacy
 11    {
 12        private ExploreHUDController controller;
 13        private FriendsController_Mock friendsController;
 14
 115        readonly Vector2Int BASECOORD_TEMPTATION = new Vector2Int(70, -135);
 116        readonly Vector2Int BASECOORD_FIRST_CELL = new Vector2Int(0, 0);
 117        readonly Vector2Int BASECOORD_SECOND_CELL = new Vector2Int(20, 20);
 18
 19        protected override IEnumerator SetUp()
 20        {
 221            yield return base.SetUp();
 222            ExploreHUDController.isTest = true;
 23
 224            SetupUserProfileController();
 25
 226            friendsController = new FriendsController_Mock();
 227            controller = new ExploreHUDController();
 228            controller.Initialize(friendsController);
 229        }
 30
 31        protected override IEnumerator TearDown()
 32        {
 233            controller.Dispose();
 234            yield return base.TearDown();
 235        }
 36
 37        [UnityTest]
 38        public IEnumerator TriggerToggleCorrectly()
 39        {
 140            Assert.NotNull(controller.view);
 141            Assert.IsFalse(controller.view.popup.gameObject.activeSelf);
 42
 143            bool wasTriggered = false;
 244            Action toggleTriggered = () => wasTriggered = true;
 45
 146            controller.OnToggleTriggered += toggleTriggered;
 147            controller.toggleExploreTrigger.RaiseOnTriggered();
 148            controller.OnToggleTriggered -= toggleTriggered;
 49
 150            Assert.IsTrue(wasTriggered);
 151            yield break;
 52        }
 53
 54        [UnityTest]
 55        public IEnumerator DisplayCorrectly()
 56        {
 157            controller.SetVisibility(true);
 158            Assert.IsTrue(controller.view.gameObject.activeSelf);
 59
 160            SimulateFriendsUpdate();
 161            SimulateHotSceneUpdate();
 62
 163            yield return null;
 64
 165            var activeCells = GetActiveCells();
 166            Assert.AreEqual(activeCells.Count, 3);
 67
 168            Assert.AreEqual(GetFriendsCount(activeCells[BASECOORD_FIRST_CELL]), 0);
 169            Assert.AreEqual(GetFriendsCount(activeCells[BASECOORD_SECOND_CELL]), 0);
 170            Assert.AreEqual(GetFriendsCount(activeCells[BASECOORD_TEMPTATION]), 1);
 71
 172            friendsController.RaiseUpdateUserStatus("userOnline",
 73                new FriendsController.UserStatus()
 74                {
 75                    position = BASECOORD_FIRST_CELL,
 76                    presence = PresenceStatus.ONLINE,
 77                    realm = new FriendsController.UserStatus.Realm() { layer = "layer", serverName = "server" }
 78                });
 79
 180            Assert.AreEqual(GetFriendsCount(activeCells[BASECOORD_FIRST_CELL]), 1);
 181            Assert.AreEqual(GetFriendsCount(activeCells[BASECOORD_TEMPTATION]), 0);
 82
 183            friendsController.RaiseUpdateUserStatus("userOnline",
 84                new FriendsController.UserStatus()
 85                {
 86                    position = BASECOORD_FIRST_CELL,
 87                    presence = PresenceStatus.OFFLINE,
 88                    realm = new FriendsController.UserStatus.Realm() { layer = "layer", serverName = "server" }
 89                });
 90
 191            Assert.AreEqual(GetFriendsCount(activeCells[BASECOORD_FIRST_CELL]), 0);
 192        }
 93
 094        private void SetupFriendController() { friendsController = new FriendsController_Mock(); }
 95
 96        private void SetupUserProfileController()
 97        {
 298            UserProfileModel userOnline = new UserProfileModel()
 99            {
 100                name = "userOnline",
 101                userId = "userOnline"
 102            };
 2103            UserProfileModel userOffline = new UserProfileModel()
 104            {
 105                userId = "userOffline",
 106                name = "userOffline"
 107            };
 2108            UserProfileModel userOnlineNoRealm = new UserProfileModel()
 109            {
 110                name = "userOnlineNoRealm",
 111                userId = "userOnlineNoRealm"
 112            };
 113
 2114            UserProfileController.i.AddUserProfileToCatalog(userOnline);
 2115            UserProfileController.i.AddUserProfileToCatalog(userOffline);
 2116            UserProfileController.i.AddUserProfileToCatalog(userOnlineNoRealm);
 2117        }
 118
 119        private void SimulateFriendsUpdate()
 120        {
 1121            var userOnline = new FriendsController.UserStatus()
 122            {
 123                position = BASECOORD_TEMPTATION,
 124                presence = PresenceStatus.ONLINE,
 125                realm = new FriendsController.UserStatus.Realm() { layer = "layer", serverName = "server" },
 126                userId = "userOnline"
 127            };
 128
 1129            var userOffline = new FriendsController.UserStatus()
 130            {
 131                position = BASECOORD_TEMPTATION,
 132                presence = PresenceStatus.OFFLINE,
 133                realm = new FriendsController.UserStatus.Realm() { layer = "layer", serverName = "server" },
 134                userId = "userOffline"
 135            };
 136
 1137            var userOnlineNoRealm = new FriendsController.UserStatus()
 138            {
 139                position = BASECOORD_TEMPTATION,
 140                presence = PresenceStatus.ONLINE,
 141                realm = new FriendsController.UserStatus.Realm() { layer = "", serverName = "" },
 142                userId = "userOnlineNoRealm"
 143            };
 144
 1145            friendsController.RaiseUpdateUserStatus("userOnline", userOnline);
 1146            friendsController.RaiseUpdateUserStatus("userOffline", userOffline);
 1147            friendsController.RaiseUpdateUserStatus("userOnlineNoRealm", userOnlineNoRealm);
 1148        }
 149
 150        private void SimulateHotSceneUpdate()
 151        {
 1152            var scenes = new HotScenesController.HotSceneInfo[]
 153            {
 154                new HotScenesController.HotSceneInfo()
 155                {
 156                    baseCoords = BASECOORD_FIRST_CELL,
 157                    realms = new HotScenesController.HotSceneInfo.Realm[]
 158                    {
 159                        new HotScenesController.HotSceneInfo.Realm()
 160                        {
 161                            layer = "amber",
 162                            serverName = "fenrir",
 163                            usersCount = 10,
 164                            usersMax = 50
 165                        },
 166                        new HotScenesController.HotSceneInfo.Realm()
 167                        {
 168                            layer = "blue",
 169                            serverName = "unicorn",
 170                            usersCount = 2,
 171                            usersMax = 50
 172                        }
 173                    },
 174                    parcels = new Vector2Int[] { BASECOORD_FIRST_CELL, BASECOORD_FIRST_CELL + new Vector2Int(0, 1) },
 175                    usersTotalCount = 12
 176                },
 177
 178                new HotScenesController.HotSceneInfo()
 179                {
 180                    baseCoords = BASECOORD_SECOND_CELL,
 181                    realms = new HotScenesController.HotSceneInfo.Realm[]
 182                    {
 183                        new HotScenesController.HotSceneInfo.Realm()
 184                        {
 185                            layer = "amber",
 186                            serverName = "fenrir",
 187                            usersCount = 1,
 188                            usersMax = 50
 189                        }
 190                    },
 191                    parcels = new Vector2Int[] { BASECOORD_SECOND_CELL },
 192                    usersTotalCount = 1
 193                },
 194
 195                new HotScenesController.HotSceneInfo()
 196                {
 197                    baseCoords = BASECOORD_TEMPTATION,
 198                    realms = new HotScenesController.HotSceneInfo.Realm[]
 199                    {
 200                        new HotScenesController.HotSceneInfo.Realm()
 201                        {
 202                            layer = "red",
 203                            serverName = "temptation",
 204                            usersCount = 100,
 205                            usersMax = 50
 206                        }
 207                    },
 208                    parcels = new Vector2Int[]
 209                    {
 210                        BASECOORD_TEMPTATION,
 211                        BASECOORD_TEMPTATION + new Vector2Int(0, 1),
 212                        BASECOORD_TEMPTATION + new Vector2Int(0, 2)
 213                    },
 214                    usersTotalCount = 100
 215                }
 216            };
 217
 1218            string scenesJson = "[";
 8219            for (int i = 0; i < scenes.Length; i++)
 220            {
 3221                scenesJson += JsonUtility.ToJson(scenes[i]);
 3222                if (i != scenes.Length - 1)
 2223                    scenesJson += ",";
 224            }
 1225            scenesJson += "]";
 226
 1227            var json = "{\"chunkIndex\":0,\"chunksCount\":1,\"scenesInfo\":" + scenesJson + "}";
 1228            HotScenesController.i.UpdateHotScenesList(json);
 1229        }
 230
 231        Dictionary<Vector2Int, HotSceneCellView> GetActiveCells()
 232        {
 1233            Dictionary<Vector2Int, HotSceneCellView> ret = new Dictionary<Vector2Int, HotSceneCellView>();
 1234            var cells = GameObject.FindObjectsOfType<HotSceneCellView>();
 8235            for (int i = 0; i < cells.Length; i++)
 236            {
 3237                ret.Add(cells[i].mapInfoHandler.baseCoord, cells[i]);
 238            }
 1239            return ret;
 240        }
 241
 242        int GetFriendsCount(HotSceneCellView cell)
 243        {
 6244            var friendsView = cell.transform.GetComponentsInChildren<ExploreFriendsView>(includeInactive: false);
 6245            return friendsView.Length;
 246        }
 247    }
 248}