public void AddInheritedAction() { int parentEventsRaised = 0; int childEventsRaised = 0; Event parentEvent = new Event(Workspace.Instance.GetPlugin(TriggerOccursEventType)); parentEvent.Statements.CollectionChanged += (sender, e) => parentEventsRaised++; parentEvent.AddStatement(new Action(Workspace.Instance.GetPlugin(FireTriggerActionType))); ReadOnlyEvent childEvent = new ReadOnlyEvent(parentEvent); childEvent.Statements.CollectionChanged += (sender, e) => childEventsRaised++; Assert.AreEqual(1, childEvent.Statements.Count); parentEvent.AddStatement(new Action(Workspace.Instance.GetPlugin(FireTriggerActionType))); Assert.AreEqual(2, childEvent.Statements.Count); Assert.AreEqual(2, parentEventsRaised); Assert.AreEqual(1, childEventsRaised); }
public void CannotRemoveInheritedActionFromInheritingEvent() { Event parentEvent = new Event(Workspace.Instance.GetPlugin(TriggerOccursEventType)); Action parentAction = new Action(Workspace.Instance.GetPlugin(FireTriggerActionType)); parentEvent.AddStatement(parentAction); ReadOnlyEvent childEvent = new ReadOnlyEvent(parentEvent); Assert.AreEqual(1, childEvent.Statements.Count); AbstractStatement childAction = childEvent.Statements.Single(); childEvent.RemoveStatement(childAction); Assert.AreEqual(1, childEvent.Statements.Count); }
public void AddReadOnlyConditionGroup() { Event parentEvent = new Event(Workspace.Instance.GetPlugin(TriggerOccursEventType)); ReadOnlyEvent childEvent = new ReadOnlyEvent(parentEvent); parentEvent.AddStatement(new ConditionGroup()); Assert.AreEqual(1, childEvent.Statements.Count); ReadOnlyConditionGroup childGroup = childEvent.Statements.OfType<ReadOnlyConditionGroup>().Single(); Assert.IsNotNull(childGroup); }
public void InheritedActionPropertyFollowsSource() { bool childPropertyChanged = false; Event parentEvent = new Event(Workspace.Instance.GetPlugin(TriggerOccursEventType)); Action parentAction = new Action(Workspace.Instance.GetPlugin(FireTriggerActionType)); parentAction.SetProperty("Name", new Value("test", true)); parentEvent.AddStatement(parentAction); ReadOnlyEvent childEvent = new ReadOnlyEvent(parentEvent); AbstractProperty childProperty = ((AbstractAction)childEvent.Statements.Single()).GetProperty("Name"); childProperty.PropertyChanged += (sender, e) => childPropertyChanged |= (e.PropertyName == "Value"); parentAction.SetProperty("Name", new Value("test2", true)); Assert.AreEqual("test2", childProperty.Value.Reader.GetStrValue()); Assert.IsTrue(childPropertyChanged); }
public void AddReadOnlyElseIfCondition() { Event parentEvent = new Event(Workspace.Instance.GetPlugin(TriggerOccursEventType)); ReadOnlyEvent childEvent = new ReadOnlyEvent(parentEvent); ConditionGroup parentGroup = new ConditionGroup(); parentEvent.AddStatement(parentGroup); parentGroup.AddStatement(new ExpressionCondition() { Expression = "test > 1" }); Assert.AreEqual(1, childEvent.Statements.Count); ReadOnlyConditionGroup childGroup = childEvent.Statements.OfType<ReadOnlyConditionGroup>().Single(); Assert.IsNotNull(childGroup); ReadOnlyExpressionCondition childCondition = childGroup.Statements.OfType<ReadOnlyExpressionCondition>().Single(); Assert.AreEqual("test > 1", childCondition.Expression); }