From 1812540ad9c722bb995e1cc2a9b60ca1b269cc8b Mon Sep 17 00:00:00 2001 From: Lubomir Tetak Date: Thu, 7 Jul 2022 10:44:19 +0200 Subject: [PATCH] unit test --- ...ayoutableTests_EffectiveViewportChanged.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/Avalonia.Base.UnitTests/Layout/LayoutableTests_EffectiveViewportChanged.cs b/tests/Avalonia.Base.UnitTests/Layout/LayoutableTests_EffectiveViewportChanged.cs index 7c1a525002..a58d28004f 100644 --- a/tests/Avalonia.Base.UnitTests/Layout/LayoutableTests_EffectiveViewportChanged.cs +++ b/tests/Avalonia.Base.UnitTests/Layout/LayoutableTests_EffectiveViewportChanged.cs @@ -312,6 +312,30 @@ namespace Avalonia.Base.UnitTests.Layout }); } + [Fact] + public async Task Event_Unsubscribed_While_Inside_Callback() + { + await RunOnUIThread.Execute(async () => + { + var root = CreateRoot(); + var target = new Canvas(); + var raised = 0; + + void OnTargetOnEffectiveViewportChanged(object s, EffectiveViewportChangedEventArgs e) + { + target.EffectiveViewportChanged -= OnTargetOnEffectiveViewportChanged; + ++raised; + } + target.EffectiveViewportChanged += OnTargetOnEffectiveViewportChanged; + + root.Child = target; + + await ExecuteInitialLayoutPass(root); + + Assert.Equal(1, raised); + }); + } + private TestRoot CreateRoot() => new TestRoot { Width = 1200, Height = 900 }; private Task ExecuteInitialLayoutPass(TestRoot root)