NodePipeline/NodePipeline.Engine.Tests/CodeGeneratorTests/NodeModelBuilderTests.cs
2026-01-02 20:55:25 +03:00

62 lines
2.0 KiB
C#

using System.Collections.Immutable;
using NodePipeline.Engine.CodeGeneration.Abstractions;
using NodePipeline.Engine.Tests.CodeGeneratorTests.Fixtures;
using NodePipeline.Engine.Tests.CodeGeneratorTests.Fixtures.MockNodes;
namespace NodePipeline.Engine.Tests.CodeGeneratorTests;
public class NodeModelBuilderTests
{
private static readonly string SourceDir = Path.Combine(AppContext.BaseDirectory, "..", "..", "..",
"CodeGeneratorTests", "Fixtures", "MockNodes");
//node type name short sanitized must not contain "global::"
[Fact]
public void ModelContainsNode()
{
var fullTypeName = typeof(SimpleNamedNode).FullName!;
// Arrange
var symbol = RoslynTestHelpers.GetNamedTypeSymbolFromSource(fullTypeName, SourceDir);
// Act
var (model, _) = NodeModelBuilder.Build(ImmutableArray.Create(symbol));
// Assert
var node = model.Nodes.FirstOrDefault(n => n.Type == "NamedNode");
Assert.NotNull(node);
Assert.Equal("NamedNode", node.Type);
Assert.True(node.HasParameterlessConstructor);
}
[Fact]
public void ModelContainsNodeWithoutParameterlessConstructor()
{
// Arrange
var fullTypeName = typeof(NodeWithoutParameterlessConstructor).FullName!;
var symbol = RoslynTestHelpers.GetNamedTypeSymbolFromSource(fullTypeName, SourceDir);
// Act
var (model, _) = NodeModelBuilder.Build(ImmutableArray.Create(symbol));
// Assert
var node = model.Nodes.FirstOrDefault(n => n.TypeNameShort.Contains("NodeWithoutParameterlessConstructor"));
Assert.NotNull(node);
Assert.False(node.HasParameterlessConstructor);
}
/*
[Fact]
public void ModelNotContainNode()
{
// Arrange
var symbol = RoslynTestHelpers.GetNamedTypeSymbolFromSource(typeof(NotImplementedINode).FullName, _sourceDir);
// Act
var model = NodeModelBuilder.Build(ImmutableArray.Create(symbol));
// Assert
Assert.Empty(model.Nodes);
}
*/
}