< Summary

Class:Tests.AutoQualitySettingsComponentShould
Assembly:SettingsControllersTest
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/Tests/AutoQualitySettingsComponentShould.cs
Covered lines:15
Uncovered lines:0
Coverable lines:15
Total lines:220
Line coverage:100% (15 of 15)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetUp()0%330100%
CreateCappedControllerProperly()0%110100%
CreateUncappedControllerProperly()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/Tests/AutoQualitySettingsComponentShould.cs

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 3using System.Linq;
 4using DCL;
 5using DCL.FPSDisplay;
 6using DCL.SettingsData;
 7using NSubstitute;
 8using NUnit.Framework;
 9using UnityEngine;
 10using QualitySettings = DCL.SettingsData.QualitySettings;
 11
 12namespace Tests
 13{
 14    public class AutoQualitySettingsComponentShould : IntegrationTestSuite_Legacy
 15    {
 16        private AutoQualitySettingsComponent component;
 17
 18        protected override IEnumerator SetUp()
 19        {
 220            yield return base.SetUp();
 221            component = CreateTestGameObject("controllerHolder").AddComponent<AutoQualitySettingsComponent>();
 222            Settings.i.autoqualitySettings = ScriptableObject.CreateInstance<QualitySettingsData>();
 223            component.qualitySettings.Set(new []
 24            {
 25                Settings.i.qualitySettings,
 26                Settings.i.qualitySettings,
 27                Settings.i.qualitySettings,
 28                Settings.i.qualitySettings,
 29            });
 230        }
 31
 32        [Test]
 33        public void CreateCappedControllerProperly()
 34        {
 135            component.fpsCapped = false;
 136            component.OnQualitySettingsChanged(new QualitySettings { fpsCap = true });
 37
 138            Assert.IsTrue(component.fpsCapped);
 139            Assert.IsInstanceOf<AutoQualityCappedFPSController>(component.controller);
 140        }
 41
 42        [Test]
 43        public void CreateUncappedControllerProperly()
 44        {
 145            component.fpsCapped = true;
 146            component.OnQualitySettingsChanged(new QualitySettings { fpsCap = false });
 47
 148            Assert.IsFalse(component.fpsCapped);
 149            Assert.IsInstanceOf<AutoQualityUncappedFPSController>(component.controller);
 150        }
 51    }
 52
 53    public class AutoQualityCappedFPSControllerShould : IntegrationTestSuite_Legacy
 54    {
 55        private AutoQualityCappedFPSController controller;
 56        private QualitySettingsData qualities;
 57
 58        protected override IEnumerator SetUp()
 59        {
 60            yield return base.SetUp();
 61            qualities = ScriptableObject.CreateInstance<QualitySettingsData>();
 62            qualities.Set(new []
 63            {
 64                Settings.i.qualitySettings,
 65                Settings.i.qualitySettings,
 66                Settings.i.qualitySettings,
 67                Settings.i.qualitySettings,
 68                Settings.i.qualitySettings,
 69                Settings.i.qualitySettings,
 70                Settings.i.qualitySettings,
 71                Settings.i.qualitySettings,
 72                Settings.i.qualitySettings,
 73            });
 74            controller = new AutoQualityCappedFPSController(30, 0, qualities);
 75        }
 76
 77        [Test]
 78        public void StayIfNotEnoughData()
 79        {
 80            int initialIndex = qualities.Length / 2;
 81            controller.currentQualityIndex = initialIndex;
 82
 83            int newQualityIndex;
 84            for (int i = 0; i < AutoQualityCappedFPSController.EVALUATIONS_SIZE; i++)
 85            {
 86                newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = 0 });
 87                Assert.AreEqual(initialIndex, newQualityIndex);
 88            }
 89
 90            newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = 0 });
 91            Assert.AreNotEqual(initialIndex, newQualityIndex);
 92        }
 93
 94        [Test]
 95        public void DecreaseIfBadPerformance()
 96        {
 97            int initialIndex = qualities.Length / 2;
 98            controller.currentQualityIndex = initialIndex;
 99
 100            float belowAcceptableFPS = controller.targetFPS * Mathf.Lerp( 0, AutoQualityCappedFPSController.STAY_MARGIN,
 101            controller.fpsEvaluations.Clear();
 102            controller.fpsEvaluations.AddRange(Enumerable.Repeat(belowAcceptableFPS, AutoQualityCappedFPSController.EVAL
 103
 104            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = belowAcceptableFPS 
 105            Assert.AreEqual(initialIndex - 1, newQualityIndex);
 106        }
 107
 108        [Test]
 109        public void StayIfAcceptablePerformance()
 110        {
 111            int initialIndex = qualities.Length / 2;
 112            controller.currentQualityIndex = initialIndex;
 113
 114            float acceptableFPS = controller.targetFPS * Mathf.Lerp( AutoQualityCappedFPSController.STAY_MARGIN, AutoQua
 115            controller.fpsEvaluations.Clear();
 116            controller.fpsEvaluations.AddRange(Enumerable.Repeat(acceptableFPS, AutoQualityCappedFPSController.EVALUATIO
 117
 118            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = acceptableFPS });
 119            Assert.AreEqual(initialIndex, newQualityIndex);
 120        }
 121
 122        [Test]
 123        public void IncreaseIfGreatPerformance()
 124        {
 125            int initialIndex = qualities.Length / 2;
 126            controller.currentQualityIndex = initialIndex;
 127
 128            float greatFPS = controller.targetFPS * Mathf.Lerp( AutoQualityCappedFPSController.INCREASE_MARGIN, 1, 0.5f)
 129            controller.fpsEvaluations.Clear();
 130            controller.fpsEvaluations.AddRange(Enumerable.Repeat(greatFPS, AutoQualityCappedFPSController.EVALUATIONS_SI
 131
 132            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = greatFPS });
 133            Assert.AreEqual(initialIndex + 2, newQualityIndex);
 134        }
 135    }
 136
 137    public class AutoQualityUncappedFPSControllerShould : IntegrationTestSuite_Legacy
 138    {
 139        private AutoQualityUncappedFPSController controller;
 140        private QualitySettingsData qualities;
 141
 142        protected override IEnumerator SetUp()
 143        {
 144            yield return base.SetUp();
 145            qualities = ScriptableObject.CreateInstance<QualitySettingsData>();
 146            qualities.Set(new []
 147            {
 148                Settings.i.qualitySettings,
 149                Settings.i.qualitySettings,
 150                Settings.i.qualitySettings,
 151                Settings.i.qualitySettings,
 152                Settings.i.qualitySettings,
 153                Settings.i.qualitySettings,
 154                Settings.i.qualitySettings,
 155                Settings.i.qualitySettings,
 156                Settings.i.qualitySettings,
 157            });
 158            controller = new AutoQualityUncappedFPSController(0, qualities);
 159        }
 160
 161        [Test]
 162        public void StayIfNotEnoughData()
 163        {
 164            int initialIndex = qualities.Length / 2;
 165            controller.currentQualityIndex = initialIndex;
 166
 167            int newQualityIndex;
 168            for (int i = 0; i < AutoQualityCappedFPSController.EVALUATIONS_SIZE; i++)
 169            {
 170                newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = 0 });
 171                Assert.AreEqual(initialIndex, newQualityIndex);
 172            }
 173
 174            newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = 0 });
 175            Assert.AreNotEqual(initialIndex, newQualityIndex);
 176        }
 177
 178        [Test]
 179        public void DecreaseIfBadPerformance()
 180        {
 181            int initialIndex = qualities.Length / 2;
 182            controller.currentQualityIndex = initialIndex;
 183
 184            float belowAcceptableFPS = FPSEvaluation.WORSE;
 185            controller.fpsEvaluations.Clear();
 186            controller.fpsEvaluations.AddRange(Enumerable.Repeat(belowAcceptableFPS, AutoQualityCappedFPSController.EVAL
 187
 188            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = belowAcceptableFPS 
 189            Assert.AreEqual(initialIndex - 1, newQualityIndex);
 190        }
 191
 192        [Test]
 193        public void StayIfAcceptablePerformance()
 194        {
 195            int initialIndex = qualities.Length / 2;
 196            controller.currentQualityIndex = initialIndex;
 197
 198            float acceptableFPS = FPSEvaluation.GOOD;
 199            controller.fpsEvaluations.Clear();
 200            controller.fpsEvaluations.AddRange(Enumerable.Repeat(acceptableFPS, AutoQualityCappedFPSController.EVALUATIO
 201
 202            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = acceptableFPS });
 203            Assert.AreEqual(initialIndex, newQualityIndex);
 204        }
 205
 206        [Test]
 207        public void IncreaseIfGreatPerformance()
 208        {
 209            int initialIndex = qualities.Length / 2;
 210            controller.currentQualityIndex = initialIndex;
 211
 212            float greatFPS = FPSEvaluation.GREAT;
 213            controller.fpsEvaluations.Clear();
 214            controller.fpsEvaluations.AddRange(Enumerable.Repeat(greatFPS, AutoQualityCappedFPSController.EVALUATIONS_SI
 215
 216            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = greatFPS });
 217            Assert.AreEqual(initialIndex + 1, newQualityIndex);
 218        }
 219    }
 220}