From 04ae8ee43fb6016baef9ca8615025d08d5d97fb1 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 30 Apr 2021 12:10:30 +0200 Subject: [PATCH] Added failing property batch update tests. --- .../AvaloniaObjectTests_BatchUpdate.cs | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_BatchUpdate.cs b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_BatchUpdate.cs index 53ad87421e..01d5752ead 100644 --- a/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_BatchUpdate.cs +++ b/tests/Avalonia.Base.UnitTests/AvaloniaObjectTests_BatchUpdate.cs @@ -5,6 +5,7 @@ using System.Reactive.Disposables; using System.Reactive.Linq; using System.Text; using Avalonia.Data; +using Avalonia.Layout; using Xunit; namespace Avalonia.Base.UnitTests @@ -104,6 +105,25 @@ namespace Avalonia.Base.UnitTests Assert.Equal("baz", target.Foo); } + [Fact] + public void SetValue_Change_Should_Be_Raised_After_Batch_Update_3() + { + var target = new TestClass(); + var raised = new List(); + + target.PropertyChanged += (s, e) => raised.Add(e); + + target.BeginBatchUpdate(); + target.SetValue(TestClass.BazProperty, Orientation.Horizontal, BindingPriority.LocalValue); + target.EndBatchUpdate(); + + Assert.Equal(1, raised.Count); + Assert.Equal(TestClass.BazProperty, raised[0].Property); + Assert.Equal(Orientation.Vertical, raised[0].OldValue); + Assert.Equal(Orientation.Horizontal, raised[0].NewValue); + Assert.Equal(Orientation.Horizontal, target.Baz); + } + [Fact] public void SetValue_Changes_Should_Be_Raised_In_Correct_Order_After_Batch_Update() { @@ -234,6 +254,26 @@ namespace Avalonia.Base.UnitTests Assert.Equal("baz", raised[0].NewValue); } + [Fact] + public void Binding_Change_Should_Be_Raised_After_Batch_Update_3() + { + var target = new TestClass(); + var observable = new TestObservable(Orientation.Horizontal); + var raised = new List(); + + target.PropertyChanged += (s, e) => raised.Add(e); + + target.BeginBatchUpdate(); + target.Bind(TestClass.BazProperty, observable, BindingPriority.LocalValue); + target.EndBatchUpdate(); + + Assert.Equal(1, raised.Count); + Assert.Equal(TestClass.BazProperty, raised[0].Property); + Assert.Equal(Orientation.Vertical, raised[0].OldValue); + Assert.Equal(Orientation.Horizontal, raised[0].NewValue); + Assert.Equal(Orientation.Horizontal, target.Baz); + } + [Fact] public void Binding_Completion_Should_Be_Raised_After_Batch_Update() { @@ -579,6 +619,9 @@ namespace Avalonia.Base.UnitTests public static readonly StyledProperty BarProperty = AvaloniaProperty.Register(nameof(Bar)); + public static readonly StyledProperty BazProperty = + AvaloniaProperty.Register(nameof(Bar), Orientation.Vertical); + public string Foo { get => GetValue(FooProperty); @@ -590,6 +633,12 @@ namespace Avalonia.Base.UnitTests get => GetValue(BarProperty); set => SetValue(BarProperty, value); } + + public Orientation Baz + { + get => GetValue(BazProperty); + set => SetValue(BazProperty, value); + } } public class TestObservable : ObservableBase>