summaryrefslogtreecommitdiff
path: root/docs/html/data_tests_8cpp_source.html
blob: 163697e02ab3286bd13e3bdbaf20146a6c2c96a5 (plain)
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
<!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"/>
<title>Rally X: tests/dataTests.cpp Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  <td id="projectlogo"><img alt="Logo" src="car.PNG"/></td>
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Rally X
   
   </div>
   <div id="projectbrief">ELEN3009 Project by Justin Wernick and David Schneider</div>
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.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&#160;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&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">tests/dataTests.cpp</div>  </div>
</div>
<div class="contents">
<a href="data_tests_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;cstdio&gt;</span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;fstream&gt;</span>
<a name="l00019"></a>00019 <span class="keyword">using namespace </span>std;
<a name="l00020"></a>00020 
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;gtest/gtest.h&gt;</span>
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 <span class="preprocessor">#include &quot;../source/data/Config.h&quot;</span>
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;../source/data/LevelReader.h&quot;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;../source/logic/PlayerCar.h&quot;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;../source/logic/EnemyCar.h&quot;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;../source/logic/Checkpoint.h&quot;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &quot;../source/logic/Rock.h&quot;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &quot;../source/logic/Smokescreen.h&quot;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &quot;../source/logic/Maze.h&quot;</span>
<a name="l00031"></a>00031 
<a name="l00035"></a><a class="code" href="data_tests_8cpp.html#a7612e068db66f415f3b230260450eba8">00035</a> <a class="code" href="data_tests_8cpp.html#a7612e068db66f415f3b230260450eba8" title="Tests that a normal complete config file can be read.">TEST</a>(<a class="code" href="class_config.html" title="Object for handling user settings loaded from a file.">Config</a>, readsSettingsCorrectly)
<a name="l00036"></a>00036 {
<a name="l00037"></a>00037     <span class="keywordtype">string</span> testFilepath = <span class="stringliteral">&quot;testConfig.txt&quot;</span>;
<a name="l00038"></a>00038     ofstream testFile(testFilepath.c_str());
<a name="l00039"></a>00039 
<a name="l00040"></a>00040     testFile &lt;&lt; <span class="stringliteral">&quot;screen_width=123&quot;</span> &lt;&lt; endl;
<a name="l00041"></a>00041     testFile &lt;&lt; <span class="stringliteral">&quot;screen_height=345&quot;</span> &lt;&lt; endl;
<a name="l00042"></a>00042     testFile &lt;&lt; <span class="stringliteral">&quot;fullscreen=true&quot;</span> &lt;&lt; endl;
<a name="l00043"></a>00043 
<a name="l00044"></a>00044     testFile.close();
<a name="l00045"></a>00045 
<a name="l00046"></a>00046     <a class="code" href="class_config.html" title="Object for handling user settings loaded from a file.">Config</a> testConfig(testFilepath);
<a name="l00047"></a>00047 
<a name="l00048"></a>00048     EXPECT_EQ((<span class="keywordtype">unsigned</span>)(123), testConfig.<a class="code" href="class_config.html#a3bb73797396d2d5ba8c9956730dfc4db" title="Function for accessing the screen width setting in pixels.">screenWidth</a>());
<a name="l00049"></a>00049     EXPECT_EQ((<span class="keywordtype">unsigned</span>)(345), testConfig.<a class="code" href="class_config.html#a53d63c52aa51b5231b9ea8e412086773" title="Function for accessing the screen height setting in pixels.">screenHeight</a>());
<a name="l00050"></a>00050     EXPECT_TRUE(testConfig.<a class="code" href="class_config.html#a8a401add779f2b74732ade9e515bf0cd" title="Function for accessing whether the game should be displayed in fullscreen or windowed mode...">fullscreen</a>());
<a name="l00051"></a>00051 
<a name="l00052"></a>00052     <span class="keyword">remove</span>(testFilepath.c_str());
<a name="l00053"></a>00053 }
<a name="l00054"></a>00054 
<a name="l00058"></a><a class="code" href="data_tests_8cpp.html#a2159abeac0546de95bbdd68b1e10c56c">00058</a> <a class="code" href="data_tests_8cpp.html#a7612e068db66f415f3b230260450eba8" title="Tests that a normal complete config file can be read.">TEST</a>(<a class="code" href="class_config.html" title="Object for handling user settings loaded from a file.">Config</a>, createsFileIfNeeded)
<a name="l00059"></a>00059 {
<a name="l00060"></a>00060     <span class="keywordtype">string</span> testFilepath = <span class="stringliteral">&quot;testConfig.txt&quot;</span>;
<a name="l00061"></a>00061     <a class="code" href="class_config.html" title="Object for handling user settings loaded from a file.">Config</a> testConfig(testFilepath);
<a name="l00062"></a>00062 
<a name="l00063"></a>00063     ifstream testFile(testFilepath.c_str());
<a name="l00064"></a>00064     EXPECT_TRUE(testFile);
<a name="l00065"></a>00065     testFile.close();
<a name="l00066"></a>00066 
<a name="l00067"></a>00067     <span class="comment">//test for default values</span>
<a name="l00068"></a>00068     EXPECT_EQ((<span class="keywordtype">unsigned</span>)(800), testConfig.<a class="code" href="class_config.html#a3bb73797396d2d5ba8c9956730dfc4db" title="Function for accessing the screen width setting in pixels.">screenWidth</a>());
<a name="l00069"></a>00069     EXPECT_EQ((<span class="keywordtype">unsigned</span>)(600), testConfig.<a class="code" href="class_config.html#a53d63c52aa51b5231b9ea8e412086773" title="Function for accessing the screen height setting in pixels.">screenHeight</a>());
<a name="l00070"></a>00070     EXPECT_FALSE(testConfig.<a class="code" href="class_config.html#a8a401add779f2b74732ade9e515bf0cd" title="Function for accessing whether the game should be displayed in fullscreen or windowed mode...">fullscreen</a>());
<a name="l00071"></a>00071 
<a name="l00072"></a>00072     <span class="keyword">remove</span>(testFilepath.c_str());
<a name="l00073"></a>00073 }
<a name="l00074"></a>00074 
<a name="l00078"></a><a class="code" href="data_tests_8cpp.html#a49403434f62b3318444eff742d2b2231">00078</a> <a class="code" href="data_tests_8cpp.html#a7612e068db66f415f3b230260450eba8" title="Tests that a normal complete config file can be read.">TEST</a>(<a class="code" href="class_config.html" title="Object for handling user settings loaded from a file.">Config</a>, incompleteFileFilled)
<a name="l00079"></a>00079 {
<a name="l00080"></a>00080     <span class="keywordtype">string</span> testFilepath = <span class="stringliteral">&quot;testConfig.txt&quot;</span>;
<a name="l00081"></a>00081     ofstream testFile(testFilepath.c_str());
<a name="l00082"></a>00082 
<a name="l00083"></a>00083     testFile &lt;&lt; <span class="stringliteral">&quot;screen_height=345&quot;</span> &lt;&lt; endl;
<a name="l00084"></a>00084 
<a name="l00085"></a>00085     testFile.close();
<a name="l00086"></a>00086 
<a name="l00087"></a>00087     <a class="code" href="class_config.html" title="Object for handling user settings loaded from a file.">Config</a> testConfig(testFilepath);
<a name="l00088"></a>00088 
<a name="l00089"></a>00089     EXPECT_EQ((<span class="keywordtype">unsigned</span>)(800), testConfig.<a class="code" href="class_config.html#a3bb73797396d2d5ba8c9956730dfc4db" title="Function for accessing the screen width setting in pixels.">screenWidth</a>());
<a name="l00090"></a>00090     EXPECT_EQ((<span class="keywordtype">unsigned</span>)(345), testConfig.<a class="code" href="class_config.html#a53d63c52aa51b5231b9ea8e412086773" title="Function for accessing the screen height setting in pixels.">screenHeight</a>());
<a name="l00091"></a>00091     EXPECT_FALSE(testConfig.<a class="code" href="class_config.html#a8a401add779f2b74732ade9e515bf0cd" title="Function for accessing whether the game should be displayed in fullscreen or windowed mode...">fullscreen</a>());
<a name="l00092"></a>00092 
<a name="l00093"></a>00093     <span class="keyword">remove</span>(testFilepath.c_str());
<a name="l00094"></a>00094 }
<a name="l00095"></a>00095 
<a name="l00099"></a><a class="code" href="data_tests_8cpp.html#afc4fdfbf4ea1ef87d266b9b67cc665d1">00099</a> <a class="code" href="data_tests_8cpp.html#a7612e068db66f415f3b230260450eba8" title="Tests that a normal complete config file can be read.">TEST</a>(<a class="code" href="class_level_reader.html" title="Reads the game objects from a text file and calls relevant constructors.">LevelReader</a>, readsFileInfoObjects)
<a name="l00100"></a>00100 {
<a name="l00101"></a>00101     <span class="keywordtype">string</span> testFilepath = <span class="stringliteral">&quot;testMaze.lvl&quot;</span>;
<a name="l00102"></a>00102     ofstream testFile(testFilepath.c_str());
<a name="l00103"></a>00103 
<a name="l00104"></a>00104     testFile &lt;&lt; <span class="stringliteral">&quot; P X  &quot;</span> &lt;&lt; endl;
<a name="l00105"></a>00105     testFile &lt;&lt; <span class="stringliteral">&quot;      &quot;</span> &lt;&lt; endl;
<a name="l00106"></a>00106     testFile &lt;&lt; <span class="stringliteral">&quot;   @  &quot;</span> &lt;&lt; endl;
<a name="l00107"></a>00107     testFile &lt;&lt; <span class="stringliteral">&quot;     X&quot;</span> &lt;&lt; endl;
<a name="l00108"></a>00108     testFile &lt;&lt; <span class="stringliteral">&quot;##    &quot;</span> &lt;&lt; endl;
<a name="l00109"></a>00109     testFile &lt;&lt; <span class="stringliteral">&quot;   P  &quot;</span> &lt;&lt; endl;
<a name="l00110"></a>00110     testFile &lt;&lt; <span class="stringliteral">&quot;  O   &quot;</span> &lt;&lt; endl;
<a name="l00111"></a>00111 
<a name="l00112"></a>00112     testFile.close();
<a name="l00113"></a>00113 
<a name="l00114"></a>00114     <a class="code" href="class_level_reader.html" title="Reads the game objects from a text file and calls relevant constructors.">LevelReader</a> testReader(testFilepath);
<a name="l00115"></a>00115     <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> maze;
<a name="l00116"></a>00116     list&lt;PlayerCar&gt; players;
<a name="l00117"></a>00117     list&lt;EnemyCar&gt; enemies;
<a name="l00118"></a>00118     list&lt;Checkpoint&gt; checkpoints;
<a name="l00119"></a>00119     list&lt;Rock&gt; rocks;
<a name="l00120"></a>00120     testReader.<a class="code" href="class_level_reader.html#a27277149f3270e040c8ffeadbca79758" title="Function to read the chosen file into the data structures used in the game.">readLevel</a>(maze, players, enemies, checkpoints, rocks);
<a name="l00121"></a>00121 
<a name="l00122"></a>00122     list&lt;PlayerCar&gt; expectedPlayers;
<a name="l00123"></a>00123     list&lt;EnemyCar&gt; expectedEnemies;
<a name="l00124"></a>00124     list&lt;Checkpoint&gt; expectedCheckpoints;
<a name="l00125"></a>00125     list&lt;Rock&gt; expectedRocks;
<a name="l00126"></a>00126 
<a name="l00127"></a>00127     expectedPlayers.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(3,2));
<a name="l00128"></a>00128     expectedEnemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(3,0));
<a name="l00129"></a>00129     expectedEnemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(5,3));
<a name="l00130"></a>00130     expectedCheckpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(2,0));
<a name="l00131"></a>00131     expectedCheckpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(3,5));
<a name="l00132"></a>00132     expectedRocks.push_back(<a class="code" href="class_rock.html" title="A game object that acts as an obstacle to the player.">Rock</a>(2,6));
<a name="l00133"></a>00133 
<a name="l00134"></a>00134     <span class="comment">//eqality operator was not implemented for the GameObject class or its subclasses</span>
<a name="l00135"></a>00135     <span class="comment">//because it would not be meaningful. Two objects with the same position, type, and facing</span>
<a name="l00136"></a>00136     <span class="comment">//are still two different objects.</span>
<a name="l00137"></a>00137     <span class="comment">//iterators were used because the list type does not have an &#39;at&#39; function.</span>
<a name="l00138"></a>00138     list&lt;PlayerCar&gt;::const_iterator playIter = players.begin();
<a name="l00139"></a>00139     EXPECT_FLOAT_EQ(playIter-&gt;x(), 3);
<a name="l00140"></a>00140     EXPECT_FLOAT_EQ(playIter-&gt;y(), 2);
<a name="l00141"></a>00141     ++playIter;
<a name="l00142"></a>00142     EXPECT_EQ(playIter, players.end());
<a name="l00143"></a>00143 
<a name="l00144"></a>00144     list&lt;EnemyCar&gt;::const_iterator enemyIter = enemies.begin();
<a name="l00145"></a>00145     EXPECT_FLOAT_EQ(enemyIter-&gt;x(), 3);
<a name="l00146"></a>00146     EXPECT_FLOAT_EQ(enemyIter-&gt;y(), 0);
<a name="l00147"></a>00147     ++enemyIter;
<a name="l00148"></a>00148     EXPECT_FLOAT_EQ(enemyIter-&gt;x(), 5);
<a name="l00149"></a>00149     EXPECT_FLOAT_EQ(enemyIter-&gt;y(), 3);
<a name="l00150"></a>00150     ++enemyIter;
<a name="l00151"></a>00151     EXPECT_EQ(enemyIter, enemies.end());
<a name="l00152"></a>00152 
<a name="l00153"></a>00153     list&lt;Checkpoint&gt;::const_iterator checkIter = checkpoints.begin();
<a name="l00154"></a>00154     EXPECT_FLOAT_EQ(checkIter-&gt;x(), 1);
<a name="l00155"></a>00155     EXPECT_FLOAT_EQ(checkIter-&gt;y(), 0);
<a name="l00156"></a>00156     ++checkIter;
<a name="l00157"></a>00157     EXPECT_FLOAT_EQ(checkIter-&gt;x(), 3);
<a name="l00158"></a>00158     EXPECT_FLOAT_EQ(checkIter-&gt;y(), 5);
<a name="l00159"></a>00159     ++checkIter;
<a name="l00160"></a>00160     EXPECT_EQ(checkIter, checkpoints.end());
<a name="l00161"></a>00161 
<a name="l00162"></a>00162     list&lt;Rock&gt;::const_iterator rockIter = rocks.begin();
<a name="l00163"></a>00163     EXPECT_FLOAT_EQ(rockIter-&gt;x(), 2);
<a name="l00164"></a>00164     EXPECT_FLOAT_EQ(rockIter-&gt;y(), 6);
<a name="l00165"></a>00165     ++rockIter;
<a name="l00166"></a>00166     EXPECT_EQ(rockIter, rocks.end());
<a name="l00167"></a>00167 
<a name="l00168"></a>00168     <span class="keyword">remove</span>(testFilepath.c_str());
<a name="l00169"></a>00169 }
<a name="l00170"></a>00170 
<a name="l00174"></a><a class="code" href="data_tests_8cpp.html#a63083af852f9dfa8036f327f6fa84328">00174</a> <a class="code" href="data_tests_8cpp.html#a7612e068db66f415f3b230260450eba8" title="Tests that a normal complete config file can be read.">TEST</a>(<a class="code" href="class_level_reader.html" title="Reads the game objects from a text file and calls relevant constructors.">LevelReader</a>, throwsExceptionOnBadFilename)
<a name="l00175"></a>00175 {
<a name="l00176"></a>00176     <span class="keywordtype">string</span> testFilepath = <span class="stringliteral">&quot;testLevel.lvl&quot;</span>;
<a name="l00177"></a>00177     <a class="code" href="class_level_reader.html" title="Reads the game objects from a text file and calls relevant constructors.">LevelReader</a> testReader(testFilepath);
<a name="l00178"></a>00178     <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> maze;
<a name="l00179"></a>00179     list&lt;PlayerCar&gt; players;
<a name="l00180"></a>00180     list&lt;EnemyCar&gt; enemies;
<a name="l00181"></a>00181     list&lt;Checkpoint&gt; checkpoints;
<a name="l00182"></a>00182     list&lt;Rock&gt; rocks;
<a name="l00183"></a>00183     EXPECT_ANY_THROW(testReader.<a class="code" href="class_level_reader.html#a27277149f3270e040c8ffeadbca79758" title="Function to read the chosen file into the data structures used in the game.">readLevel</a>(maze, players, enemies, checkpoints, rocks));
<a name="l00184"></a>00184 }
</pre></div></div>
</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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</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>



<hr class="footer"/><address class="footer"><small>
Generated on Wed Oct 5 2011 20:08:31 for Rally X by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>