?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. #include "UnitTest++/UnitTestPP.h"
  2. #include "UnitTest++/TimeHelpers.h"
  3.  
  4. #include "RecordingReporter.h"
  5. #include "ScopedCurrentTest.h"
  6.  
  7. namespace {
  8.  
  9.    TEST(TimeConstraintMacroQualifiesNamespace)
  10.    {
  11.       // If this compiles without a "using namespace UnitTest;", all is well.
  12.       UNITTEST_TIME_CONSTRAINT(1);
  13.    }
  14.  
  15.    TEST(TimeConstraintMacroUsesCorrectInfo)
  16.    {
  17.       int testLine = 0;
  18.       RecordingReporter reporter;
  19.  
  20.       {
  21.          UnitTest::TestResults testResults(&reporter);
  22.          ScopedCurrentTest scopedResults(testResults);
  23.  
  24.          UNITTEST_TIME_CONSTRAINT(10);  testLine = __LINE__;
  25.          UnitTest::TimeHelpers::SleepMs(20);
  26.       }
  27.  
  28.       using namespace std;
  29.  
  30.       CHECK_EQUAL(1, reporter.testFailedCount);
  31.       CHECK(strstr(reporter.lastFailedFile, __FILE__));
  32.       CHECK_EQUAL(testLine, reporter.lastFailedLine);
  33.       CHECK(strstr(reporter.lastFailedTest, "TimeConstraintMacroUsesCorrectInfo"));
  34.    }
  35.  
  36.    TEST(TimeConstraintMacroComparesAgainstPreciseActual)
  37.    {
  38.       int testLine = 0;
  39.       RecordingReporter reporter;
  40.  
  41.       {
  42.          UnitTest::TestResults testResults(&reporter);
  43.          ScopedCurrentTest scopedResults(testResults);
  44.  
  45.          UNITTEST_TIME_CONSTRAINT(1);  testLine = __LINE__;
  46.  
  47.          // start a new timer and run until we're as little over the 1 msec
  48.          // threshold as we can achieve; this should guarantee that the "test"
  49.          // runs in some very small amount of time > 1 msec
  50.          UnitTest::Timer myTimer;
  51.          myTimer.Start();
  52.  
  53.          while (myTimer.GetTimeInMs() < 1.001)
  54.             UnitTest::TimeHelpers::SleepMs(0);
  55.       }
  56.  
  57.       using namespace std;
  58.  
  59.       CHECK_EQUAL(1, reporter.testFailedCount);
  60.       CHECK(strstr(reporter.lastFailedFile, __FILE__));
  61.       CHECK_EQUAL(testLine, reporter.lastFailedLine);
  62.       CHECK(strstr(reporter.lastFailedTest, "TimeConstraintMacroComparesAgainstPreciseActual"));
  63.    }
  64.  
  65.    struct EmptyFixture {};
  66.  
  67.    TEST_FIXTURE(EmptyFixture, TimeConstraintMacroWorksInFixtures)
  68.    {
  69.       int testLine = 0;
  70.       RecordingReporter reporter;
  71.  
  72.       {
  73.          UnitTest::TestResults testResults(&reporter);
  74.          ScopedCurrentTest scopedResults(testResults);
  75.  
  76.          UNITTEST_TIME_CONSTRAINT(10);  testLine = __LINE__;
  77.          UnitTest::TimeHelpers::SleepMs(20);
  78.       }
  79.  
  80.       using namespace std;
  81.  
  82.       CHECK_EQUAL(1, reporter.testFailedCount);
  83.       CHECK(strstr(reporter.lastFailedFile, __FILE__));
  84.       CHECK_EQUAL(testLine, reporter.lastFailedLine);
  85.       CHECK(strstr(reporter.lastFailedTest, "TimeConstraintMacroWorksInFixtures"));
  86.    }
  87.  
  88. }
  89.