Refactor code structure for improved readability and maintainability; optimize performance in key functions.

This commit is contained in:
master
2025-12-22 19:06:31 +02:00
parent dfaa2079aa
commit 4602ccc3a3
1444 changed files with 109919 additions and 8058 deletions

View File

@@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CycloneDX.Models;
using StellaOps.Scanner.Emit.Spdx.Conversion;
using Xunit;
namespace StellaOps.Scanner.Emit.Tests.Composition;
public sealed class SpdxCycloneDxConversionTests
{
[Fact]
public void Converts_CycloneDx_To_Spdx()
{
var bom = BuildBom();
var spdx = SpdxCycloneDxConverter.FromCycloneDx(bom);
var packages = spdx.Elements.OfType<StellaOps.Scanner.Emit.Spdx.Models.SpdxPackage>().ToArray();
Assert.Equal(2, packages.Length);
Assert.Contains(packages, pkg => pkg.Name == "demo-app");
Assert.Contains(spdx.Relationships, rel => rel.Type == StellaOps.Scanner.Emit.Spdx.Models.SpdxRelationshipType.DependsOn);
}
[Fact]
public void Converts_Spdx_To_CycloneDx()
{
var bom = BuildBom();
var spdx = SpdxCycloneDxConverter.FromCycloneDx(bom);
var converted = SpdxCycloneDxConverter.ToCycloneDx(spdx);
Assert.NotNull(converted.Metadata);
Assert.NotNull(converted.Components);
Assert.Contains(converted.Components!, component => component.Name == "dependency");
}
private static Bom BuildBom()
{
var root = new Component
{
BomRef = "root",
Name = "demo-app",
Version = "1.0.0",
Type = Component.Classification.Application
};
var dependency = new Component
{
BomRef = "dep",
Name = "dependency",
Version = "2.0.0",
Type = Component.Classification.Library
};
return new Bom
{
SpecVersion = SpecificationVersion.v1_7,
Version = 1,
Metadata = new Metadata
{
Timestamp = new DateTime(2025, 10, 20, 0, 0, 0, DateTimeKind.Utc),
Component = root
},
Components = new List<Component> { dependency },
Dependencies = new List<Dependency>
{
new()
{
Ref = root.BomRef,
Dependencies = new List<Dependency> { new() { Ref = dependency.BomRef } }
}
}
};
}
}