summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs73
1 files changed, 73 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs b/Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs
new file mode 100644
index 00000000..89034a03
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs
@@ -0,0 +1,73 @@
+using System;
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ internal class MockTriggerAction : TriggerAction<BindableObject>
+ {
+ public bool Invoked { get; set;}
+
+ protected override void Invoke (BindableObject sender)
+ {
+ Invoked = true;
+ }
+ }
+
+ internal class MockBindableWithEvent : VisualElement
+ {
+ public void FireEvent ()
+ {
+ if (MockEvent != null)
+ MockEvent (this, EventArgs.Empty);
+ }
+
+ public void FireEvent2 ()
+ {
+ if (MockEvent2 != null)
+ MockEvent2 (this, EventArgs.Empty);
+ }
+
+ public event EventHandler MockEvent;
+ public event EventHandler MockEvent2;
+ }
+
+ [TestFixture]
+ public class EventTriggerTest : BaseTestFixture
+ {
+ [Test]
+ public void TestTriggerActionInvoked ()
+ {
+ var bindable = new MockBindableWithEvent ();
+ var triggeraction = new MockTriggerAction ();
+ var eventtrigger = new EventTrigger () { Event = "MockEvent", Actions = { triggeraction } };
+ var collection = bindable.Triggers;
+ collection.Add (eventtrigger);
+
+ Assert.False (triggeraction.Invoked);
+ bindable.FireEvent ();
+ Assert.True (triggeraction.Invoked);
+ }
+
+ [Test]
+ public void TestChangeEventOnEventTrigger ()
+ {
+ var bindable = new MockBindableWithEvent ();
+ var triggeraction = new MockTriggerAction ();
+ var eventtrigger = new EventTrigger { Event = "MockEvent", Actions = { triggeraction } };
+ var collection = bindable.Triggers;
+ collection.Add (eventtrigger);
+
+ triggeraction.Invoked = false;
+ Assert.False (triggeraction.Invoked);
+ bindable.FireEvent ();
+ Assert.True (triggeraction.Invoked);
+
+ triggeraction.Invoked = false;
+ Assert.False (triggeraction.Invoked);
+ bindable.FireEvent2 ();
+ Assert.False (triggeraction.Invoked);
+
+ Assert.Throws<InvalidOperationException>(()=> eventtrigger.Event = "MockEvent2");
+ }
+ }
+} \ No newline at end of file