45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
|
using System.IO;
|
||
|
using System.Linq;
|
||
|
using SourceGenerators1.Tests.Utils;
|
||
|
using Microsoft.CodeAnalysis.CSharp;
|
||
|
using Xunit;
|
||
|
|
||
|
namespace SourceGenerators1.Tests;
|
||
|
|
||
|
public class SampleSourceGeneratorTests
|
||
|
{
|
||
|
private const string DddRegistryText = @"User
|
||
|
Document
|
||
|
Customer";
|
||
|
|
||
|
[Fact]
|
||
|
public void GenerateClassesBasedOnDDDRegistry()
|
||
|
{
|
||
|
// Create an instance of the source generator.
|
||
|
var generator = new SampleSourceGenerator();
|
||
|
|
||
|
// Source generators should be tested using 'GeneratorDriver'.
|
||
|
var driver = CSharpGeneratorDriver.Create(new[] { generator },
|
||
|
new[]
|
||
|
{
|
||
|
// Add the additional file separately from the compilation.
|
||
|
new TestAdditionalFile("./DDD.UbiquitousLanguageRegistry.txt", DddRegistryText)
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// To run generators, we can use an empty compilation.
|
||
|
var compilation = CSharpCompilation.Create(nameof(SampleSourceGeneratorTests));
|
||
|
|
||
|
// Run generators. Don't forget to use the new compilation rather than the previous one.
|
||
|
driver.RunGeneratorsAndUpdateCompilation(compilation, out var newCompilation, out _);
|
||
|
|
||
|
// Retrieve all files in the compilation.
|
||
|
var generatedFiles = newCompilation.SyntaxTrees
|
||
|
.Select(t => Path.GetFileName(t.FilePath))
|
||
|
.ToArray();
|
||
|
|
||
|
// In this case, it is enough to check the file name.
|
||
|
Assert.Equivalent(new[] { "User.g.cs", "Document.g.cs", "Customer.g.cs" }, generatedFiles);
|
||
|
}
|
||
|
}
|