コード例 #1
0
 public static XElement ToXml(this ILifeline lifeline)
 {
     return(new XElement("Lifeline",
                         new XElement("Id", lifeline.Id),
                         new XElement("Name", lifeline.Name),
                         new XElement("Pins", lifeline.Pins.Select(ToXml)),
                         new XElement("Activities", lifeline.Activities().Select(ToXml))));
 }
コード例 #2
0
        public void LifelineTest()
        {
            var lifelineStub = new Mock <Lifeline>(MockBehavior.Loose, null, null, null, 0);

            Pin       target = CreatePin(null, lifelineStub.Object);
            ILifeline actual = target.Lifeline;

            Assert.AreEqual(lifelineStub.Object, actual);
        }
コード例 #3
0
 public LifelineVisual(IStyle style, ILifeline lifeline, Column column, Row startRow, Row endRow, GridLayout gridLayout)
     : base(style)
 {
     m_Lifeline   = lifeline;
     m_GridLayout = gridLayout;
     m_Column     = column;
     m_StartRow   = startRow;
     m_EndRow     = endRow;
     Initialize();
 }
コード例 #4
0
 public static IEnumerable <ISignal> InSignals(this ILifeline lifeline)
 {
     if (lifeline == null)
     {
         throw new ArgumentNullException("lifeline");
     }
     return
         (lifeline
          .Pins
          .Where(IsSignalEnd)
          .Select(pin => pin.Signal));
 }
コード例 #5
0
 public static IEnumerable <IActivity> Activities(this ILifeline lifeline)
 {
     if (lifeline == null)
     {
         throw new ArgumentNullException("lifeline");
     }
     return
         (lifeline
          .Pins
          .Where(IsActivityStart)
          .Select(pin => pin.Activity));
 }
コード例 #6
0
 public static IEnumerable <ISignal> RightSignals(this ILifeline lifeline)
 {
     if (lifeline == null)
     {
         throw new ArgumentNullException("lifeline");
     }
     return
         (lifeline
          .Pins
          .Where(pin => pin.Orientation != Orientation.Left)
          .Select(pin => pin.Signal)
          .Where(signal => signal != null));
 }
コード例 #7
0
        private void Deactivate(Lifeline target, Token targetToken, bool errorIfUnexpectedDeactivation)
        {
            Row endRow = m_Matrix.LastRow;
            Pin endPin = endRow[target];

            if (target.State.OpenPins.Count == 0)
            {
                AddError(targetToken, "Unexpected deactivation. The lifeline must be activated before.");
                return;
            }

            OpenPin  lastOpenPin      = target.State.OpenPins.Pop();
            Activity lastOpenActivity = lastOpenPin.GetActivity();

            if (endPin.PinType != PinType.In && endPin.Signal != null && endPin.Signal.SignalType == SignalType.Return)
            {
                ILifeline targetOfReturn     = endPin.Signal.End.Lifeline;
                ILifeline sourceOfActivation = lastOpenActivity.Start.Signal.Start.Lifeline;

                if (!sourceOfActivation.Equals(targetOfReturn))
                {
                    AddError(targetToken,
                             string.Format(
                                 "Unexpected deactivation. Return came from '{0}' but activation was initiated by '{1}'",
                                 targetOfReturn.Id,
                                 sourceOfActivation.Id));
                }
            }
            else
            {
                endRow = m_Matrix.CreateRow();
                endPin = endRow[target];
            }

            lastOpenActivity.ReconnectEnd(endPin);
            target.State.DecLevel(lastOpenActivity.Orientation);
        }