解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
大石头 authored at 2018-05-15 21:21:05
1.46 KiB
X
using Microsoft.CodeAnalysis;
using Xunit;

namespace XUnitTest.SourceGenerator;

public class GeneratorTestHostTests
{
    [Fact(DisplayName = "测试宿主_驱动生成器并产出生成文件")]
    public void Run_GeneratesSource()
    {
        var (_, result) = GeneratorTestHost.Run(new SampleGenerator(), "class A { }");

        var sources = GeneratorTestHost.GetGeneratedSources(result);
        Assert.True(sources.ContainsKey("SampleGenerated.g.cs"));
        Assert.Contains("SampleGenerated", sources["SampleGenerated.g.cs"]);
    }

    [Fact(DisplayName = "测试宿主_生成代码参与编译且无错误")]
    public void Run_GeneratedCodeIsCompiled()
    {
        // 主源码引用生成类型,验证生成物参与编译
        var (compilation, result) = GeneratorTestHost.Run(new SampleGenerator(), "class A { public String V => SampleGenerated.Value; }");

        var errors = compilation.GetDiagnostics().Where(e => e.Severity == DiagnosticSeverity.Error).ToArray();
        Assert.Empty(errors);
        Assert.Single(GeneratorTestHost.GetGeneratedSources(result));
    }

    private sealed class SampleGenerator : IIncrementalGenerator
    {
        public void Initialize(IncrementalGeneratorInitializationContext context)
        {
            context.RegisterPostInitializationOutput(static ctx =>
                ctx.AddSource("SampleGenerated.g.cs", "public static class SampleGenerated { public const String Value = \"ok\"; }"));
        }
    }
}