Example #1
0
 public void ParallelState_ChoiceStateWithTerminalPath_IsValid()
 {
     AssertHasPathToTerminal(
         StateMachineBuilder.StateMachine()
         .StartAt("Parallel")
         .State("Parallel", StateMachineBuilder.ParallelState()
                .Transition(StateMachineBuilder.End())
                .Branch(StateMachineBuilder.SubStateMachine()
                        .StartAt("Initial")
                        .State("Initial", StateMachineBuilder.PassState()
                               .Transition(StateMachineBuilder
                                           .Next("Choice")))
                        .State("Choice", StateMachineBuilder.ChoiceState()
                               .DefaultStateName("Default")
                               .Choice(StateMachineBuilder.Choice()
                                       .Transition(StateMachineBuilder
                                                   .Next("Initial"))
                                       .Condition(StateMachineBuilder
                                                  .StringEquals("$.foo",
                                                                "bar")))
                               .Choice(StateMachineBuilder.Choice()
                                       .Transition(StateMachineBuilder
                                                   .Next("Default"))
                                       .Condition(StateMachineBuilder
                                                  .StringEquals("$.foo",
                                                                "bar"))))
                        .State("Default",
                               StateMachineBuilder
                               .PassState().Transition(StateMachineBuilder.End())))));
 }
Example #2
0
 [Fact] //
 public void ValidTransitionInPassState_IsValid()
 {
     StateMachineBuilder.StateMachine()
     .StartAt("Initial")
     .State("Initial", StateMachineBuilder.PassState()
            .Transition(StateMachineBuilder.Next("Terminal")))
     .State("Terminal", StateMachineBuilder.SucceedState())
     .Build();
 }
Example #3
0
 public void InvalidTransitionInPassState_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         StateMachineBuilder.StateMachine()
                                         .StartAt("Initial")
                                         .State("Initial", StateMachineBuilder.PassState()
                                                .Transition(StateMachineBuilder.Next("NoSuchState")))
                                         .Build());
 }
Example #4
0
 public void SimpleStateMachine_WithCycle_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         AssertCycle(StateMachineBuilder.StateMachine()
                                                     .StartAt("Initial")
                                                     .State("Initial", StateMachineBuilder.PassState()
                                                            .Transition(StateMachineBuilder.Next("Next")))
                                                     .State("Next", StateMachineBuilder.PassState()
                                                            .Transition(StateMachineBuilder.Next("Initial")))));
 }
Example #5
0
 public void InputPath_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         StateMachineBuilder.StateMachine()
                                         .StartAt("Initial")
                                         .State("Initial", StateMachineBuilder.PassState()
                                                .InputPath("['invalidPath")
                                                .Transition(StateMachineBuilder.End()))
                                         .Build());
 }
Example #6
0
        public void SinglePassStateWithObjectResult()
        {
            var stateMachine = StateMachineBuilder.StateMachine()
                               .StartAt("InitialState")
                               .State("InitialState", StateMachineBuilder.PassState()
                                      .Transition(StateMachineBuilder.End())
                                      .Result(new SimplePojo("value")))
                               .Build();

            AssertStateMachine(stateMachine, "SinglePassStateWithObjectResult.json");
        }
Example #7
0
        public void OutputPAthIsNull()
        {
            var stateMachine = StateMachineBuilder.StateMachine()
                               .StartAt("helloPass")
                               .State("helloPass", StateMachineBuilder.PassState()
                                      .Result(JArray.Parse("[1,2,3]"))
                                      .InputPath("$.a")
                                      .OutputPath(null)
                                      .Transition(StateMachineBuilder.End())).Build();

            AssertStateMachine(stateMachine, "PassStateNullOutputPath.json");
        }
Example #8
0
 public void ParallelState_NoCycles()
 {
     AssertNoCycle(StateMachineBuilder.StateMachine()
                   .StartAt("Initial")
                   .State("Initial", StateMachineBuilder.ParallelState()
                          .Branch(StateMachineBuilder.SubStateMachine()
                                  .StartAt("BranchOneStart")
                                  .State("BranchOneStart", StateMachineBuilder.SucceedState()))
                          .Branch(StateMachineBuilder.SubStateMachine()
                                  .StartAt("BranchTwoStart")
                                  .State("BranchTwoStart", StateMachineBuilder.PassState()
                                         .Transition(StateMachineBuilder
                                                     .Next("NextState")))
                                  .State("NextState", StateMachineBuilder.SucceedState()))
                          .Transition(StateMachineBuilder.End())));
 }
Example #9
0
        public void SinglePassStateWithJsonResult()
        {
            var stateMachine = StateMachineBuilder.StateMachine()
                               .StartAt("InitialState")
                               .State("InitialState", StateMachineBuilder.PassState()
                                      .Comment("Pass through state")
                                      .InputPath("$.input")
                                      .OutputPath("$.output")
                                      .ResultPath("$.result")
                                      .Parameters(JObject.Parse("{'a':1}"))
                                      .Transition(StateMachineBuilder.Next("NextState"))
                                      .Result("{\"Foo\": \"Bar\"}"))
                               .State("NextState", StateMachineBuilder.SucceedState())
                               .Build();

            AssertStateMachine(stateMachine, "SinglePassStateWithJsonResult.json");
        }
