1 #include "../UnitTest++.h"
2 #include "../TestResults.h"
3 #include "../TimeHelpers.h"
4 #include "RecordingReporter.h"
5 #include "ScopedCurrentTest.h"
6
7 using namespace UnitTest;
8
9 namespace
10 {
11
TEST(TimeConstraintSucceedsWithFastTest)12 TEST(TimeConstraintSucceedsWithFastTest)
13 {
14 TestResults result;
15 {
16 ScopedCurrentTest scopedResult(result);
17 TimeConstraint t(200, TestDetails("", "", "", 0));
18 TimeHelpers::SleepMs(5);
19 }
20 CHECK_EQUAL(0, result.GetFailureCount());
21 }
22
TEST(TimeConstraintFailsWithSlowTest)23 TEST(TimeConstraintFailsWithSlowTest)
24 {
25 TestResults result;
26 {
27 ScopedCurrentTest scopedResult(result);
28 TimeConstraint t(10, TestDetails("", "", "", 0));
29 TimeHelpers::SleepMs(20);
30 }
31 CHECK_EQUAL(1, result.GetFailureCount());
32 }
33
TEST(TimeConstraintFailureIncludesCorrectData)34 TEST(TimeConstraintFailureIncludesCorrectData)
35 {
36 RecordingReporter reporter;
37 TestResults result(&reporter);
38 {
39 ScopedCurrentTest scopedResult(result);
40
41 TestDetails const details("testname", "suitename", "filename", 10);
42 TimeConstraint t(10, details);
43 TimeHelpers::SleepMs(20);
44 }
45
46 using namespace std;
47
48 CHECK(strstr(reporter.lastFailedFile, "filename"));
49 CHECK_EQUAL(10, reporter.lastFailedLine);
50 CHECK(strstr(reporter.lastFailedTest, "testname"));
51 }
52
TEST(TimeConstraintFailureIncludesTimeoutInformation)53 TEST(TimeConstraintFailureIncludesTimeoutInformation)
54 {
55 RecordingReporter reporter;
56 TestResults result(&reporter);
57 {
58 ScopedCurrentTest scopedResult(result);
59 TimeConstraint t(10, TestDetails("", "", "", 0));
60 TimeHelpers::SleepMs(20);
61 }
62
63 using namespace std;
64
65 CHECK(strstr(reporter.lastFailedMessage, "ime constraint"));
66 CHECK(strstr(reporter.lastFailedMessage, "under 10ms"));
67 }
68
69 }
70