| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System;
- using System.ComponentModel;
- using Avalonia.Generators.Compiler;
- using Microsoft.CodeAnalysis;
- using Microsoft.CodeAnalysis.CSharp;
- using Avalonia.Generators.Tests.Views;
- using XamlX;
- using XamlX.Parsers;
- using Xunit;
- namespace Avalonia.Generators.Tests;
- public class MiniCompilerTests
- {
- private const string AvaloniaXaml = "<TextBlock xmlns='clr-namespace:Avalonia.Controls;assembly=Avalonia' />";
- private const string MiniClass = "namespace Example { public class Valid { public int Foo() => 21; } }";
- private const string MiniInvalidXaml = "<Invalid xmlns='clr-namespace:Example;assembly=Example' />";
- private const string MiniValidXaml = "<Valid xmlns='clr-namespace:Example;assembly=Example' />";
- [Fact]
- public void Should_Resolve_Types_From_Simple_Valid_Xaml_Markup()
- {
- var xaml = XDocumentXamlParser.Parse(MiniValidXaml);
- var compilation = CreateBasicCompilation(MiniClass);
- MiniCompiler.CreateDefault(new RoslynTypeSystem(compilation)).Transform(xaml);
- Assert.NotNull(xaml.Root);
- }
- [Fact]
- public void Should_Throw_When_Unable_To_Resolve_Types_From_Simple_Invalid_Markup()
- {
- var xaml = XDocumentXamlParser.Parse(MiniInvalidXaml);
- var compilation = CreateBasicCompilation(MiniClass);
- var compiler = MiniCompiler.CreateDefault(new RoslynTypeSystem(compilation));
- Assert.Throws<XamlParseException>(() => compiler.Transform(xaml));
- }
- [Fact]
- public void Should_Resolve_Types_From_Simple_Avalonia_Markup()
- {
- var xaml = XDocumentXamlParser.Parse(AvaloniaXaml);
- var compilation = View.CreateAvaloniaCompilation();
- MiniCompiler.CreateDefault(new RoslynTypeSystem(compilation)).Transform(xaml);
- Assert.NotNull(xaml.Root);
- }
- private static CSharpCompilation CreateBasicCompilation(string source) =>
- CSharpCompilation
- .Create("BasicLib", options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
- .AddReferences(MetadataReference.CreateFromFile(typeof(string).Assembly.Location))
- .AddReferences(MetadataReference.CreateFromFile(typeof(IServiceProvider).Assembly.Location))
- .AddReferences(MetadataReference.CreateFromFile(typeof(ITypeDescriptorContext).Assembly.Location))
- .AddReferences(MetadataReference.CreateFromFile(typeof(ISupportInitialize).Assembly.Location))
- .AddReferences(MetadataReference.CreateFromFile(typeof(TypeConverterAttribute).Assembly.Location))
- .AddSyntaxTrees(CSharpSyntaxTree.ParseText(source));
- }
|