< Summary

Class:DCL.SettingsCommon.SettingsControllers.AutoQualityUncappedFPSController
Assembly:SettingsControllers
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/AutoQualityUncappedFPSController.cs
Covered lines:21
Uncovered lines:1
Coverable lines:22
Total lines:56
Line coverage:95.4% (21 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AutoQualityUncappedFPSController(...)0%110100%
EvaluateQuality(...)0%6.016093.75%
ResetEvaluation()0%110100%

File(s)

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

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using DCL;
 4using DCL.FPSDisplay;
 5using UnityEngine;
 6
 7namespace DCL.SettingsCommon.SettingsControllers
 8{
 9    /// <summary>
 10    /// An implementation of an AutoQualityController for uncapped FPS
 11    /// </summary>
 12    public class AutoQualityUncappedFPSController : IAutoQualityController
 13    {
 14        private const int EVALUATIONS_SIZE = 5;
 15
 16        internal int currentQualityIndex;
 17        internal readonly QualitySettingsData qualitySettings;
 18
 17819        internal readonly List<float> fpsEvaluations = new List<float>();
 20
 17821        public AutoQualityUncappedFPSController(int startIndex, QualitySettingsData qualitySettings)
 22        {
 17823            currentQualityIndex = startIndex;
 17824            this.qualitySettings = qualitySettings;
 17825        }
 26
 27        public int EvaluateQuality(PerformanceMetricsData metrics)
 28        {
 929            if (metrics == null)
 030                return currentQualityIndex;
 31
 32            //TODO refine this evaluation
 933            fpsEvaluations.Add(metrics.fpsCount);
 934            if (fpsEvaluations.Count <= EVALUATIONS_SIZE)
 535                return currentQualityIndex;
 36
 437            fpsEvaluations.RemoveAt(0);
 438            float average = fpsEvaluations.Average();
 39
 440            int newCurrentQualityIndex = currentQualityIndex;
 441            if (average <= FPSEvaluation.WORSE)
 242                newCurrentQualityIndex = Mathf.Max(0, currentQualityIndex - 1);
 43
 444            if (average >= FPSEvaluation.GREAT)
 145                newCurrentQualityIndex = Mathf.Min(qualitySettings.Length - 1, currentQualityIndex + 1);
 46
 447            if (newCurrentQualityIndex != currentQualityIndex)
 348                ResetEvaluation();
 49
 450            currentQualityIndex = newCurrentQualityIndex;
 451            return currentQualityIndex;
 52        }
 53
 10254        public void ResetEvaluation() { fpsEvaluations.Clear(); }
 55    }
 56}