Mercurial > sdl-ios-xcode
comparison test/automated/SDL_at.h @ 3259:22ac66da0765
Merged Edgar's code changes from Google Summer of Code 2009
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 07 Sep 2009 05:06:34 +0000 |
parents | |
children | 78db4f7ae2f3 |
comparison
equal
deleted
inserted
replaced
3258:e786366ea23b | 3259:22ac66da0765 |
---|---|
1 /* | |
2 * Common code for automated test suite. | |
3 * | |
4 * Written by Edgar Simo "bobbens" | |
5 * | |
6 * Released under Public Domain. | |
7 */ | |
8 | |
9 | |
10 /** | |
11 * @file SDL_at.h | |
12 * | |
13 * @brief Handles automatic testing functionality. | |
14 * | |
15 * The basic approach with SDL_AT is to divide the tests into what are called | |
16 * test suites and test cases. Each test suite should have multiple test | |
17 * cases, each test case can have multiple asserts. | |
18 * | |
19 * To actually test for conditions within the testcase you check asserts, if | |
20 * the asserts fail the failures will be logged in the testsuite and | |
21 * displayed. | |
22 * | |
23 * Syntax is similar to OpenGL. An example would be: | |
24 * | |
25 * @code | |
26 * int f; // Number failed | |
27 * SDL_ATinit( "My testsuite" ); | |
28 * | |
29 * SDL_ATbegin( "My first testcase" ); | |
30 * if (!SDL_ATassert( (1+1)==2, "Trying '1+1=2'.")) | |
31 * return; // Implicitly calls SDL_ATend if assert fails | |
32 * SDL_ATend(); // Finish testcase | |
33 * | |
34 * SDL_ATbegin( "My second testcase" ); | |
35 * if (!SDL_ATassert( (4/2)==2, "Trying '4/2=2'.")) | |
36 * return; // Implicitly calls SDL_ATend if assert fails | |
37 * SDL_ATend(); // Finish testcase | |
38 * | |
39 * f = SDL_ATfinish(); | |
40 * @endcode | |
41 * | |
42 * @author Edgar Simo "bobbens" | |
43 */ | |
44 | |
45 | |
46 #ifndef _SDL_AT_H | |
47 # define _SDL_AT_H | |
48 | |
49 | |
50 | |
51 enum { | |
52 SDL_AT_VERBOSE, /**< Sets the verbose level. */ | |
53 SDL_AT_QUIET /**< Sets quietness. */ | |
54 }; | |
55 | |
56 | |
57 /* | |
58 * Suite level actions. | |
59 */ | |
60 /** | |
61 * @brief Starts the testsuite. | |
62 * | |
63 * @param suite Name of the suite to start testing. | |
64 */ | |
65 void SDL_ATinit( const char *suite ); | |
66 /** | |
67 * @brief Finishes the testsuite printing out global results if verbose. | |
68 * | |
69 * @return 0 if no errors occurred, otherwise number of failures. | |
70 */ | |
71 int SDL_ATfinish (void); | |
72 /** | |
73 * @brief Sets a global property value. | |
74 * | |
75 * @param property Property to set. | |
76 * @param value Value to set property to. | |
77 */ | |
78 void SDL_ATseti( int property, int value ); | |
79 /** | |
80 * @brief Gets a global property value. | |
81 * | |
82 * @param property Property to get. | |
83 * @param[out] value Value of the property. | |
84 */ | |
85 void SDL_ATgeti( int property, int *value ); | |
86 | |
87 | |
88 /* | |
89 * Testcase level actions. | |
90 */ | |
91 /** | |
92 * @brief Begins a testcase. | |
93 * | |
94 * @param testcase Name of the testcase to begin. | |
95 */ | |
96 void SDL_ATbegin( const char *testcase ); | |
97 /** | |
98 * @brief Checks a condition in the testcase. | |
99 * | |
100 * Will automatically call SDL_ATend if the condition isn't met. | |
101 * | |
102 * @param condition Condition to make sure is true. | |
103 * @param msg Message to display for failure. | |
104 * @return Returns 1 if the condition isn't met. | |
105 */ | |
106 int SDL_ATassert( const char *msg, int condition ); | |
107 /** | |
108 * @brief Checks a condition in the testcase. | |
109 * | |
110 * Will automatically call SDL_ATend if the condition isn't met. | |
111 * | |
112 * @param condition Condition to make sure is true. | |
113 * @param msg Message to display for failure with printf style formatting. | |
114 * @return Returns 1 if the condition isn't met. | |
115 */ | |
116 int SDL_ATvassert( int condition, const char *msg, ... ); | |
117 /** | |
118 * @brief Ends a testcase. | |
119 */ | |
120 void SDL_ATend (void); | |
121 | |
122 | |
123 /* | |
124 * Misc functions. | |
125 */ | |
126 /** | |
127 * @brief Prints an error. | |
128 * | |
129 * @param msg printf formatted string to display. | |
130 * @return Number of character printed. | |
131 */ | |
132 int SDL_ATprintErr( const char *msg, ... ); | |
133 /** | |
134 * @brief Prints some text. | |
135 * | |
136 * @param msg printf formatted string to display. | |
137 * @return Number of character printed. | |
138 */ | |
139 #define SDL_ATprint(msg, args...) \ | |
140 SDL_ATprintVerbose( 0, msg, ## args) | |
141 /** | |
142 * @brief Prints some verbose text. | |
143 * | |
144 * Verbosity levels are as follows: | |
145 * | |
146 * - 0 standard stdout, enabled by default | |
147 * - 1 additional information | |
148 * - 2 detailed information (spammy) | |
149 * | |
150 * @param level Level of verbosity to print at. | |
151 * @param msg printf formatted string to display. | |
152 * @return Number of character printed. | |
153 */ | |
154 int SDL_ATprintVerbose( int level, const char *msg, ... ); | |
155 | |
156 | |
157 #endif /* _SDL_AT_H */ | |
158 | |
159 |