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);
}
}
}
}