< Summary

Information
Class: SwiftCollections.SwiftStateJsonConverter<T1, T2>
Assembly: SwiftCollections
File(s): /home/runner/work/SwiftCollections/SwiftCollections/src/SwiftCollections/Serialization/SwiftStateJsonConverter.cs
Line coverage
100%
Covered lines: 28
Uncovered lines: 0
Coverable lines: 28
Total lines: 54
Line coverage: 100%
Branch coverage
90%
Covered branches: 9
Total branches: 10
Branch coverage: 90%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Read(...)90%1010100%
Write(...)100%11100%

File(s)

/home/runner/work/SwiftCollections/SwiftCollections/src/SwiftCollections/Serialization/SwiftStateJsonConverter.cs

#LineLine coverage
 1using System;
 2using System.Text.Json;
 3using System.Text.Json.Serialization;
 4
 5namespace SwiftCollections;
 6
 7public sealed class SwiftStateJsonConverter<TCollection, TState> : JsonConverter<TCollection> where TCollection : class
 8{
 9    private readonly Func<TState, TCollection> _factory;
 10    private readonly Func<TCollection, TState> _stateGetter;
 11
 3312    public SwiftStateJsonConverter(
 3313        Func<TState, TCollection> factory,
 3314        Func<TCollection, TState> stateGetter)
 3315    {
 3316        _factory = factory;
 3317        _stateGetter = stateGetter;
 3318    }
 19
 20    public override TCollection Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
 4221    {
 4222        if (reader.TokenType != JsonTokenType.StartObject)
 123            throw new JsonException();
 24
 4125        reader.Read();
 26
 4127        if (reader.TokenType != JsonTokenType.PropertyName)
 128            throw new JsonException();
 29
 4030        if (!reader.ValueTextEquals("State"))
 131            throw new JsonException();
 32
 3933        reader.Read();
 34
 3935        var state = JsonSerializer.Deserialize<TState>(ref reader, options);
 36
 3937        if (!reader.Read() || reader.TokenType != JsonTokenType.EndObject)
 138            throw new JsonException();
 39
 3840        return _factory(state);
 3841    }
 42
 43    public override void Write(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options)
 3944    {
 3945        writer.WriteStartObject();
 46
 3947        var state = _stateGetter(value);
 48
 3949        writer.WritePropertyName("State");
 3950        JsonSerializer.Serialize(writer, state, options);
 51
 3952        writer.WriteEndObject();
 3953    }
 54}