using System.Threading; using System.Windows.Data; using Caliburn.Events.Brokering; using Caliburn.MarkupExtensions; using Caliburn.Messaging; using MbUnit.Framework; namespace Tests.Caliburn.The_MarkupExtension_for { [TestFixture(ApartmentState = ApartmentState.STA)] public class messages { [Test] public void defaults_to_providing_an_ActionMessage_based_on_a_string() { string actionName = "TheAction"; MessageExtension extension = new MessageExtension(actionName); ActionMessage result = extension.ProvideValue(null) as ActionMessage; Assert.IsNotNull(result); Assert.AreEqual(actionName, result.Action); } [Test] public void can_provide_an_ActionMessage_based_on_various_properties() { string actionName = "TheAction"; string trigger = "Click"; Binding paramBinding = new Binding("some.path"); Binding returnBinding = new Binding("some.path"); MessageExtension extension = new MessageExtension(); extension.Action = actionName; extension.Trigger = trigger; extension.ParamBinding = paramBinding; extension.Return = returnBinding; ActionMessage result = extension.ProvideValue(null) as ActionMessage; Assert.IsNotNull(result); Assert.AreEqual(actionName, result.Action); Assert.AreEqual(trigger, result.Trigger); Assert.AreEqual(paramBinding, BindingOperations.GetBinding(result.Parameters[0], Parameter.ValueProperty)); Assert.AreEqual(returnBinding, result.Return); } [Test] public void can_provide_an_EventMessage_based_on_various_properties() { Publication publication = new Publication("event://test/event"); string trigger = "Click"; Binding paramBinding = new Binding("some.path"); Binding returnBinding = new Binding("some.path"); MessageExtension extension = new MessageExtension(); extension.Publication = publication; extension.Trigger = trigger; extension.ParamBinding = paramBinding; EventMessage result = extension.ProvideValue(null) as EventMessage; Assert.IsNotNull(result); Assert.AreEqual(publication, result.Publication); Assert.AreEqual(trigger, result.Trigger); Assert.AreEqual(paramBinding, BindingOperations.GetBinding(result.Parameters[0], Parameter.ValueProperty)); } } }