Browse Source

Add tests for #12620.

One failing.
pull/12630/head
Steven Kirk 3 years ago
parent
commit
b024bb463b
  1. 99
      tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs

99
tests/Avalonia.Controls.UnitTests/ItemsControlTests.cs

@ -14,6 +14,7 @@ using Avalonia.Input;
using Avalonia.Layout; using Avalonia.Layout;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Avalonia.Markup.Xaml.Templates; using Avalonia.Markup.Xaml.Templates;
using Avalonia.Media;
using Avalonia.Styling; using Avalonia.Styling;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Avalonia.VisualTree; using Avalonia.VisualTree;
@ -128,6 +129,102 @@ namespace Avalonia.Controls.UnitTests
Assert.Same(container.Theme, theme); Assert.Same(container.Theme, theme);
} }
[Fact]
public void ItemContainerTheme_Can_Be_Changed()
{
using var app = Start();
var theme1 = new ControlTheme
{
TargetType = typeof(ContentPresenter),
Setters = { new Setter(ContentPresenter.BackgroundProperty, Brushes.Red) }
};
var theme2 = new ControlTheme
{
TargetType = typeof(ContentPresenter),
Setters = { new Setter(ContentPresenter.BackgroundProperty, Brushes.Green) }
};
var target = CreateTarget(
itemsSource: new[] { "Foo" },
itemContainerTheme: theme1);
var container = GetContainer(target);
Assert.Same(container.Theme, theme1);
Assert.Equal(container.Background, Brushes.Red);
target.ItemContainerTheme = theme2;
container = GetContainer(target);
Assert.Same(container.Theme, theme2);
Assert.Equal(container.Background, Brushes.Green);
}
[Fact]
public void ItemContainerTheme_Can_Be_Changed_Virtualizing()
{
using var app = Start();
var theme1 = new ControlTheme
{
TargetType = typeof(ContentPresenter),
Setters = { new Setter(ContentPresenter.BackgroundProperty, Brushes.Red) }
};
var theme2 = new ControlTheme
{
TargetType = typeof(ContentPresenter),
Setters = { new Setter(ContentPresenter.BackgroundProperty, Brushes.Green) }
};
var itemsPanel = new FuncTemplate<Panel?>(() => new VirtualizingStackPanel());
var target = CreateTarget(
itemsSource: new[] { "Foo" },
itemContainerTheme: theme1,
itemsPanel: itemsPanel);
var container = GetContainer(target);
Assert.Same(container.Theme, theme1);
Assert.Equal(container.Background, Brushes.Red);
target.ItemContainerTheme = theme2;
Layout(target);
container = GetContainer(target);
Assert.Same(container.Theme, theme2);
Assert.Equal(container.Background, Brushes.Green);
}
[Fact]
public void ItemContainerTheme_Can_Be_Cleared()
{
using var app = Start();
var theme = new ControlTheme
{
TargetType = typeof(ContentPresenter),
Setters = { new Setter(ContentPresenter.BackgroundProperty, Brushes.Red) }
};
var target = CreateTarget(
itemsSource: new[] { "Foo" },
itemContainerTheme: theme);
var container = GetContainer(target);
Assert.Same(container.Theme, theme);
Assert.Equal(container.Background, Brushes.Red);
target.ItemContainerTheme = null;
container = GetContainer(target);
Assert.Null(container.Theme);
Assert.Null(container.Background);
}
[Fact] [Fact]
public void Container_Should_Have_LogicalParent_Set_To_ItemsControl() public void Container_Should_Have_LogicalParent_Set_To_ItemsControl()
{ {
@ -851,6 +948,7 @@ namespace Avalonia.Controls.UnitTests
IList? itemsSource = null, IList? itemsSource = null,
ControlTheme? itemContainerTheme = null, ControlTheme? itemContainerTheme = null,
IDataTemplate? itemTemplate = null, IDataTemplate? itemTemplate = null,
ITemplate<Panel?>? itemsPanel = null,
IEnumerable<IDataTemplate>? dataTemplates = null, IEnumerable<IDataTemplate>? dataTemplates = null,
bool performLayout = true) bool performLayout = true)
{ {
@ -861,6 +959,7 @@ namespace Avalonia.Controls.UnitTests
itemsSource: itemsSource, itemsSource: itemsSource,
itemContainerTheme: itemContainerTheme, itemContainerTheme: itemContainerTheme,
itemTemplate: itemTemplate, itemTemplate: itemTemplate,
itemsPanel: itemsPanel,
dataTemplates: dataTemplates, dataTemplates: dataTemplates,
performLayout: performLayout); performLayout: performLayout);
} }

Loading…
Cancel
Save