forked from cpputest/cpputest.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_utest_macros_8h_source.html
More file actions
310 lines (308 loc) · 38.1 KB
/
_utest_macros_8h_source.html
File metadata and controls
310 lines (308 loc) · 38.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>CppUTest Documentation: include/CppUTest/UtestMacros.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">CppUTest Documentation
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_53c566fdc3e5a6aa083c9b65caf1b73f.html">CppUTest</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">UtestMacros.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * All rights reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * * Redistributions of source code must retain the above copyright</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * * Redistributions in binary form must reproduce the above copyright</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * documentation and/or other materials provided with the distribution.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * * Neither the name of the <organization> nor the</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * names of its contributors may be used to endorse or promote products</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * derived from this software without specific prior written permission.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifndef D_UTestMacros_h</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"></span><span class="preprocessor">#define D_UTestMacros_h</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define TEST_GROUP_BASE(testGroup, baseclass) \</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> extern int externTestGroup##testGroup; \</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"> int externTestGroup##testGroup = 0; \</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor"> struct TEST_GROUP_##CppUTestGroup##testGroup : public baseclass</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#define TEST_BASE(testBaseClass) \</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"> struct testBaseClass : public Utest</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#define TEST_GROUP(testGroup) \</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor"> TEST_GROUP_BASE(testGroup, Utest)</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#define TEST_SETUP() \</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"> virtual void setup()</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#define TEST_TEARDOWN() \</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor"> virtual void teardown()</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define TEST(testGroup, testName) \</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor"> </span><span class="comment">/* External declarations for strict compilers */</span><span class="preprocessor"> \</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"> class TEST_##testGroup##_##testName##_TestShell; \</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"> extern TEST_##testGroup##_##testName##_TestShell TEST_##testGroup##_##testName##_TestShell_instance; \</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"> \</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"> class TEST_##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">{ public: TEST_##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"> void testBody(); }; \</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> class TEST_##testGroup##_##testName##_TestShell : public UtestShell { \</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"> virtual Utest* createTest() { return new TEST_##testGroup##_##testName##_Test; } \</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> } TEST_##testGroup##_##testName##_TestShell_instance; \</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"> static TestInstaller TEST_##testGroup##_##testName##_Installer(TEST_##testGroup##_##testName##_TestShell_instance, #testGroup, #testName, __FILE__,__LINE__); \</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"> void TEST_##testGroup##_##testName##_Test::testBody()</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define IGNORE_TEST(testGroup, testName)\</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> </span><span class="comment">/* External declarations for strict compilers */</span><span class="preprocessor"> \</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> class IGNORE##testGroup##_##testName##_TestShell; \</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"> extern IGNORE##testGroup##_##testName##_TestShell IGNORE##testGroup##_##testName##_TestShell_instance; \</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"> \</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"> class IGNORE##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">{ public: IGNORE##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> public: void testBodyThatNeverRuns (); }; \</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor"> class IGNORE##testGroup##_##testName##_TestShell : public IgnoredUtestShell { \</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor"> virtual Utest* createTest() { return new IGNORE##testGroup##_##testName##_Test; } \</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"> } IGNORE##testGroup##_##testName##_TestShell_instance; \</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"> static TestInstaller TEST_##testGroup##testName##_Installer(IGNORE##testGroup##_##testName##_TestShell_instance, #testGroup, #testName, __FILE__,__LINE__); \</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> void IGNORE##testGroup##_##testName##_Test::testBodyThatNeverRuns ()</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#define IMPORT_TEST_GROUP(testGroup) \</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"> extern int externTestGroup##testGroup;\</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"> extern int* p##testGroup; \</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"> int* p##testGroup = &externTestGroup##testGroup</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// Different checking macros</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#define CHECK(condition)\</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"> CHECK_LOCATION_TRUE(condition, "CHECK", #condition, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#define CHECK_TEXT(condition, text) \</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor"> CHECK_LOCATION_TEXT(condition, "CHECK", #condition, text, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#define CHECK_TRUE(condition)\</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor"> CHECK_LOCATION_TRUE(condition, "CHECK_TRUE", #condition, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#define CHECK_FALSE(condition)\</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor"> CHECK_LOCATION_FALSE(condition, "CHECK_FALSE", #condition, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define CHECK_LOCATION_TEXT(condition, checkString, conditionString, text, file, line) \</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertTrueText((condition) != 0, checkString, conditionString, text, file, line); }</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#define CHECK_LOCATION_TRUE(condition, checkString, conditionString, file, line)\</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertTrue((condition) != 0, checkString, conditionString, file, line); }</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define CHECK_LOCATION_FALSE(condition, checkString, conditionString, file, line)\</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertTrue((condition) == 0, checkString, conditionString, file, line); }</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">//This check needs the operator!=(), and a StringFrom(YourType) function</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#define CHECK_EQUAL(expected,actual)\</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor"> CHECK_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#define CHECK_EQUAL_LOCATION(expected,actual, file, line)\</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor"> if ((expected) != (actual))\</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor"> {\</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor"> UtestShell::getTestResult()->countCheck();\</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor"> CheckEqualFailure _f(UtestShell::getCurrent(), file, line, StringFrom(expected), StringFrom(actual)); \</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor"> UtestShell::getTestResult()->addFailure(_f);\</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor"> UtestShell::getCurrent()->exitCurrentTest(); \</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor"> }\</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor"> else\</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"> UtestShell::getTestResult()->countCheck();</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">//This check checks for char* string equality using strcmp.</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">//This makes up for the fact that CHECK_EQUAL only compares the pointers to char*'s</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define STRCMP_EQUAL(expected,actual)\</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor"> STRCMP_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#define STRCMP_EQUAL_LOCATION(expected,actual, file, line)\</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertCstrEqual(expected, actual, file, line); }</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#define STRCMP_NOCASE_EQUAL(expected,actual)\</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor"> STRCMP_NOCASE_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define STRCMP_NOCASE_EQUAL_LOCATION(expected,actual, file, line)\</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertCstrNoCaseEqual(expected, actual, file, line); }</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define STRCMP_CONTAINS(expected,actual)\</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor"> STRCMP_CONTAINS_LOCATION(expected, actual, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#define STRCMP_CONTAINS_LOCATION(expected,actual, file, line)\</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertCstrContains(expected, actual, file, line); }</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#define STRCMP_NOCASE_CONTAINS(expected,actual)\</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor"> STRCMP_NOCASE_CONTAINS_LOCATION(expected, actual, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#define STRCMP_NOCASE_CONTAINS_LOCATION(expected,actual, file, line)\</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertCstrNoCaseContains(expected, actual, file, line); }</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">//Check two long integers for equality</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#define LONGS_EQUAL(expected,actual)\</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor"> LONGS_EQUAL_LOCATION(expected,actual,__FILE__, __LINE__)</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define LONGS_EQUAL_LOCATION(expected,actual,file,line)\</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertLongsEqual((long)expected, (long)actual, file, line); }</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#define BYTES_EQUAL(expected, actual)\</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor"> LONGS_EQUAL((expected) & 0xff,(actual) & 0xff)</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define POINTERS_EQUAL(expected, actual)\</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"> POINTERS_EQUAL_LOCATION((expected),(actual), __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#define POINTERS_EQUAL_LOCATION(expected,actual,file,line)\</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertPointersEqual((void *)expected, (void *)actual, file, line); }</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment">//Check two doubles for equality within a tolerance threshold</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#define DOUBLES_EQUAL(expected,actual,threshold)\</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"> DOUBLES_EQUAL_LOCATION(expected,actual,threshold,__FILE__,__LINE__)</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define DOUBLES_EQUAL_LOCATION(expected,actual,threshold,file,line)\</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor"> { UtestShell::getCurrent()->assertDoublesEqual(expected, actual, threshold, file, line); }</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">//Fail if you get to this macro</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">//The macro FAIL may already be taken, so allow FAIL_TEST too</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#ifndef FAIL</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor"></span><span class="preprocessor">#define FAIL(text)\</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor"> FAIL_LOCATION(text, __FILE__,__LINE__)</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#define FAIL_LOCATION(text, file, line)\</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor"> { UtestShell::getCurrent()->fail(text, file, line); }</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#define FAIL_TEST(text)\</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor"> FAIL_TEST_LOCATION(text, __FILE__,__LINE__)</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#define FAIL_TEST_LOCATION(text, file,line)\</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor"> { UtestShell::getCurrent()->fail(text, file, line); }</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#define UT_PRINT_LOCATION(text, file, line) \</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor"> { UtestShell::getCurrent()->print(text, file, line); }</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#define UT_PRINT(text) \</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor"> UT_PRINT_LOCATION(text, __FILE__, __LINE__)</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#if CPPUTEST_USE_STD_CPP_LIB</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor"></span><span class="preprocessor">#define CHECK_THROWS(expected, expression) \</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor"> SimpleString msg("expected to throw "#expected "\nbut threw nothing"); \</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor"> bool caught_expected = false; \</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor"> try { \</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> (expression); \</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor"> } catch(const expected &) { \</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"> caught_expected = true; \</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor"> } catch(...) { \</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor"> msg = "expected to throw " #expected "\nbut threw a different type"; \</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor"> if (!caught_expected) { \</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor"> UtestShell::getCurrent()->fail(msg.asCharString(), __FILE__, __LINE__); \</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> }</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* CPPUTEST_USE_STD_CPP_LIB */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor">#define UT_CRASH() { UtestShell::crash(); }</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor"></span><span class="preprocessor">#define RUN_ALL_TESTS(ac, av) CommandLineTestRunner::RunAllTests(ac, av)</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor"></span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#endif </span><span class="comment">/*D_UTestMacros_h*/</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Apr 24 2013 12:22:06 for CppUTest Documentation by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>