#ifndef UNITTEST_TIMECONSTRAINT_H
 
#define UNITTEST_TIMECONSTRAINT_H
 
 
 
#include "TimeHelpers.h"
 
#include "HelperMacros.h"
 
#include "TestDetails.h"
 
 
 
namespace UnitTest {
 
 
 
   class TestResults;
 
 
 
   class UNITTEST_LINKAGE TimeConstraint
 
   {
 
   public:
 
      TimeConstraint(int ms, TestDetails const& details, int lineNumber);
 
      ~TimeConstraint();
 
 
 
   private:
 
      void operator=(TimeConstraint const&);
 
      TimeConstraint(TimeConstraint const&);
 
 
 
      Timer m_timer;
 
      TestDetails const m_details;
 
      int const m_maxMs;
 
   };
 
 
 
   #define UNITTEST_TIME_CONSTRAINT(ms) \
 
      UnitTest::TimeConstraint unitTest__timeConstraint__(ms, m_details, __LINE__)
 
 
 
   #define UNITTEST_TIME_CONSTRAINT_EXEMPT() \
 
      UNITTEST_MULTILINE_MACRO_BEGIN         \
 
      m_details.timeConstraintExempt = true; \
 
      UNITTEST_MULTILINE_MACRO_END
 
 
 
}
 
 
 
#endif