< Summary

Class:FeatureFlag
Assembly:FeatureFlagData
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/FeatureFlags/Data/FeatureFlag.cs
Covered lines:16
Uncovered lines:6
Coverable lines:22
Total lines:75
Line coverage:72.7% (16 of 22)
Covered branches:0
Total branches:0
Covered methods:6
Total methods:7
Method coverage:85.7% (6 of 7)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FeatureFlag()0%110100%
SetAsInitialized()0%110100%
IsFeatureEnabled(...)0%4.594066.67%
GetFeatureFlagVariantPayload(...)0%550100%
ToString()0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/FeatureFlags/Data/FeatureFlag.cs

#LineLine coverage
 1using System.Collections.Generic;
 2
 3public class FeatureFlag
 4{
 11405    public readonly Dictionary<string, bool> flags  = new ();
 11406    public readonly Dictionary<string, FeatureFlagVariant> variants  = new ();
 7
 131338    public bool IsInitialized { get; private set; }
 9
 10    public void SetAsInitialized() =>
 3411        IsInitialized = true;
 12
 13        /// <summary>
 14    /// Will check if featureName contains variant to be checked.
 15    /// Supported formats: featureName, featureName:variantName
 16    /// </summary>
 17    /// <param name="featureNameLong"></param>
 18    /// <returns></returns>
 19    public bool IsFeatureEnabled(string featureNameLong)
 20    {
 497821        string[] splitFeatureName = featureNameLong.Split(':');
 497822        string featureName = splitFeatureName[0];
 23
 497824        if (splitFeatureName.Length > 1 && variants.TryGetValue(featureName, out var variant))
 25        {
 026            string variantName = splitFeatureName[^1];
 027            return variant.enabled && variant.name == variantName;
 28        }
 29
 497830        return flags.TryGetValue(featureName, out bool isEnabled) && isEnabled;
 31    }
 32
 33    public FeatureFlagVariantPayload GetFeatureFlagVariantPayload(string featureNameLong)
 34    {
 135        string[] splitFeatureName = featureNameLong.Split(':');
 136        string featureName = splitFeatureName[0];
 137        FeatureFlagVariantPayload payloadResult = null;
 38
 139        if (splitFeatureName.Length > 1 && variants.TryGetValue(featureName, out var variant))
 40        {
 141            string variantName = splitFeatureName[splitFeatureName.Length - 1];
 142            if (variant.enabled && variant.name == variantName)
 43            {
 144                payloadResult = variant.payload;
 45            }
 46        }
 47
 148        return payloadResult;
 49    }
 50
 51    public string ToString()
 52    {
 053        string result = "";
 54
 055        foreach ( var flag in flags )
 56        {
 057            result += $"{flag.Key}: {flag.Value}\n";
 58        }
 59
 060        return result;
 61    }
 62}
 63
 64public class FeatureFlagVariant
 65{
 66    public string name;
 67    public bool enabled;
 68    public FeatureFlagVariantPayload payload;
 69}
 70
 71public class FeatureFlagVariantPayload
 72{
 73    public string type;
 74    public string value;
 75}