7 * TODO: Copyright, license...
8 * TODO: Udelat to tak, aby se vse vypisovalo za behu a nemuselo se cekat
9 * na dobehnuti celeho testu
11 * TODO: TestSuite a to i takova, ktera muze obsahovat TestSuity
13 * TODO: Dopsat vsechny aserce
17 * Struct describing error message.
19 struct t_error_message
{
26 * Struct describing state after run test.
29 std::string test_name
;
33 std::vector
<t_error_message
> error_messages
;
35 inline void clean(void){assertations
=0;fails
=0;successes
=0;error_messages
.clear();}
50 * Name of current test case
55 * List of states of all ran tests.
57 std::vector
<t_test_state
> tests_states
;
60 * State of currently running test.
61 * This struct must be empty before running next test method.
63 t_test_state current_test
;
66 void prepareTest(std::string test_name
);
67 void finishTest(void);
69 void recordSuccessAssertation(void);
70 void recordFailAssertation(std::string file
, int line
,
71 std::string error_message
);
74 explicit TestCase(std::string n
) : fails(0), successes(0), name(n
){}
76 virtual void setUp(void){}
77 virtual void tearDown(void){}
80 * Method describing tests.
81 * This must be redeclared in extended class.
83 virtual void run_tests() = 0;
86 * This run the test case.
87 * Returns number of failed tests or 255 (lesser number)
92 int numTests(){return tests
;}
93 int numFails(void){return fails
;}
94 int numSuccesses(void){return successes
;}
99 /***** TestCase MACROS *****/
100 #define assertEquals(a,b) \
102 recordSuccessAssertation(); \
104 recordFailAssertation(__FILE__, __LINE__, #a " not equals " #b); \
106 #define assertEqualsM(a,b,message) \
108 recordSuccessAssertation(); \
110 recordFailAssertation(__FILE__, __LINE__, message); \
113 #define assertNotEquals(a,b) \
115 recordSuccessAssertation(); \
117 recordFailAssertation(__FILE__, __LINE__, #a " equals " #b); \
119 #define assertNotEqualsM(a,b,message) \
121 recordSuccessAssertation(); \
123 recordFailAssertation(__FILE__, __LINE__, message); \
128 /* vim: set sw=4 ts=4 et ft=cpp tw=75 cindent: */