From e7de0aeb2e266cd90ee9d16995f6533fc618f592 Mon Sep 17 00:00:00 2001 From: Andrey Kunchev Date: Wed, 8 Mar 2017 02:29:10 +0200 Subject: [PATCH] added 2 more tests for creation order in xaml --- .../Xaml/BasicTests.cs | 60 ++++++++++++++++++- .../Xaml/InitializationOrderTracker.cs | 2 + 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs index ba1c77bd69..1f9d86733f 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/BasicTests.cs @@ -617,7 +617,10 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml #if OMNIXAML [Fact] #else - [Fact(Skip = "Doesn't work with Portable.xaml, it's working in different order, do we need it?")] + [Fact(Skip = +@"Doesn't work with Portable.xaml, it's working in different creation order - +Handled in test 'Control_Is_Added_To_Parent_Before_Final_EndEdit' +do we need it?")] #endif public void Control_Is_Added_To_Parent_Before_Properties_Are_Set() { @@ -642,6 +645,61 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml } } + [Fact] + public void Control_Is_Added_To_Parent_Before_Final_EndEdit() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var xaml = @" + + +"; + + var window = AvaloniaXamlLoader.Parse(xaml); + var tracker = (InitializationOrderTracker)window.Content; + + var attached = tracker.Order.IndexOf("AttachedToLogicalTree"); + var endInit = tracker.Order.IndexOf("EndInit 0"); + + Assert.NotEqual(-1, attached); + Assert.NotEqual(-1, endInit); + Assert.True(attached < endInit); + } + } + + [Fact] + public void All_Properties_Are_Set_Before_Final_EndEdit() + { + using (UnitTestApplication.Start(TestServices.StyledWindow)) + { + var xaml = @" + + + + + +"; + + + var window = AvaloniaXamlLoader.Parse(xaml); + var tracker = (InitializationOrderTracker)window.Content; + + //ensure binding is set and operational first + Assert.Equal(100.0, tracker.Tag); + + Assert.Equal("EndInit 0", tracker.Order.Last()); + } + } + [Fact] public void BeginInit_Matches_EndInit() { diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/InitializationOrderTracker.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/InitializationOrderTracker.cs index 1523043abe..203898a5f7 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/InitializationOrderTracker.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/InitializationOrderTracker.cs @@ -30,12 +30,14 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml { ++InitState; base.BeginInit(); + Order.Add($"BeginInit {InitState}"); } void ISupportInitialize.EndInit() { --InitState; base.EndInit(); + Order.Add($"EndInit {InitState}"); } } } \ No newline at end of file