static void Verify_IsSelected_PublishesDebugSelectionChangedEventArgs(ActivityType activityType, ActivitySelectionType expectedSelectionType, int expectedCount, bool setIsSelected = false)
{
var expected = new DebugState { DisplayName = "IsSelectedTest", ID = Guid.NewGuid(), ActivityType = activityType };
var events = new List<DebugSelectionChangedEventArgs>();
var selectionChangedEvents = EventPublishers.Studio.GetEvent<DebugSelectionChangedEventArgs>();
selectionChangedEvents.Subscribe(events.Add);
var envRep = CreateEnvironmentRepository();
var vm = new DebugStateTreeViewItemViewModelMock(envRep.Object) { Content = expected };
if(setIsSelected)
{
// clear constructor events
events.Clear();
// events are only triggered when property changes to true
vm.IsSelected = false;
vm.SelectionType = expectedSelectionType;
vm.IsSelected = true;
}
else
{
vm.IsSelected = false;
vm.SelectionType = expectedSelectionType;
}
EventPublishers.Studio.RemoveEvent<DebugSelectionChangedEventArgs>();
Assert.AreEqual(expectedCount, events.Count);
if(events.Count > 0)
{
var foundEvent = events.Find(args => args.SelectionType == expectedSelectionType);
Assert.IsNotNull(foundEvent);
Assert.AreSame(expected, foundEvent.DebugState);
}
}