< Summary

Class:FeatureFlag
Assembly:FeatureFlagData
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/FeatureFlags/Data/FeatureFlag.cs
Covered lines:8
Uncovered lines:14
Coverable lines:22
Total lines:73
Line coverage:36.3% (8 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FeatureFlag()0%110100%
IsFeatureEnabled(...)0%5.395075%
GetFeatureFlagVariantPayload(...)0%30500%
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{
 1915    public readonly Dictionary<string, bool> flags  = new Dictionary<string, bool>();
 1916    public readonly Dictionary<string, FeatureFlagVariant> variants  = new Dictionary<string, FeatureFlagVariant>();
 7
 8    /// <summary>
 9    /// Will check if featureName contains variant to be checked.
 10    /// Supported formats: featureName, featureName:variantName
 11    /// </summary>
 12    /// <param name="featureNameLong"></param>
 13    /// <returns></returns>
 14    public bool IsFeatureEnabled(string featureNameLong)
 15    {
 40716        string[] splitFeatureName = featureNameLong.Split(':');
 40717        string featureName = splitFeatureName[0];
 18
 40719        if (splitFeatureName.Length > 1 && variants.TryGetValue(featureName, out var variant))
 20        {
 021            string variantName = splitFeatureName[splitFeatureName.Length - 1];
 022            return variant.enabled && variant.name == variantName;
 23        }
 24
 40725        if (flags.ContainsKey(featureName))
 4526            return flags[featureName];
 27
 36228        return false;
 29    }
 30
 31    public FeatureFlagVariantPayload GetFeatureFlagVariantPayload(string featureNameLong)
 32    {
 033        string[] splitFeatureName = featureNameLong.Split(':');
 034        string featureName = splitFeatureName[0];
 035        FeatureFlagVariantPayload payloadResult = null;
 36
 037        if (splitFeatureName.Length > 1 && variants.TryGetValue(featureName, out var variant))
 38        {
 039            string variantName = splitFeatureName[splitFeatureName.Length - 1];
 040            if (variant.enabled && variant.name == variantName)
 41            {
 042                payloadResult = variant.payload;
 43            }
 44        }
 45
 046        return payloadResult;
 47    }
 48
 49    public string ToString()
 50    {
 051        string result = "";
 52
 053        foreach ( var flag in flags )
 54        {
 055            result += $"{flag.Key}: {flag.Value}\n";
 56        }
 57
 058        return result;
 59    }
 60}
 61
 62public class FeatureFlagVariant
 63{
 64    public string name;
 65    public bool enabled;
 66    public FeatureFlagVariantPayload payload;
 67}
 68
 69public class FeatureFlagVariantPayload
 70{
 71    public string type;
 72    public string value;
 73}