@@ -85,7 +85,6 @@ public void It_should_not_update_previous_nodes_when_a_continue_node_is_rerun ()
8585 }
8686
8787 // @TODO Break up these tests into better subsections
88- // @TODO Builder API for tasks
8988 public class WhenAbortLowerPriority : UpdateMethod {
9089 private Sequence _seqChild ;
9190 private ITask _taskCondition ;
@@ -361,6 +360,58 @@ public void Should_be_continue_if_a_child_returns_continue () {
361360 Assert . AreEqual ( TaskStatus . Continue , _sequence . Update ( ) ) ;
362361 }
363362 }
363+
364+ public class WhenAbortSelfAndLowerPriority {
365+ [ Test ]
366+ public void Triggers_self_abort_when_valid ( ) {
367+ var sequence = new Sequence ( ) ;
368+ sequence . AbortType |= AbortType . Self ;
369+ sequence . AbortType |= AbortType . LowerPriority ;
370+
371+ var condition = A . TaskStub ( )
372+ . WithAbortConditionSelf ( true )
373+ . Build ( ) ;
374+ sequence . AddChild ( condition ) ;
375+
376+ var action = A . TaskStub ( )
377+ . WithUpdateStatus ( TaskStatus . Continue )
378+ . Build ( ) ;
379+ sequence . AddChild ( action ) ;
380+
381+ Assert . AreEqual ( TaskStatus . Continue , sequence . Update ( ) ) ;
382+
383+ condition . Update ( ) . Returns ( TaskStatus . Failure ) ;
384+
385+ Assert . AreEqual ( TaskStatus . Failure , sequence . Update ( ) ) ;
386+ }
387+
388+ [ Test ]
389+ public void Triggers_lower_priority_when_valid ( ) {
390+ var sequence = new Sequence ( ) ;
391+ sequence . AbortType |= AbortType . Self ;
392+ sequence . AbortType |= AbortType . LowerPriority ;
393+
394+ var sequenceSub = new Sequence ( ) ;
395+ sequenceSub . AbortType = AbortType . LowerPriority ;
396+ sequence . AddChild ( sequenceSub ) ;
397+
398+ var condition = A . TaskStub ( )
399+ . WithAbortConditionSelf ( true )
400+ . Build ( ) ;
401+ sequenceSub . AddChild ( condition ) ;
402+
403+ var action = A . TaskStub ( )
404+ . WithUpdateStatus ( TaskStatus . Continue )
405+ . Build ( ) ;
406+ sequence . AddChild ( action ) ;
407+
408+ Assert . AreEqual ( TaskStatus . Continue , sequence . Update ( ) ) ;
409+
410+ condition . Update ( ) . Returns ( TaskStatus . Failure ) ;
411+
412+ Assert . AreEqual ( TaskStatus . Failure , sequence . Update ( ) ) ;
413+ }
414+ }
364415 }
365416
366417 public class ResetMethod : TaskSequenceTest {
0 commit comments