< Summary

Information
Class: Spdx3.Model.Core.Classes.Relationship
Assembly: Spdx3
File(s): /home/runner/work/Spdx3/Spdx3/Spdx3/Model/Core/Classes/Relationship.cs
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 78
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Completeness()100%11100%
get_EndTime()100%11100%
get_From()100%11100%
get_RelationshipType()100%11100%
get_StartTime()100%11100%
get_To()100%11100%
.ctor()100%11100%
.ctor(...)100%11100%
Accept(...)100%11100%
Validate()100%22100%

File(s)

/home/runner/work/Spdx3/Spdx3/Spdx3/Model/Core/Classes/Relationship.cs

#LineLine coverage
 1using System.Diagnostics.CodeAnalysis;
 2using System.Text.Json.Serialization;
 3using Spdx3.Exceptions;
 4using Spdx3.Model.Core.Enums;
 5using Spdx3.Model.Lite;
 6using Spdx3.Serialization;
 7using Spdx3.Utility;
 8
 9namespace Spdx3.Model.Core.Classes;
 10
 11/// <summary>
 12///     Describes a relationship between one or more elements.
 13///     See https://spdx.github.io/spdx-spec/v3.0.1/model/Core/Classes/Relationship/
 14/// </summary>
 15public class Relationship : Element, ILiteDomainCompliantElement
 16{
 17    [JsonPropertyName("completeness")]
 18    [JsonConverter(typeof(SpdxModelConverterFactory))]
 4919    public RelationshipCompleteness? Completeness { get; set; }
 20
 21    [JsonPropertyName("endTime")]
 22    [JsonConverter(typeof(SpdxModelConverterFactory))]
 4523    public DateTimeOffset? EndTime { get; set; }
 24
 25    [JsonPropertyName("from")]
 26    [JsonConverter(typeof(SpdxModelConverterFactory))]
 37927    public required Element From { get; set; }
 28
 29    [JsonPropertyName("relationshipType")]
 30    [JsonConverter(typeof(SpdxModelConverterFactory))]
 23331    public required RelationshipType RelationshipType { get; set; }
 32
 33    [JsonPropertyName("startTime")]
 34    [JsonConverter(typeof(SpdxModelConverterFactory))]
 4535    public DateTimeOffset? StartTime { get; set; }
 36
 37    [JsonPropertyName("to")]
 38    [JsonConverter(typeof(SpdxModelConverterFactory))]
 41739    public IList<Element> To { get; set; } = new List<Element>();
 40
 41    // protected internal no-parm constructor required for deserialization
 42    // ReSharper disable once MemberCanBeProtected.Global
 3543    protected internal Relationship()
 44    {
 3545    }
 46
 47
 48    /// <summary>
 49    ///     Describes a relationship between one or more elements.
 50    ///     See https://spdx.github.io/spdx-spec/v3.0.1/model/Core/Classes/Relationship/
 51    /// </summary>
 52    [method: SetsRequiredMembers]
 53    public Relationship(Catalog catalog, CreationInfo creationInfo, RelationshipType relationshipType, Element from,
 7854        List<Element> to) : base(catalog, creationInfo)
 55    {
 7856        From = from;
 7857        To = to;
 7858        RelationshipType = relationshipType;
 7859    }
 60
 61    public void Accept(ILiteDomainComplianceVisitor visitor)
 62    {
 463        visitor.Visit(this);
 464    }
 65
 66    public override void Validate()
 67    {
 3968        base.Validate();
 3769        ValidateRequiredProperty(nameof(From));
 70
 3671        if (To.Count == 0)
 72        {
 173            throw new Spdx3ValidationException(this, nameof(To), "Cannot be empty");
 74        }
 75
 3576        ValidateRequiredProperty(nameof(RelationshipType));
 3577    }
 78}