using System; using System.Collections.Generic; using Avalonia.Animation; using Avalonia.Base.UnitTests.Animation; using Avalonia.Controls; using Avalonia.Controls.Templates; using Avalonia.Data; using Avalonia.PropertyStore; using Avalonia.Styling; using Avalonia.UnitTests; using Moq; using Xunit; namespace Avalonia.Base.UnitTests.Styling { public class StyleTests : ScopedTestBase { [Fact] public void Style_With_Only_Type_Selector_Should_Update_Value() { Style style = new Style(x => x.OfType()) { Setters = { new Setter(Class1.FooProperty, "Foo"), }, }; var target = new Class1(); StyleHelpers.TryAttach(style, target); Assert.Equal("Foo", target.Foo); } [Fact] public void Style_With_Class_Selector_Should_Update_And_Restore_Value() { Style style = new Style(x => x.OfType().Class("foo")) { Setters = { new Setter(Class1.FooProperty, "Foo"), }, }; var target = new Class1(); StyleHelpers.TryAttach(style, target); Assert.Equal("foodefault", target.Foo); target.Classes.Add("foo"); Assert.Equal("Foo", target.Foo); target.Classes.Remove("foo"); Assert.Equal("foodefault", target.Foo); } [Fact] public void Style_With_No_Selector_Should_Apply_To_Containing_Control() { Style style = new Style { Setters = { new Setter(Class1.FooProperty, "Foo"), }, }; var target = new Class1(); StyleHelpers.TryAttach(style, target); Assert.Equal("Foo", target.Foo); } [Fact] public void Should_Throw_For_Selector_With_Trailing_Template_Selector() { Assert.Throws(() => new Style(x => x.OfType