Example #10
0
 public void ChoiceStateWithClosedCycle_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         AssertCycle(StateMachineBuilder.StateMachine()
                                                     .StartAt("Initial")
                                                     .State("Initial", StateMachineBuilder.PassState()
                                                            .Transition(StateMachineBuilder.Next("Choice")))
                                                     .State("Choice", StateMachineBuilder.ChoiceState()
                                                            .DefaultStateName("Terminal")
                                                            .Choice(StateMachineBuilder.Choice()
                                                                    .Transition(StateMachineBuilder.Next("Terminal"))
                                                                    .Condition(StateMachineBuilder.StringEquals("$.foo", "bar")))
                                                            .Choice(StateMachineBuilder.Choice()
                                                                    .Transition(StateMachineBuilder.Next("NonTerminal"))
                                                                    .Condition(StateMachineBuilder.StringEquals("$.foo", "bar"))))
                                                     .State("Terminal", StateMachineBuilder.PassState().Transition(StateMachineBuilder.End()))
                                                     .State("NonTerminal",
                                                            StateMachineBuilder.PassState().Transition(StateMachineBuilder.Next("Cyclic")))
                                                     .State("Cyclic",
                                                            StateMachineBuilder.PassState().Transition(StateMachineBuilder.Next("NonTerminal")))));
 }
Example #11
0
 public void ChoiceStateWithPathOut_IsValid()
 {
     AssertNoCycle(
         StateMachineBuilder.StateMachine()
         .StartAt("Initial")
         .State("Initial", StateMachineBuilder.PassState()
                .Transition(StateMachineBuilder.Next("ChoiceOne")))
         .State("ChoiceOne", StateMachineBuilder.ChoiceState()
                .DefaultStateName("DefaultOne")
                .Choice(StateMachineBuilder.Choice()
                        .Transition(StateMachineBuilder.Next("ChoiceTwo"))
                        .Condition(StateMachineBuilder.StringEquals("$.foo", "bar"))))
         .State("DefaultOne", StateMachineBuilder.SucceedState())
         .State("ChoiceTwo", StateMachineBuilder.ChoiceState()
                .DefaultStateName("DefaultTwo")
                .Choice(StateMachineBuilder.Choice()
                        .Transition(StateMachineBuilder.Next("ChoiceOne"))
                        .Condition(StateMachineBuilder.StringEquals("$.foo", "bar"))))
         .State("DefaultTwo",
                StateMachineBuilder.PassState().Transition(StateMachineBuilder.Next("ChoiceTwo"))));
 }
Example #12
0
 public void ParallelState_WithChoiceThatHasNoTerminalPath_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         AssertDoesNotHaveTerminalPath(
                                             StateMachineBuilder.StateMachine()
                                             .StartAt("Parallel")
                                             .State("Parallel", StateMachineBuilder.ParallelState()
                                                    .Transition(StateMachineBuilder.End())
                                                    .Branch(StateMachineBuilder.SubStateMachine()
                                                            .StartAt("Initial")
                                                            .State("Initial",
                                                                   StateMachineBuilder
                                                                   .PassState()
                                                                   .Transition(StateMachineBuilder
                                                                               .Next("Choice")))
                                                            .State("Choice",
                                                                   StateMachineBuilder
                                                                   .ChoiceState()
                                                                   .DefaultStateName("Default")
                                                                   .Choice(StateMachineBuilder
                                                                           .Choice()
                                                                           .Transition(StateMachineBuilder
                                                                                       .Next("Initial"))
                                                                           .Condition(StateMachineBuilder
                                                                                      .StringEquals("$.foo",
                                                                                                    "bar")))
                                                                   .Choice(StateMachineBuilder
                                                                           .Choice()
                                                                           .Transition(StateMachineBuilder
                                                                                       .Next("Default"))
                                                                           .Condition(StateMachineBuilder
                                                                                      .StringEquals("$.foo",
                                                                                                    "bar"))))
                                                            .State("Default",
                                                                   StateMachineBuilder
                                                                   .PassState()
                                                                   .Transition(StateMachineBuilder
                                                                               .Next("Choice")))))));
 }
Example #13
0
 public void ChoiceStateWithOnlyCycles_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         AssertDoesNotHaveTerminalPath(StateMachineBuilder.StateMachine()
                                                                       .StartAt("Initial")
                                                                       .State("Initial", StateMachineBuilder.PassState()
                                                                              .Transition(StateMachineBuilder.Next("Choice")))
                                                                       .State("Choice", StateMachineBuilder.ChoiceState()
                                                                              .DefaultStateName("Default")
                                                                              .Choice(StateMachineBuilder.Choice()
                                                                                      .Transition(StateMachineBuilder
                                                                                                  .Next("Initial"))
                                                                                      .Condition(StateMachineBuilder
                                                                                                 .StringEquals("$.foo",
                                                                                                               "bar")))
                                                                              .Choice(StateMachineBuilder.Choice()
                                                                                      .Transition(StateMachineBuilder
                                                                                                  .Next("Default"))
                                                                                      .Condition(StateMachineBuilder
                                                                                                 .StringEquals("$.foo",
                                                                                                               "bar"))))
                                                                       .State("Default",
                                                                              StateMachineBuilder.PassState().Transition(StateMachineBuilder.Next("Choice")))));
 }
Example #14
0
 public void ParallelState_WithCycles_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         AssertCycle(StateMachineBuilder.StateMachine()
                                                     .StartAt("Parallel")
                                                     .State("Parallel", StateMachineBuilder.ParallelState()
                                                            .Branch(StateMachineBuilder.SubStateMachine()
                                                                    .StartAt("BranchOneInitial")
                                                                    .State("BranchOneInitial", StateMachineBuilder
                                                                           .PassState()
                                                                           .Transition(StateMachineBuilder
                                                                                       .Next("CyclicState")))
                                                                    .State("CyclicState", StateMachineBuilder
                                                                           .PassState()
                                                                           .Transition(StateMachineBuilder
                                                                                       .Next("BranchOneInitial"))))
                                                            .Transition(StateMachineBuilder.End()))));
 }
Example #15
0
 private PassState.Builder NewPassState()
 {
     return(StateMachineBuilder.PassState().Transition(StateMachineBuilder.End()));
 }