< Summary - Code Coverage

Information
Class: Plainquire.Sort.Newtonsoft.JsonConverters.EntitySortConverter
Assembly: Plainquire.Sort.Newtonsoft
File(s): /home/runner/work/plainquire/plainquire/Plainquire.Sort/Plainquire.Sort.Newtonsoft/JsonConverters/EntitySortConverter.cs
Tag: 64_13932151703
Line coverage
95%
Covered lines: 19
Uncovered lines: 1
Coverable lines: 20
Total lines: 51
Line coverage: 95%
Branch coverage
60%
Covered branches: 6
Total branches: 10
Branch coverage: 60%
Method coverage
100%
Covered methods: 3
Total methods: 3
Method coverage: 100%

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
CanConvert(...)100%22100%
ReadJson(...)50%66100%
WriteJson(...)50%2290.9%

File(s)

/home/runner/work/plainquire/plainquire/Plainquire.Sort/Plainquire.Sort.Newtonsoft/JsonConverters/EntitySortConverter.cs

#LineLine coverage
 1using Newtonsoft.Json;
 2using Plainquire.Sort.JsonConverters;
 3using System;
 4using System.Diagnostics.CodeAnalysis;
 5
 6namespace Plainquire.Sort.Newtonsoft.JsonConverters;
 7
 8/// <summary>
 9/// <see cref="EntitySort"/> specific JSON converter for Newtonsoft JSON.
 10/// Implements <see cref="JsonConverter" />
 11/// </summary>
 12/// <seealso cref="JsonConverter" />
 13public class EntitySortConverter : JsonConverter
 14{
 15    /// <inheritdoc />
 16    public override bool CanConvert(Type objectType)
 186317        => objectType.IsGenericEntitySort() || objectType == typeof(EntitySort);
 18
 19    /// <inheritdoc />
 20    public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer
 21    {
 10222        var entitySortInstance = Activator.CreateInstance(objectType)
 10223            ?? throw new InvalidOperationException($"Unable to create instance of type {objectType.Name}");
 24
 10225        var entitySort = (EntitySort)entitySortInstance;
 10226        var entitySortData = serializer.Deserialize<EntitySortConverterData>(reader) ?? new EntitySortConverterData();
 10227        var propertySorts = Sort.JsonConverters.EntitySortConverter.GetPropertySorts(entitySortData);
 28
 10229        entitySort.PropertySorts = propertySorts ?? [];
 10230        entitySort.Configuration = entitySortData.Configuration;
 10231        return entitySort;
 32    }
 33
 34    /// <inheritdoc />
 35    public override void WriteJson(JsonWriter writer, [NotNull] object? value, JsonSerializer serializer)
 36    {
 10237        if (value == null)
 038            throw new ArgumentNullException(nameof(value));
 39
 10240        var entitySort = (EntitySort)value;
 10241        var propertySortsData = Sort.JsonConverters.EntitySortConverter.GetPropertySortData(entitySort);
 42
 10243        var entitySortData = new EntitySortConverterData
 10244        {
 10245            PropertySorts = propertySortsData,
 10246            Configuration = entitySort.Configuration
 10247        };
 48
 10249        serializer.Serialize(writer, entitySortData);
 10250    }
 51}