maui-linux/Xamarin.Forms.Core.UnitTests/EventTriggerTest.cs

73 строки
1.8 KiB
C#

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");
}
}
}