public async Task Should_Generate_FindControl_Refs_From_Avalonia_Markup_File( string expectation, string markup, bool devToolsMode) { var excluded = devToolsMode ? null : "Avalonia.Diagnostics"; var compilation = View.CreateAvaloniaCompilation(excluded) .WithCustomTextBox(); var types = new RoslynTypeSystem(compilation); var classResolver = new XamlXViewResolver( types, MiniCompiler.CreateDefault( new RoslynTypeSystem(compilation), MiniCompiler.AvaloniaXmlnsDefinitionAttribute)); var xaml = await View.Load(markup); var classInfo = classResolver.ResolveView(xaml); var nameResolver = new XamlXNameResolver(); var names = nameResolver.ResolveNames(classInfo.Xaml); var generator = new InitializeComponentCodeGenerator(types); var code = generator .GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names) .Replace("\r", string.Empty); var expected = await InitializeComponentCode.Load(expectation); CSharpSyntaxTree.ParseText(code); Assert.Equal(expected.Replace("\r", string.Empty), code); }
private static IReadOnlyList <ResolvedName> ResolveNames(string xaml) { var compilation = View.CreateAvaloniaCompilation() .WithCustomTextBox(); var classResolver = new XamlXViewResolver( new RoslynTypeSystem(compilation), MiniCompiler.CreateDefault( new RoslynTypeSystem(compilation), MiniCompiler.AvaloniaXmlnsDefinitionAttribute)); var classInfo = classResolver.ResolveView(xaml); var nameResolver = new XamlXNameResolver(); return(nameResolver.ResolveNames(classInfo.Xaml)); }