private void ExecuteTransition()
        {
            stateActionController = subStateActionControllerProvider.GetStateActionController(this);
            DeviceSubWorkflowState initialState = initialStateProvider.DetermineInitialState(this.launchOptions.StateObject);

            AdvanceStateActionTransition(initialState);
        }
        public DeviceSubWorkflowState DetermineInitialState(LinkRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            LinkActionRequest      linkActionRequest = request.Actions.First();
            DeviceSubWorkflowState proposedState     = ((linkActionRequest.DeviceActionRequest?.DeviceAction) switch
            {
                LinkDeviceActionType.GetStatus => DeviceSubWorkflowState.GetStatus,
                LinkDeviceActionType.AbortCommand => DeviceSubWorkflowState.AbortCommand,
                LinkDeviceActionType.ResetCommand => DeviceSubWorkflowState.ResetCommand,
                _ => DeviceSubWorkflowState.Undefined
            });
Ejemplo n.º 3
0
        public void GetNextAction_ShouldReturnCorrectType_When_Called(Type expectedType, DeviceSubWorkflowState initialState, bool set = true, bool exception = false)
        {
            TestHelper.Helper.SetFieldValueToInstance <IDeviceStateAction>("currentStateAction", false, false, subject, null);

            if (set)
            {
                var map = TestHelper.Helper.GetFieldValueFromInstance <Dictionary <DeviceSubWorkflowState, Func <IDeviceSubStateController, IDeviceSubStateAction> > >(
                    "workflowMap", false, false, subject);

                IDeviceSubStateAction action = map[initialState](stubManager);

                if (exception)
                {
                    TestHelper.Helper.SetPropertyValueToInstance <StateException>("LastException", true, false, action, new StateException());
                }

                TestHelper.Helper.SetFieldValueToInstance <IDeviceStateAction>("currentStateAction", false, false, subject, action);
            }

            Assert.IsType(expectedType, subject.GetNextAction(initialState));
        }
 private void LogStateChange(DeviceSubWorkflowState oldState, DeviceSubWorkflowState newState)
 {
     // TODO: Add your logging here on the state change and update the messaging if necessary.
     //LoggingClient.LogInfoAsync($"State change from {oldState} to {newState}.");
     Console.WriteLine($"State change from {oldState} to {newState}.");
 }
 private void AdvanceStateActionTransition(DeviceSubWorkflowState workflowState)
 {
     currentStateAction = stateActionController.GetNextAction(workflowState);
     _ = AssignAndForward(currentStateAction, null);
 }