< Summary

Information
Class: Spdx3.Model.Dataset.Classes.DatasetPackage
Assembly: Spdx3
File(s): /home/runner/work/Spdx3/Spdx3/Spdx3/Model/Dataset/Classes/DatasetPackage.cs
Line coverage
84%
Covered lines: 28
Uncovered lines: 5
Coverable lines: 33
Total lines: 120
Line coverage: 84.8%
Branch coverage
70%
Covered branches: 7
Total branches: 10
Branch coverage: 70%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_AnonymizationMethodUsed()100%11100%
get_ConfidentialityLevel()100%11100%
get_DataAvailabilityType()100%11100%
get_DataCollectionProcess()100%11100%
get_DataPreprocessing()100%11100%
get_DatasetNoise()100%11100%
get_DatasetSize()100%11100%
set_DatasetSize(...)100%44100%
get_DatasetType()100%11100%
get_DatasetUpdateMechanism()100%11100%
get_HasSensitivePersonalInformation()100%11100%
get_IntendedUse()100%11100%
get_KnownBias()100%11100%
get_Sensor()100%11100%
.ctor()100%210%
.ctor(...)50%2271.42%
Validate()50%4475%

File(s)

/home/runner/work/Spdx3/Spdx3/Spdx3/Model/Dataset/Classes/DatasetPackage.cs

#LineLine coverage
 1using System.Diagnostics.CodeAnalysis;
 2using System.Text.Json.Serialization;
 3using Spdx3.Exceptions;
 4using Spdx3.Model.Core.Classes;
 5using Spdx3.Model.Core.Enums;
 6using Spdx3.Model.Dataset.Enums;
 7using Spdx3.Model.Software.Classes;
 8using Spdx3.Serialization;
 9using Spdx3.Utility;
 10
 11namespace Spdx3.Model.Dataset.Classes;
 12
 13/// <summary>
 14/// Specifies a data package and its associated information.
 15/// See https://spdx.github.io/spdx-spec/v3.0.1/model/Dataset/Classes/DatasetPackage/
 16/// </summary>
 17public class DatasetPackage : Package
 18{
 19    private int? _datasetSize;
 20
 21    [JsonPropertyName("dataset_anonymizationMethodUsed")]
 22    [JsonConverter(typeof(SpdxModelConverterFactory))]
 523    public IList<string> AnonymizationMethodUsed { get; set; } = new List<string>();
 24
 25    [JsonPropertyName("dataset_confidentialityLevel")]
 26    [JsonConverter(typeof(SpdxModelConverterFactory))]
 127    public ConfidentialityLevelType? ConfidentialityLevel { get; set; }
 28
 29    [JsonPropertyName("dataset_datasetAvailability")]
 30    [JsonConverter(typeof(SpdxModelConverterFactory))]
 131    public DataAvailabilityType? DataAvailabilityType { get; set; }
 32
 33    [JsonPropertyName("dataset_dataCollectionProcess")]
 34    [JsonConverter(typeof(SpdxModelConverterFactory))]
 135    public string? DataCollectionProcess { get; set; }
 36
 37    [JsonPropertyName("dataset_dataPreprocessing")]
 38    [JsonConverter(typeof(SpdxModelConverterFactory))]
 539    public IList<string> DataPreprocessing { get; set; } = new List<string>();
 40
 41    [JsonPropertyName("dataset_datasetNoise")]
 42    [JsonConverter(typeof(SpdxModelConverterFactory))]
 143    public string? DatasetNoise { get; set; }
 44
 45    [JsonPropertyName("dataset_datasetSize")]
 46    [JsonConverter(typeof(SpdxModelConverterFactory))]
 47    public int? DatasetSize
 48    {
 449        get => _datasetSize;
 50        set
 51        {
 52            switch (value)
 53            {
 54                case < 0:
 155                    throw new Spdx3Exception($"Value of {value} is not a positive non-zero integer",
 156                        new ArgumentOutOfRangeException(nameof(DatasetSize)));
 57                case null:
 158                    _datasetSize = null;
 159                    break;
 60                default:
 161                    _datasetSize = value;
 62                    break;
 63            }
 164        }
 65    }
 66
 67    [JsonPropertyName("dataset_datasetType")]
 68    [JsonConverter(typeof(SpdxModelConverterFactory))]
 1269    public IList<DatasetType> DatasetType { get; set; } = new List<DatasetType>();
 70
 71    [JsonPropertyName("dataset_datasetUpdateMechanism")]
 72    [JsonConverter(typeof(SpdxModelConverterFactory))]
 173    public string? DatasetUpdateMechanism { get; set; }
 74
 75    [JsonPropertyName("dataset_hasSensitivePersonalInformation")]
 76    [JsonConverter(typeof(SpdxModelConverterFactory))]
 177    public PresenceType? HasSensitivePersonalInformation { get; set; }
 78
 79    [JsonPropertyName("dataset_intendedUse")]
 80    [JsonConverter(typeof(SpdxModelConverterFactory))]
 181    public string? IntendedUse { get; set; }
 82
 83    [JsonPropertyName("dataset_knownBias")]
 84    [JsonConverter(typeof(SpdxModelConverterFactory))]
 185    public string? KnownBias { get; set; }
 86
 87    [JsonPropertyName("dataset_sensor")]
 88    [JsonConverter(typeof(SpdxModelConverterFactory))]
 589    public IList<DictionaryEntry> Sensor { get; set; } = new List<DictionaryEntry>();
 90
 91
 92    // protected internal no-parm constructor required for deserialization
 93    // ReSharper disable once UnusedMember.Global
 094    protected internal DatasetPackage()
 95    {
 096    }
 97
 98    [SetsRequiredMembers]
 399    public DatasetPackage(Catalog catalog, CreationInfo creationInfo, IList<DatasetType> datasetTypes) : base(catalog,
 3100        creationInfo)
 101    {
 3102        if (datasetTypes.Count == 0)
 103        {
 0104            throw new ArgumentException(
 0105                $"{nameof(datasetTypes)} list needs to contain at least one dataset type value");
 106        }
 3107        DatasetType = new List<DatasetType>();
 6108        datasetTypes.ToList().ForEach(ds => DatasetType.Add(ds));
 3109    }
 110
 111    public override void Validate()
 112    {
 1113        base.Validate();
 114
 1115        if (DatasetType?.Count == 0)
 116        {
 0117            throw new Spdx3ValidationException(this, nameof(DatasetType), "List is empty");
 118        }
 1119    }
 120}