< Summary

Information
Class: Spdx3.Serialization.Reader
Assembly: Spdx3
File(s): /home/runner/work/Spdx3/Spdx3/Spdx3/Serialization/Reader.cs
Line coverage
95%
Covered lines: 19
Uncovered lines: 1
Coverable lines: 20
Total lines: 63
Line coverage: 95%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Options()100%11100%
.ctor(...)100%11100%
ReadFileName(...)100%11100%
ReadFileStream(...)100%11100%
ReadString(...)75%4483.33%

File(s)

/home/runner/work/Spdx3/Spdx3/Spdx3/Serialization/Reader.cs

#LineLine coverage
 1using System.Text.Json;
 2using Spdx3.Exceptions;
 3using Spdx3.Model.Core.Classes;
 4using Spdx3.Utility;
 5
 6namespace Spdx3.Serialization;
 7
 8public class Reader
 9{
 10    /// <summary>
 11    ///     The catalog we're writing out
 12    /// </summary>
 13    private readonly Catalog _catalog;
 14
 15    /// <summary>
 16    ///     Serialization options
 17    /// </summary>
 2818    private JsonSerializerOptions Options { get; } = new()
 719    {
 720        WriteIndented = false,
 721        MaxDepth = 99
 722    };
 23
 24    /// <summary>
 25    ///     Constructor
 26    /// </summary>
 27    /// <param name="catalog">The catalog of objects to write</param>
 728    public Reader(Catalog catalog)
 29    {
 730        _catalog = catalog;
 731        Options.Converters.Add(new SpdxModelConverterFactory());
 732        Options.Converters.Add(new SpdxWrapperConverterFactory());
 733    }
 34
 35    public SpdxDocument ReadFileName(string fileName)
 36    {
 137        var fileStream = new FileStream(fileName, FileMode.Open);
 138        return ReadFileStream(fileStream);
 39    }
 40
 41    public SpdxDocument ReadFileStream(FileStream fileStream)
 42    {
 143        var json = new StreamReader(fileStream).ReadToEnd();
 144        return ReadString(json);
 45    }
 46
 47    public SpdxDocument ReadString(string json)
 48    {
 749        var fileWithWrapper = JsonSerializer.Deserialize<SpdxWrapper>(json, Options);
 50
 251        if (fileWithWrapper == null)
 52        {
 053            throw new Spdx3SerializationException("Could not deserialize JSON in expected format.");
 54        }
 55
 11456        foreach (var entry in fileWithWrapper.Graph)
 57        {
 5558            _catalog.Items[entry.SpdxId] = entry;
 59        }
 60
 261        return _catalog.GetModel();
 62    }
 63}