< Summary

Information
Class: Fluorite.Extensions.DictionaryExtensions
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Extensions/DictionaryExtensions.cs
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 34
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MergeLeft(...)100%44100%
ToReadOnly(...)100%11100%

File(s)

/builds/fluorite/strainer/src/Strainer/Extensions/DictionaryExtensions.cs

#LineLine coverage
 1using System.Collections.ObjectModel;
 2
 3namespace Fluorite.Extensions;
 4
 5public static class DictionaryExtensions
 6{
 7    public static Dictionary<TKey, TValue> MergeLeft<TKey, TValue>(
 8        this IReadOnlyDictionary<TKey, TValue> source,
 9        params IReadOnlyDictionary<TKey, TValue>[] others)
 10    {
 111        Guard.Against.Null(source);
 112        Guard.Against.Null(others);
 13
 114        var resultDictionary = new Dictionary<TKey, TValue>();
 15
 616        foreach (var dictionary in new[] { source }.Concat(others))
 17        {
 818            foreach (var pair in dictionary)
 19            {
 220                resultDictionary[pair.Key] = pair.Value;
 21            }
 22        }
 23
 124        return resultDictionary;
 25    }
 26
 27    public static ReadOnlyDictionary<TKey, TValue> ToReadOnly<TKey, TValue>(
 28        this IDictionary<TKey, TValue> source)
 29    {
 3530        Guard.Against.Null(source);
 31
 3532        return new ReadOnlyDictionary<TKey, TValue>(source);
 33    }
 34}