< Summary

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

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetUp()0%330100%
StayIfNotEnoughData()0%220100%
DecreaseIfBadPerformance()0%110100%
StayIfAcceptablePerformance()0%110100%
IncreaseIfGreatPerformance()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        {
 20            yield return base.SetUp();
 21            component = CreateTestGameObject("controllerHolder").AddComponent<AutoQualitySettingsComponent>();
 22            Settings.i.autoqualitySettings = ScriptableObject.CreateInstance<QualitySettingsData>();
 23            component.qualitySettings.Set(new []
 24            {
 25                Settings.i.qualitySettings,
 26                Settings.i.qualitySettings,
 27                Settings.i.qualitySettings,
 28                Settings.i.qualitySettings,
 29            });
 30        }
 31
 32        [Test]
 33        public void CreateCappedControllerProperly()
 34        {
 35            component.fpsCapped = false;
 36            component.OnQualitySettingsChanged(new QualitySettings { fpsCap = true });
 37
 38            Assert.IsTrue(component.fpsCapped);
 39            Assert.IsInstanceOf<AutoQualityCappedFPSController>(component.controller);
 40        }
 41
 42        [Test]
 43        public void CreateUncappedControllerProperly()
 44        {
 45            component.fpsCapped = true;
 46            component.OnQualitySettingsChanged(new QualitySettings { fpsCap = false });
 47
 48            Assert.IsFalse(component.fpsCapped);
 49            Assert.IsInstanceOf<AutoQualityUncappedFPSController>(component.controller);
 50        }
 51    }
 52
 53    public class AutoQualityCappedFPSControllerShould : IntegrationTestSuite_Legacy
 54    {
 55        private AutoQualityCappedFPSController controller;
 56        private QualitySettingsData qualities;
 57
 58        protected override IEnumerator SetUp()
 59        {
 460            yield return base.SetUp();
 461            qualities = ScriptableObject.CreateInstance<QualitySettingsData>();
 462            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            });
 474            controller = new AutoQualityCappedFPSController(30, 0, qualities);
 475        }
 76
 77        [Test]
 78        public void StayIfNotEnoughData()
 79        {
 180            int initialIndex = qualities.Length / 2;
 181            controller.currentQualityIndex = initialIndex;
 82
 83            int newQualityIndex;
 1284            for (int i = 0; i < AutoQualityCappedFPSController.EVALUATIONS_SIZE; i++)
 85            {
 586                newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = 0 });
 587                Assert.AreEqual(initialIndex, newQualityIndex);
 88            }
 89
 190            newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = 0 });
 191            Assert.AreNotEqual(initialIndex, newQualityIndex);
 192        }
 93
 94        [Test]
 95        public void DecreaseIfBadPerformance()
 96        {
 197            int initialIndex = qualities.Length / 2;
 198            controller.currentQualityIndex = initialIndex;
 99
 1100            float belowAcceptableFPS = controller.targetFPS * Mathf.Lerp( 0, AutoQualityCappedFPSController.STAY_MARGIN,
 1101            controller.fpsEvaluations.Clear();
 1102            controller.fpsEvaluations.AddRange(Enumerable.Repeat(belowAcceptableFPS, AutoQualityCappedFPSController.EVAL
 103
 1104            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = belowAcceptableFPS 
 1105            Assert.AreEqual(initialIndex - 1, newQualityIndex);
 1106        }
 107
 108        [Test]
 109        public void StayIfAcceptablePerformance()
 110        {
 1111            int initialIndex = qualities.Length / 2;
 1112            controller.currentQualityIndex = initialIndex;
 113
 1114            float acceptableFPS = controller.targetFPS * Mathf.Lerp( AutoQualityCappedFPSController.STAY_MARGIN, AutoQua
 1115            controller.fpsEvaluations.Clear();
 1116            controller.fpsEvaluations.AddRange(Enumerable.Repeat(acceptableFPS, AutoQualityCappedFPSController.EVALUATIO
 117
 1118            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = acceptableFPS });
 1119            Assert.AreEqual(initialIndex, newQualityIndex);
 1120        }
 121
 122        [Test]
 123        public void IncreaseIfGreatPerformance()
 124        {
 1125            int initialIndex = qualities.Length / 2;
 1126            controller.currentQualityIndex = initialIndex;
 127
 1128            float greatFPS = controller.targetFPS * Mathf.Lerp( AutoQualityCappedFPSController.INCREASE_MARGIN, 1, 0.5f)
 1129            controller.fpsEvaluations.Clear();
 1130            controller.fpsEvaluations.AddRange(Enumerable.Repeat(greatFPS, AutoQualityCappedFPSController.EVALUATIONS_SI
 131
 1132            int newQualityIndex = controller.EvaluateQuality(new PerformanceMetricsData { fpsCount = greatFPS });
 1133            Assert.AreEqual(initialIndex + 2, newQualityIndex);
 1134        }
 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}