< 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:73
Line coverage:72.7% (16 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%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{
 9005    public readonly Dictionary<string, bool> flags  = new Dictionary<string, bool>();
 9006    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    {
 310416        string[] splitFeatureName = featureNameLong.Split(':');
 310417        string featureName = splitFeatureName[0];
 18
 310419        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
 310425        if (flags.ContainsKey(featureName))
 19426            return flags[featureName];
 27
 291028        return false;
 29    }
 30
 31    public FeatureFlagVariantPayload GetFeatureFlagVariantPayload(string featureNameLong)
 32    {
 133        string[] splitFeatureName = featureNameLong.Split(':');
 134        string featureName = splitFeatureName[0];
 135        FeatureFlagVariantPayload payloadResult = null;
 36
 137        if (splitFeatureName.Length > 1 && variants.TryGetValue(featureName, out var variant))
 38        {
 139            string variantName = splitFeatureName[splitFeatureName.Length - 1];
 140            if (variant.enabled && variant.name == variantName)
 41            {
 142                payloadResult = variant.payload;
 43            }
 44        }
 45
 146        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}