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