< Summary

Class:Tests.UIScreenSpaceTests
Assembly:UIScreenSpaceTests
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/UI/UIScreenSpace/Tests/UIScreenSpaceTests.cs
Covered lines:11
Uncovered lines:28
Coverable lines:39
Total lines:134
Line coverage:28.2% (11 of 39)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
TestVisibilityUpdate()0%72800%
TestScaleWhenCharacterIsElsewhere()0%30500%
TestMissingValuesGetDefaultedOnUpdate()0%330100%
TestConstrainedPanelMaskDoesntApplyToDecentralandUI()0%550100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/UI/UIScreenSpace/Tests/UIScreenSpaceTests.cs

#LineLine coverage
 1using DCL.Components;
 2using DCL.Helpers;
 3using DCL.Models;
 4using NUnit.Framework;
 5using System.Collections;
 6using UnityEngine;
 7using UnityEngine.TestTools;
 8
 9namespace Tests
 10{
 11    public class UIScreenSpaceTests : UITestsBase
 12    {
 13        [UnityTest]
 14        [Explicit]
 15        [Category("Explicit")]
 16        public IEnumerator TestVisibilityUpdate()
 17        {
 018            scene.isPersistent = false;
 19            // Create UIScreenSpaceShape
 020            UIScreenSpace screenSpaceShape =
 21                TestHelpers.SharedComponentCreate<UIScreenSpace, UIScreenSpace.Model>(scene,
 22                    CLASS_ID.UI_SCREEN_SPACE_SHAPE);
 23
 024            yield return screenSpaceShape.routine;
 25
 026            CanvasGroup canvasGroup = screenSpaceShape.canvas.GetComponent<CanvasGroup>();
 27
 28            // Check visibility
 029            Assert.IsTrue(canvasGroup.alpha == 1f,
 30                "When the character is inside the scene, the UIScreenSpaceShape should be visible");
 31
 32            // Update canvas visibility value manually
 033            yield return TestHelpers.SharedComponentUpdate(screenSpaceShape,
 34                new UIScreenSpace.Model
 35                {
 36                    visible = false
 37                });
 38
 39            // Check visibility
 040            Assert.IsTrue(canvasGroup.alpha == 0f,
 41                "When the UIScreenSpaceShape is explicitly updated as 'invisible', its canvas shouldn't be visible");
 42
 43            // Re-enable visibility
 044            yield return TestHelpers.SharedComponentUpdate(screenSpaceShape,
 45                new UIScreenSpace.Model
 46                {
 47                    visible = true
 48                });
 49
 050            TestHelpers.SetCharacterPosition(Vector3.zero);
 51
 052            yield return screenSpaceShape.routine;
 53
 54            // Check visibility
 055            Assert.IsTrue(canvasGroup.alpha == 1f,
 56                "When the UIScreenSpaceShape is explicitly updated as 'visible', its canvas should be visible");
 57
 58            // Position character outside parcel
 059            TestHelpers.SetCharacterPosition(new Vector3(100, 3f, 100f));
 60
 061            yield return null;
 62
 63            // Check visibility
 064            Assert.IsTrue(canvasGroup.alpha == 0f,
 65                "When the character is outside the scene, the UIScreenSpaceShape shouldn't be visible");
 66
 067            yield return new WaitForAllMessagesProcessed();
 68
 069            screenSpaceShape.Dispose();
 070        }
 71
 72        [UnityTest]
 73        [Explicit]
 74        [Category("Explicit")]
 75        public IEnumerator TestScaleWhenCharacterIsElsewhere()
 76        {
 77            // Position character outside parcel
 078            TestHelpers.SetCharacterPosition(new Vector3(50f, 3f, 50f));
 79
 080            yield return null;
 81
 82            // Create UIScreenSpaceShape
 083            UIScreenSpace screenSpaceShape =
 84                TestHelpers.SharedComponentCreate<UIScreenSpace, UIScreenSpace.Model>(scene,
 85                    CLASS_ID.UI_SCREEN_SPACE_SHAPE);
 86
 087            yield return screenSpaceShape.routine;
 88
 089            RectTransform canvasRectTransform = screenSpaceShape.canvas.GetComponent<RectTransform>();
 90
 91            const float diffThreshold = 0.1f; //to ensure float point comparison
 092            Vector2 canvasRealSize = canvasRectTransform.sizeDelta * canvasRectTransform.localScale;
 093            Vector2 screenSize = new Vector2(Screen.width, Screen.height);
 94
 95            //Canvas should have the same size of the screen
 096            Assert.IsTrue(Mathf.Abs((canvasRealSize - screenSize).magnitude) < diffThreshold);
 97
 098            yield return new WaitForAllMessagesProcessed();
 99
 0100            screenSpaceShape.Dispose();
 0101        }
 102
 103        [UnityTest]
 104        public IEnumerator TestMissingValuesGetDefaultedOnUpdate()
 105        {
 1106            yield return TestHelpers.TestSharedComponentDefaultsOnUpdate<UIScreenSpace.Model, UIScreenSpace>(scene,
 107                CLASS_ID.UI_SCREEN_SPACE_SHAPE);
 1108        }
 109
 110        [UnityTest]
 111        public IEnumerator TestConstrainedPanelMaskDoesntApplyToDecentralandUI()
 112        {
 1113            scene.isPersistent = true;
 114
 1115            yield return null;
 116
 117            // Create UIScreenSpaceShape
 1118            UIScreenSpace screenSpaceShape =
 119                TestHelpers.SharedComponentCreate<UIScreenSpace, UIScreenSpace.Model>(scene,
 120                    CLASS_ID.UI_SCREEN_SPACE_SHAPE);
 121
 1122            yield return screenSpaceShape.routine;
 123
 1124            Assert.IsTrue(scene.isPersistent);
 1125            Assert.IsTrue(screenSpaceShape.childHookRectTransform.GetComponent<UnityEngine.UI.RectMask2D>() == null);
 126
 127            // UIScreenSpace.InitializeCanvas is not awaited by screenSpaceShape.routine
 128            // todo fix it properly
 1129            yield return null;
 130
 1131            screenSpaceShape.Dispose();
 1132        }
 133    }
 134}