anchor.diff:      procedure TestRemoveTransition;
     end;
   
  +  TestTThreadFiniteStateMachine = class(TestTFiniteStateMachine)
  +  public
  +    procedure SetUp; override;
  +  end;
  +
   implementation
   
   uses
  
positive.code:           (ID: 1; Flag: False),
            (ID: 2; Flag: True)
          );
    strict private
      FFiniteStateMachine: IFiniteStateMachine;
    private
      FEnterStateCalled,
      FExitStateCalled : Boolean;
  
      procedure OnEnterState(const PreviousState, CurrentState : TStateType; const UsedCommand : TCommandType);
      procedure OnExitState(const CurrentState, NewState : TStateType; const UsedCommand : TCommandType);
    public
      procedure SetUp; override;
      procedure TearDown; override;
  
negative.code:   Result := THashBobJenkins.GetHashValue(Value, SizeOf(Value));
  end;
  
  { TestTThreadFiniteStateMachine }
  
  procedure TestTThreadFiniteStateMachine.SetUp;
  begin
    FFiniteStateMachine := TThreadFiniteStateMachine<
      TestTFiniteStateMachine.TStateType,
      TestTFiniteStateMachine.TCommandType,
      TestTFiniteStateMachine.ETestException
    >.Create;
  end;
  
  initialization
    // Register any test cases with the test runner
    RegisterTest(TestTFiniteStateMachine.Suite);
    RegisterTest(TestTThreadFiniteStateMachine.Suite);
  end.
  