コード例 #1
0
        public void ToXmlShouldSerialize()
        {
            const string Expected =
                @"<StateTracker xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.microsoft.com/2012/07/Microsoft.Activities.Extensions"">
              <StateMachines xmlns:d2p1=""http://schemas.datacontract.org/2004/07/Microsoft.Activities.Extensions.Tracking"">
            <StateMachine>
              <CurrentState>State1</CurrentState>
              <InstanceId>{0}</InstanceId>
              <InstanceState>Executing</InstanceState>
              <MaxHistory>1000</MaxHistory>
              <Name>StateMachine</Name>
              <PossibleTransitions>
            <Transition>T1</Transition>
            <Transition>T2</Transition>
              </PossibleTransitions>
              <PreviousState i:nil=""true"" />
              <StateHistory>
            <State>State1</State>
              </StateHistory>
            </StateMachine>
              </StateMachines>
            </StateTracker>";

            // Arrange
            var activity = new StateMachineExample();
            var host = WorkflowApplicationTest.Create(activity);
            var tracker = new StateTracker();
            host.Extensions.Add(tracker);
            try
            {
                // Act
                host.TestWorkflowApplication.RunUntilBookmark(StateTrigger.T1);

                var actual = tracker.ToXml();

                // Assert
                Assert.AreEqual(string.Format(Expected, host.Id), actual);
            }
            finally
            {
                tracker.Trace();
                host.Tracking.Trace();
            }
        }
コード例 #2
0
        public void ParseShouldDeserialize()
        {
            // Arrange
            var activity = new StateMachineExample();
            var host = WorkflowApplicationTest.Create(activity);
            var tracker1 = new StateTracker();
            StateTracker tracker2 = null;
            host.Extensions.Add(tracker1);

            try
            {
                // Act
                host.TestWorkflowApplication.RunUntilBookmark(StateTrigger.T1);

                var xml = tracker1.ToXml();
                tracker2 = StateTracker.Parse(xml);

                // Assert
                Assert.AreEqual(tracker1.StateMachines.Count, tracker2.StateMachines.Count);

                for (var i = 0; i < tracker1.StateMachines.Count; i++)
                {
                    AssertEquivalent(tracker1.StateMachines[i], tracker2.StateMachines[i]);
                }
            }
            finally
            {
                tracker1.Trace();
                if (tracker2 != null)
                {
                    tracker2.Trace();
                }

                host.Tracking.Trace();
            }
        }