using System; using System.Collections.Generic; using Avalonia.Controls; using Avalonia.Media; using Avalonia.UnitTests; using Xunit; namespace Avalonia.Markup.Xaml.UnitTests.MakrupExtensions { public class ResourceIncludeTests : XamlTestBase { public class StaticResourceExtensionTests : XamlTestBase { [Fact] public void ResourceInclude_Loads_ResourceDictionary() { var includeXaml = @" #ff506070 "; using (StartWithResources(("test:include.xaml", includeXaml))) { var xaml = @" "; var userControl = (UserControl)AvaloniaRuntimeXamlLoader.Load(xaml); var border = userControl.FindControl("border"); var brush = (SolidColorBrush)border.Background; Assert.Equal(0xff506070, brush.Color.ToUint32()); } } [Fact] public void Missing_ResourceKey_In_ResourceInclude_Does_Not_Cause_StackOverflow() { var styleXaml = @" "; using (StartWithResources(("test:style.xaml", styleXaml))) { var xaml = @" "; var app = Application.Current; try { AvaloniaRuntimeXamlLoader.Load(xaml, null, app); } catch (KeyNotFoundException) { } } } private IDisposable StartWithResources(params (string, string)[] assets) { var assetLoader = new MockAssetLoader(assets); var services = new TestServices(assetLoader: assetLoader); return UnitTestApplication.Start(services); } } } }