public void XEvent() { // Event Test // Testing : 1) That all events are actually thrown during calculations TestEngineLC sourceModel = new TestEngineLC(); TestEngineLC targetModel = new TestEngineLC(); Trigger trigger = new Trigger(); sourceModel.Initialize(new Argument[0]); targetModel.Initialize(new Argument[0]); trigger.Initialize(new Argument[0]); Link link = new Link(); link.ID = "SourceToTargetLink"; link.SourceComponent = sourceModel; link.SourceElementSet = sourceModel.GetOutputExchangeItem(0).ElementSet; //last branch in the river link.SourceQuantity = sourceModel.GetOutputExchangeItem(0).Quantity; link.TargetComponent = targetModel; link.TargetElementSet = targetModel.GetInputExchangeItem(0).ElementSet; //first node in the river link.TargetQuantity = targetModel.GetInputExchangeItem(0).Quantity; Link triggerLink = new Link(); triggerLink.ID = "TargetToTriggerLink"; triggerLink.SourceComponent = targetModel; triggerLink.SourceElementSet = targetModel.GetOutputExchangeItem(0).ElementSet; //last branch in the river triggerLink.SourceQuantity = targetModel.GetOutputExchangeItem(0).Quantity; triggerLink.TargetComponent = trigger; triggerLink.TargetElementSet = trigger.GetInputExchangeItem(0).ElementSet; triggerLink.TargetQuantity = trigger.GetInputExchangeItem(0).Quantity; sourceModel.AddLink(link); targetModel.AddLink(link); targetModel.AddLink(triggerLink); trigger.AddLink(triggerLink); EventListener eventListener = new EventListener(); eventListener._isSilent = true; for (int i = 0; i < eventListener.GetAcceptedEventTypeCount(); i++) { for (int n = 0; n < sourceModel.GetPublishedEventTypeCount(); n++) { if (eventListener.GetAcceptedEventType(i) == sourceModel.GetPublishedEventType(n)) { sourceModel.Subscribe(eventListener, eventListener.GetAcceptedEventType(i)); } } for (int n = 0; n < targetModel.GetPublishedEventTypeCount(); n++) { if (eventListener.GetAcceptedEventType(i) == targetModel.GetPublishedEventType(n)) { targetModel.Subscribe(eventListener, eventListener.GetAcceptedEventType(i)); } } } sourceModel.Prepare(); targetModel.Prepare(); trigger.Prepare(); trigger.Run(new TimeStamp(sourceModel.TimeHorizon.Start.ModifiedJulianDay + 10)); Assert.AreEqual(true , eventListener._dataChanged); Assert.AreEqual(false, eventListener._globalProgress); // Assert.AreEqual(true , eventListener._informative); //TODO This test was out commented, because it fails, further investigation needed Assert.AreEqual(false, eventListener._other); Assert.AreEqual(true, eventListener._sourceAfterGetValuesCall); Assert.AreEqual(true, eventListener._sourceBeforeGetValuesReturn); Assert.AreEqual(true, eventListener._targetAfterGetValuesReturn); Assert.AreEqual(true, eventListener._targetBeforeGetValuesCall); Assert.AreEqual(false, eventListener._timeStepProgres); Assert.AreEqual(false, eventListener._valueOutOfRange); Assert.AreEqual(false, eventListener._warning); }