using System.Linq; using System.Threading.Tasks; using Avalonia.Controls; using Avalonia.Diagnostics; using Avalonia.Styling; using Avalonia.VisualTree; using Moq; using Xunit; namespace Avalonia.Base.UnitTests.Styling { public class SelectorTests_Template { [Fact] public void Control_In_Template_Is_Matched_With_Template_Selector() { var target = new Mock(); var templatedControl = target.As(); var styleable = target.As(); BuildVisualTree(target); var border = (Border)target.Object.GetVisualChildren().Single(); var selector = default(Selector) .OfType(target.Object.GetType()) .Template() .OfType(); Assert.Equal(SelectorMatchResult.AlwaysThisInstance, selector.Match(border).Result); } [Fact] public void Control_Not_In_Template_Is_Not_Matched_With_Template_Selector() { var target = new Mock(); var templatedControl = target.As(); var styleable = target.As(); BuildVisualTree(target); var border = (Border)target.Object.GetVisualChildren().Single(); border.SetValue(Control.TemplatedParentProperty, null); var selector = default(Selector) .OfType(target.Object.GetType()) .Template() .OfType(); Assert.Equal(SelectorMatchResult.NeverThisInstance, selector.Match(border).Result); } [Fact] public void Control_In_Template_Of_Wrong_Type_Is_Not_Matched_With_Template_Selector() { var target = new Mock(); var templatedControl = target.As(); var styleable = target.As(); BuildVisualTree(target); var border = (Border)target.Object.GetVisualChildren().Single(); var selector = default(Selector) .OfType