From d2bbe8e08e8fe71e7078cad6c0dabc9a547df38b Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 14 Dec 2015 22:22:20 +0000 Subject: [PATCH] Test event handling works as expected. --- .../InteractiveTests.cs | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/Perspex.Interactivity.UnitTests/InteractiveTests.cs b/tests/Perspex.Interactivity.UnitTests/InteractiveTests.cs index 3a3d47947a..c26ecf0ecb 100644 --- a/tests/Perspex.Interactivity.UnitTests/InteractiveTests.cs +++ b/tests/Perspex.Interactivity.UnitTests/InteractiveTests.cs @@ -117,6 +117,52 @@ namespace Perspex.Interactivity.UnitTests invoked); } + [Fact] + public void Handled_Bubbled_Event_Should_Not_Propogate_Further() + { + var ev = new RoutedEvent("test", RoutingStrategies.Bubble, typeof(RoutedEventArgs), typeof(TestInteractive)); + var invoked = new List(); + + EventHandler handler = (s, e) => + { + var t = (TestInteractive)s; + invoked.Add(t.Name); + e.Handled = t.Name == "2b"; + }; + + var target = CreateTree(ev, handler, RoutingStrategies.Bubble); + + var args = new RoutedEventArgs(ev, target); + target.RaiseEvent(args); + + Assert.Equal(new[] { "2b" }, invoked); + } + + [Fact] + public void Handled_Tunnelled_Event_Should_Not_Propogate_Further() + { + var ev = new RoutedEvent( + "test", + RoutingStrategies.Bubble | RoutingStrategies.Tunnel, + typeof(RoutedEventArgs), + typeof(TestInteractive)); + var invoked = new List(); + + EventHandler handler = (s, e) => + { + var t = (TestInteractive)s; + invoked.Add(t.Name); + e.Handled = t.Name == "2b"; + }; + + var target = CreateTree(ev, handler, RoutingStrategies.Bubble | RoutingStrategies.Tunnel); + + var args = new RoutedEventArgs(ev, target); + target.RaiseEvent(args); + + Assert.Equal(new[] { "1", "2b" }, invoked); + } + [Fact] public void Direct_Subscription_Should_Not_Catch_Tunneling_Or_Bubbling() {