From 9e4a5972253cbdb550f64c1a71b73746e09b2649 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 12 Jul 2022 14:12:45 +0200 Subject: [PATCH] Added failing tests for #8480. --- .../ClassesTests.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/ClassesTests.cs b/tests/Avalonia.Controls.UnitTests/ClassesTests.cs index c10e7b467c..bcd2b6ec1f 100644 --- a/tests/Avalonia.Controls.UnitTests/ClassesTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ClassesTests.cs @@ -168,5 +168,36 @@ namespace Avalonia.Controls.UnitTests Assert.Equal(new[] { "foo" }, target); } + + [Fact] + public void Listeners_Can_Be_Added_By_Listener() + { + var classes = new Classes(); + var listener1 = new ClassesChangedListener(() => { }); + var listener2 = new ClassesChangedListener(() => classes.AddListener(listener1)); + + classes.AddListener(listener2); + classes.Add("bar"); + } + + [Fact] + public void Listeners_Can_Be_Removed_By_Listener() + { + var classes = new Classes(); + var listener1 = new ClassesChangedListener(() => { }); + var listener2 = new ClassesChangedListener(() => classes.RemoveListener(listener1)); + + classes.AddListener(listener1); + classes.AddListener(listener2); + classes.Add("bar"); + } + + private class ClassesChangedListener : IClassesChangedListener + { + private Action _action; + + public ClassesChangedListener(Action action) => _action = action; + public void Changed() => _action(); + } } }