Browse Source

Added test that fails after resource refactor.

`Changing_Resource_In_Templated_Parent_Should_Affect_Templated_Child` now fails because resource changed messages no longer traverse into templated children.
pull/3957/head
Steven Kirk 6 years ago
parent
commit
21bddb1ced
  1. 63
      tests/Avalonia.Controls.UnitTests/Primitives/TemplatedControlTests.cs

63
tests/Avalonia.Controls.UnitTests/Primitives/TemplatedControlTests.cs

@ -10,6 +10,7 @@ using Avalonia.Styling;
using Avalonia.UnitTests;
using Avalonia.VisualTree;
using Xunit;
using Avalonia.Media;
namespace Avalonia.Controls.UnitTests.Primitives
{
@ -512,6 +513,68 @@ namespace Avalonia.Controls.UnitTests.Primitives
}
}
[Fact]
public void Templated_Child_Should_Find_Resource_In_TemplatedParent()
{
var target = new ContentControl
{
Resources =
{
{ "red", Brushes.Red },
},
Template = new FuncControlTemplate<ContentControl>((x, scope) =>
{
var result = new ContentPresenter
{
Name = "PART_ContentPresenter",
[!ContentPresenter.ContentProperty] = x[!ContentControl.ContentProperty],
}.RegisterInNameScope(scope);
result.Bind(ContentPresenter.BackgroundProperty, result.GetResourceObservable("red"));
return result;
}),
};
target.ApplyTemplate();
var contentPresenter = Assert.IsType<ContentPresenter>(target.GetVisualChildren().Single());
Assert.Same(Brushes.Red, contentPresenter.Background);
}
[Fact]
public void Changing_Resource_In_Templated_Parent_Should_Affect_Templated_Child()
{
var target = new ContentControl
{
Resources =
{
{ "red", Brushes.Red },
},
Template = new FuncControlTemplate<ContentControl>((x, scope) =>
{
var result = new ContentPresenter
{
Name = "PART_ContentPresenter",
[!ContentPresenter.ContentProperty] = x[!ContentControl.ContentProperty],
}.RegisterInNameScope(scope);
result.Bind(ContentPresenter.BackgroundProperty, result.GetResourceObservable("red"));
return result;
}),
};
target.ApplyTemplate();
var contentPresenter = Assert.IsType<ContentPresenter>(target.GetVisualChildren().Single());
Assert.Same(Brushes.Red, contentPresenter.Background);
target.Resources["red"] = Brushes.Green;
Assert.Same(Brushes.Green, contentPresenter.Background);
}
private static IControl ScrollingContentControlTemplate(ContentControl control, INameScope scope)
{
return new Border

Loading…
Cancel
Save