@@ -582,6 +582,65 @@ public void Initial_State_Not_Changed_After_Trigger_Fired()
582
582
Assert . Equal ( expected , dotGraph ) ;
583
583
}
584
584
585
+ [ Fact ]
586
+ public void Reentrant_Transition_Shows_Entry_Action_When_Action_Is_Configured_With_OnEntryFrom ( )
587
+ {
588
+ var expected = Prefix ( Style . UML )
589
+ + Box ( Style . UML , "A" )
590
+ + Box ( Style . UML , "B" )
591
+ + Line ( "A" , "B" , "X / OnEntry" )
592
+ + Line ( "B" , "B" , "X / OnEntry" )
593
+ + suffix ;
594
+
595
+ var sm = new StateMachine < State , Trigger > ( State . A ) ;
596
+
597
+ sm . Configure ( State . A )
598
+ . Permit ( Trigger . X , State . B ) ;
599
+
600
+ var list = new List < string > ( ) ;
601
+ sm . Configure ( State . B )
602
+ . OnEntryFrom ( Trigger . X , OnEntry , entryActionDescription : "OnEntry" )
603
+ . PermitReentry ( Trigger . X ) ;
604
+
605
+ string dotGraph = UmlDotGraph . Format ( sm . GetInfo ( ) ) ;
606
+
607
+ #if WRITE_DOTS_TO_FOLDER
608
+ System . IO . File . WriteAllText ( DestinationFolder + "Reentrant_Transition_Shows_Entry_Action_When_Action_Is_Configured_With_OnEntryFrom.dot" , dotGraph ) ;
609
+ #endif
610
+
611
+ Assert . Equal ( expected , dotGraph ) ;
612
+ }
613
+
614
+ [ Fact ]
615
+ public void Reentrant_Transition_Shows_Entry_Action_When_Action_Is_Configured_With_OnEntryFrom_And_Trigger_Has_Parameter ( )
616
+ {
617
+ var expected = Prefix ( Style . UML )
618
+ + Box ( Style . UML , "A" )
619
+ + Box ( Style . UML , "B" )
620
+ + Line ( "A" , "B" , "X / LogTrigger" )
621
+ + Line ( "B" , "B" , "X / LogTrigger" )
622
+ + suffix ;
623
+
624
+ var sm = new StateMachine < State , Trigger > ( State . A ) ;
625
+ var triggerX = sm . SetTriggerParameters < string > ( Trigger . X ) ;
626
+
627
+ sm . Configure ( State . A )
628
+ . Permit ( Trigger . X , State . B ) ;
629
+
630
+ var list = new List < string > ( ) ;
631
+ sm . Configure ( State . B )
632
+ . OnEntryFrom ( triggerX , list . Add , entryActionDescription : "LogTrigger" )
633
+ . PermitReentry ( Trigger . X ) ;
634
+
635
+ string dotGraph = UmlDotGraph . Format ( sm . GetInfo ( ) ) ;
636
+
637
+ #if WRITE_DOTS_TO_FOLDER
638
+ System . IO . File . WriteAllText ( DestinationFolder + "Reentrant_Transition_Shows_Entry_Action_When_Action_Is_Configured_With_OnEntryFrom_And_Trigger_Has_Parameter.dot" , dotGraph ) ;
639
+ #endif
640
+
641
+ Assert . Equal ( expected , dotGraph ) ;
642
+ }
643
+
585
644
private void TestEntryAction ( ) { }
586
645
private void TestEntryActionString ( string val ) { }
587
646
private State DestinationSelector ( ) { return State . A ; }
0 commit comments