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(); + } } }