summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/tests/TestTimeConstraintMacro.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/unittest-cpp/tests/TestTimeConstraintMacro.cpp')
-rw-r--r--3rdparty/unittest-cpp/tests/TestTimeConstraintMacro.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/tests/TestTimeConstraintMacro.cpp b/3rdparty/unittest-cpp/tests/TestTimeConstraintMacro.cpp
new file mode 100644
index 00000000000..3caf15dbd86
--- /dev/null
+++ b/3rdparty/unittest-cpp/tests/TestTimeConstraintMacro.cpp
@@ -0,0 +1,88 @@
+#include "UnitTest++/UnitTestPP.h"
+#include "UnitTest++/TimeHelpers.h"
+
+#include "RecordingReporter.h"
+#include "ScopedCurrentTest.h"
+
+namespace {
+
+TEST(TimeConstraintMacroQualifiesNamespace)
+{
+ // If this compiles without a "using namespace UnitTest;", all is well.
+ UNITTEST_TIME_CONSTRAINT(1);
+}
+
+TEST(TimeConstraintMacroUsesCorrectInfo)
+{
+ int testLine = 0;
+ RecordingReporter reporter;
+
+ {
+ UnitTest::TestResults testResults(&reporter);
+ ScopedCurrentTest scopedResults(testResults);
+
+ UNITTEST_TIME_CONSTRAINT(10); testLine = __LINE__;
+ UnitTest::TimeHelpers::SleepMs(20);
+ }
+
+ using namespace std;
+
+ CHECK_EQUAL(1, reporter.testFailedCount);
+ CHECK(strstr(reporter.lastFailedFile, __FILE__));
+ CHECK_EQUAL(testLine, reporter.lastFailedLine);
+ CHECK(strstr(reporter.lastFailedTest, "TimeConstraintMacroUsesCorrectInfo"));
+}
+
+TEST(TimeConstraintMacroComparesAgainstPreciseActual)
+{
+ int testLine = 0;
+ RecordingReporter reporter;
+
+ {
+ UnitTest::TestResults testResults(&reporter);
+ ScopedCurrentTest scopedResults(testResults);
+
+ UNITTEST_TIME_CONSTRAINT(1); testLine = __LINE__;
+
+ // start a new timer and run until we're as little over the 1 msec
+ // threshold as we can achieve; this should guarantee that the "test"
+ // runs in some very small amount of time > 1 msec
+ UnitTest::Timer myTimer;
+ myTimer.Start();
+
+ while (myTimer.GetTimeInMs() < 1.001)
+ UnitTest::TimeHelpers::SleepMs(0);
+ }
+
+ using namespace std;
+
+ CHECK_EQUAL(1, reporter.testFailedCount);
+ CHECK(strstr(reporter.lastFailedFile, __FILE__));
+ CHECK_EQUAL(testLine, reporter.lastFailedLine);
+ CHECK(strstr(reporter.lastFailedTest, "TimeConstraintMacroComparesAgainstPreciseActual"));
+}
+
+struct EmptyFixture {};
+
+TEST_FIXTURE(EmptyFixture, TimeConstraintMacroWorksInFixtures)
+{
+ int testLine = 0;
+ RecordingReporter reporter;
+
+ {
+ UnitTest::TestResults testResults(&reporter);
+ ScopedCurrentTest scopedResults(testResults);
+
+ UNITTEST_TIME_CONSTRAINT(10); testLine = __LINE__;
+ UnitTest::TimeHelpers::SleepMs(20);
+ }
+
+ using namespace std;
+
+ CHECK_EQUAL(1, reporter.testFailedCount);
+ CHECK(strstr(reporter.lastFailedFile, __FILE__));
+ CHECK_EQUAL(testLine, reporter.lastFailedLine);
+ CHECK(strstr(reporter.lastFailedTest, "TimeConstraintMacroWorksInFixtures"));
+}
+
+}