public void AddJsonMergePatch_AddsExtensionMethod() { // Create the 'input' compilation that the generator will act on Compilation inputCompilation = CreateCompilation(@" namespace TestCode1 { public class Dto { public int Property { get; set; } } public class Program { public void SomeMethod(LaDeak.JsonMergePatch.Abstractions.Patch<Dto> data) { } } } "); var commonGenerator = new JsonMergePatchSourceGenerator(); var sut = new AspNetJsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(commonGenerator, sut); driver = driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); Assert.True(diagnostics.IsEmpty); GeneratorDriverRunResult runResult = driver.GetRunResult(); GeneratorRunResult testedGenerator = runResult.Results[1]; Assert.Single(testedGenerator.GeneratedSources); Assert.Empty(testedGenerator.Diagnostics); }
public void MultiplePatchType_ExtensionAndTypeAddedToSource() { Compilation inputCompilation = CreateCompilation(@" namespace TestCode2 { public class Dto0 { public double Property { get; set; } } public class Dto1 { public Dto0 Property { get; set; } } public class Program { public void SomeMethod(LaDeak.JsonMergePatch.Abstractions.Patch<Dto0> data) { } public void SomeMethod(LaDeak.JsonMergePatch.Abstractions.Patch<Dto1> data) { } } } "); JsonMergePatchSourceGenerator generator = new JsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(generator); driver = driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); Assert.True(diagnostics.IsEmpty); Assert.True(outputCompilation.SyntaxTrees.Count() == 4); Assert.True(outputCompilation.GetDiagnostics().IsEmpty); GeneratorDriverRunResult runResult = driver.GetRunResult(); Assert.Equal(3, runResult.GeneratedTrees.Length); Assert.Empty(runResult.Diagnostics); }
public void DefaultRecordType_ExtensionAndTypeAddedToSource() { // Create the 'input' compilation that the generator will act on Compilation inputCompilation = CreateCompilation(@" namespace TestCode1 { public record Dto(int Property0, string Property1); public class Program { public void SomeMethod(LaDeak.JsonMergePatch.Abstractions.Patch<Dto> data) { } } } "); JsonMergePatchSourceGenerator generator = new JsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(generator); driver = driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); Assert.True(diagnostics.IsEmpty); Assert.True(outputCompilation.SyntaxTrees.Count() == 3); Assert.True(outputCompilation.GetDiagnostics().IsEmpty); GeneratorDriverRunResult runResult = driver.GetRunResult(); Assert.Equal(2, runResult.GeneratedTrees.Length); Assert.Empty(runResult.Diagnostics); }
private static Compilation CreateWrappedTypeCompilation(string source) { Compilation inputCompilation = CreateCompilation(source); JsonMergePatchSourceGenerator generator = new JsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(generator); driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); return(outputCompilation); }
private static Compilation CreateInputOutputCompilation(string sourceCode) { Compilation inputCompilation = SourceBuilder.Compile(sourceCode).Compilation; JsonMergePatchSourceGenerator generator = new JsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(generator); driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); return(outputCompilation); }
private static (Compilation Input, Compilation Output) CreateInputOutputCompilation() { Compilation inputCompilation = CreateCompilation(@" namespace TestCode { public class Dto1 { public System.Int32 NumberProp { get; set; } } public class Dto2 { public System.String Property { get; set; } public Dto1 OtherDto { get; set; } } public class Program2 { public void SomeMethod2(LaDeak.JsonMergePatch.Abstractions.Patch<Dto2> data) { } } } "); JsonMergePatchSourceGenerator generator = new JsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(generator); driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); return(inputCompilation, outputCompilation); }
public void DtoWithProperties_WrapperTypeAddedToSource() { Compilation inputCompilation = CreateCompilation(@" namespace TestCode3 { public class Dto4 { public System.String Property { get; set; } } public class Program2 { public void SomeMethod2(LaDeak.JsonMergePatch.Abstractions.Patch<Dto4> data) { } } } "); JsonMergePatchSourceGenerator generator = new JsonMergePatchSourceGenerator(); GeneratorDriver driver = CSharpGeneratorDriver.Create(generator); driver = driver.RunGeneratorsAndUpdateCompilation(inputCompilation, out var outputCompilation, out var diagnostics); Assert.True(diagnostics.IsEmpty); Assert.True(outputCompilation.SyntaxTrees.Count() == 3); Assert.True(outputCompilation.GetDiagnostics().IsEmpty); }
public void CreatingGenerator_DoesNotThrow() { _ = new JsonMergePatchSourceGenerator(); }