/// <summary>
 /// Creates a test actions object initially configured with empty action chains
 /// that do nothing.
 /// </summary>
 public PatternTestActions()
 {
     beforeTestChain = new ActionChain<PatternTestState>();
     initializeTestChain = new ActionChain<PatternTestState>();
     disposeTestChain = new ActionChain<PatternTestState>();
     afterTestChain = new ActionChain<PatternTestState>();
     decorateTestInstanceChain = new ActionChain<PatternTestState, PatternTestInstanceActions>();
 }
 /// <summary>
 /// Creates a test instance actions object initially configured with empty action chains
 /// that do nothing.
 /// </summary>
 public PatternTestInstanceActions()
 {
     beforeTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     initializeTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     setUpTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     executeTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     tearDownTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     disposeTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     afterTestInstanceChain = new ActionChain<PatternTestInstanceState>();
     decorateChildTestChain = new ActionChain<PatternTestInstanceState, PatternTestActions>();
     runTestInstanceBodyChain = new FuncChain<PatternTestInstanceState, TestOutcome>(DefaultRunTestInstanceBodyFunc);
 }
 private void AddDecorator(ActionChain<PatternTestInstanceState> chain)
 {
     chain.Around(delegate(PatternTestInstanceState childState, Action<PatternTestInstanceState> inner)
     {
         TestShell.RunGuarded(delegate
         {
             using (ReadLockCookie.Create())
             {
                 inner(childState);
             }
         });
     });
 }
 public void SetUp()
 {
     chain = new ActionChain<string, int>();
     trace = new List<string>();
 }
 /// <summary>
 /// Creates a test parameter actions object initially configured with empty action chains
 /// that do nothing.
 /// </summary>
 public PatternTestParameterActions()
 {
     bindTestParameterChain = new ActionChain<PatternTestInstanceState, object>();
     unbindTestParameterChain = new ActionChain<PatternTestInstanceState, object>();
 }
 private void WrapDefaultAction(ActionChain<PatternTestInstanceState> chain, Action<PatternTestInstanceState> decoratorAction)
 {
     chain.Around((testInstanceState, decoratedAction) =>
     {
         try
         {
             testInstanceState.Data.SetValue(defaultActionKey, decoratedAction);
             decoratorAction(testInstanceState);
         }
         finally
         {
             testInstanceState.Data.RemoveValue(defaultActionKey);
         }
     });
 }
 public State(ActionChain teardown)
 {
     this.teardown = teardown;
 }