< Summary

Information
Class: Hertzole.ScriptableValues.Generator.ArrayDictionaryBuilder<T1, T2>
Assembly: Hertzole.ScriptableValues.Generator
File(s): Generator/Hertzole.ScriptableValues.Generator/Helpers/ArrayDictionaryBuilder.cs
Tag: 52_28197466029
Line coverage
0%
Covered lines: 0
Uncovered lines: 13
Coverable lines: 13
Total lines: 42
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)100%110%
Add(...)0%220%
ToImmutable()0%220%

File(s)

Generator/Hertzole.ScriptableValues.Generator/Helpers/ArrayDictionaryBuilder.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Collections.Immutable;
 3
 4namespace Hertzole.ScriptableValues.Generator;
 5
 6internal readonly ref struct ArrayDictionaryBuilder<TKey, TValue> where TKey : notnull
 7{
 8    private readonly IEqualityComparer<TKey> comparer;
 9    private readonly Dictionary<TKey, ArrayBuilder<TValue>> builders;
 10
 11    public ArrayDictionaryBuilder(IEqualityComparer<TKey> comparer)
 12    {
 013        this.comparer = comparer;
 014        builders = new Dictionary<TKey, ArrayBuilder<TValue>>(comparer);
 015    }
 16
 17    public void Add(TKey key, TValue value)
 18    {
 019        if (builders.TryGetValue(key, out ArrayBuilder<TValue> array))
 20        {
 021            array.Add(value);
 22        }
 23        else
 24        {
 025            ArrayBuilder<TValue> builder = new ArrayBuilder<TValue>();
 026            builder.Add(value);
 027            builders.Add(key, builder);
 28        }
 029    }
 30
 31    public ImmutableDictionary<TKey, ImmutableArray<TValue>> ToImmutable()
 32    {
 033        ImmutableDictionary<TKey, ImmutableArray<TValue>>.Builder builder = ImmutableDictionary.CreateBuilder<TKey, Immu
 34
 035        foreach (KeyValuePair<TKey, ArrayBuilder<TValue>> pair in builders)
 36        {
 037            builder.Add(pair.Key, pair.Value.ToImmutable());
 38        }
 39
 040        return builder.ToImmutable();
 41    }
 42}