< Summary

Information
Class: Chronicler.MemoryPackRecordEntryTable
Assembly: Chronicler
File(s): /home/runner/work/Chronicler/Chronicler/src/Chronicler/Serialization/MemoryPack/MemoryPackRecordEnvelope.cs
Line coverage
100%
Covered lines: 30
Uncovered lines: 0
Coverable lines: 30
Total lines: 156
Line coverage: 100%
Branch coverage
91%
Covered branches: 11
Total branches: 12
Branch coverage: 91.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%11100%
.ctor(...)50%22100%
.ctor(...)100%11100%
get_State()100%22100%
set_State(...)100%11100%
set_Item(...)100%11100%
Remove(...)100%11100%
ToEntryMap()100%22100%
TryGetValue(...)100%11100%
LoadState(...)100%66100%

File(s)

/home/runner/work/Chronicler/Chronicler/src/Chronicler/Serialization/MemoryPack/MemoryPackRecordEnvelope.cs

#LineLine coverage
 1using MemoryPack;
 2using System;
 3using System.Collections.Generic;
 4
 5namespace Chronicler;
 6
 7/// <summary>
 8/// Stores named field payloads for the MemoryPack chronicler transport.
 9/// </summary>
 10[MemoryPackable]
 11internal sealed partial class MemoryPackRecordEnvelope
 12{
 13    /// <summary>
 14    /// Serialized payloads keyed by record name.
 15    /// </summary>
 16    public MemoryPackRecordEntryTable? Entries { get; set; } = new();
 17
 18    internal static MemoryPackRecordEnvelope FromEntries(OrderedStringMap<byte[]?> entries)
 19    {
 20        return new MemoryPackRecordEnvelope
 21        {
 22            Entries = new MemoryPackRecordEntryTable(entries)
 23        };
 24    }
 25
 26    internal OrderedStringMap<byte[]?> ToEntryMap()
 27    {
 28        return Entries?.ToEntryMap() ?? new OrderedStringMap<byte[]?>(8, StringComparer.Ordinal);
 29    }
 30
 31    internal bool RemoveEntry(string name)
 32    {
 33        return Entries?.Remove(name) ?? false;
 34    }
 35
 36    internal void SetEntry(string name, byte[]? payload)
 37    {
 38        Entries ??= new MemoryPackRecordEntryTable();
 39        Entries[name] = payload;
 40    }
 41
 42    internal bool TryGetEntry(string name, out byte[]? payload)
 43    {
 44        if (Entries == null)
 45        {
 46            payload = null;
 47            return false;
 48        }
 49
 50        return Entries.TryGetValue(name, out payload);
 51    }
 52}
 53
 54/// <summary>
 55/// Stores ordered MemoryPack entry payloads while preserving the previous SwiftDictionary wire shape.
 56/// </summary>
 57[MemoryPackable]
 58internal sealed partial class MemoryPackRecordEntryTable
 59{
 60    private OrderedStringMap<byte[]?> _entries;
 61
 18662    public MemoryPackRecordEntryTable()
 63    {
 18664        _entries = new OrderedStringMap<byte[]?>(8, StringComparer.Ordinal);
 18665    }
 66
 4867    internal MemoryPackRecordEntryTable(OrderedStringMap<byte[]?> entries)
 68    {
 4869        _entries = entries ?? throw new ArgumentNullException(nameof(entries));
 4870    }
 71
 72    [MemoryPackConstructor]
 73    public MemoryPackRecordEntryTable(MemoryPackRecordEntryTableState state)
 6874        : this()
 75    {
 6876        LoadState(state);
 6877    }
 78
 79    /// <summary>
 80    /// Gets or sets the serializable table state.
 81    /// </summary>
 82    [MemoryPackInclude]
 83    public MemoryPackRecordEntryTableState State
 84    {
 85        get
 86        {
 6887            var items = new KeyValuePair<string, byte[]?>[_entries.Count];
 6888            int index = 0;
 89
 31090            foreach (KeyValuePair<string, byte[]?> entry in _entries)
 8791                items[index++] = entry;
 92
 6893            return new MemoryPackRecordEntryTableState(items);
 94        }
 195        internal set => LoadState(value);
 96    }
 97
 98    internal byte[]? this[string name]
 99    {
 9100        set => _entries[name] = value;
 101    }
 102
 103    internal bool Remove(string name)
 104    {
 10105        return _entries.Remove(name);
 106    }
 107
 108    internal OrderedStringMap<byte[]?> ToEntryMap()
 109    {
 47110        var entries = new OrderedStringMap<byte[]?>(_entries.Count, StringComparer.Ordinal);
 111
 198112        foreach (KeyValuePair<string, byte[]?> entry in _entries)
 52113            entries[entry.Key] = entry.Value;
 114
 47115        return entries;
 116    }
 117
 118    internal bool TryGetValue(string name, out byte[]? payload)
 119    {
 6120        return _entries.TryGetValue(name, out payload);
 121    }
 122
 123    private void LoadState(MemoryPackRecordEntryTableState state)
 124    {
 69125        KeyValuePair<string, byte[]?>[]? items = state.Items;
 69126        int capacity = items?.Length ?? 8;
 69127        var entries = new OrderedStringMap<byte[]?>(capacity, StringComparer.Ordinal);
 128
 69129        if (items != null)
 130        {
 292131            foreach (KeyValuePair<string, byte[]?> item in items)
 79132                entries[item.Key] = item.Value;
 133        }
 134
 69135        _entries = entries;
 69136    }
 137}
 138
 139/// <summary>
 140/// Represents the serializable state of a MemoryPack record entry table.
 141/// </summary>
 142[MemoryPackable]
 143internal readonly partial struct MemoryPackRecordEntryTableState
 144{
 145    /// <summary>
 146    /// Gets the ordered entry items.
 147    /// </summary>
 148    [MemoryPackInclude]
 149    public readonly KeyValuePair<string, byte[]?>[]? Items;
 150
 151    [MemoryPackConstructor]
 152    public MemoryPackRecordEntryTableState(KeyValuePair<string, byte[]?>[]? items)
 153    {
 154        Items = items;
 155    }
 156}