summaryrefslogtreecommitdiff
path: root/docs/html/logic_tests_8cpp_source.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html/logic_tests_8cpp_source.html')
-rw-r--r--docs/html/logic_tests_8cpp_source.html656
1 files changed, 656 insertions, 0 deletions
diff --git a/docs/html/logic_tests_8cpp_source.html b/docs/html/logic_tests_8cpp_source.html
new file mode 100644
index 0000000..e3344b4
--- /dev/null
+++ b/docs/html/logic_tests_8cpp_source.html
@@ -0,0 +1,656 @@
+<!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/logicTests.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/logicTests.cpp</div> </div>
+</div>
+<div class="contents">
+<a href="logic_tests_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
+<a name="l00055"></a>00055 <span class="preprocessor">#include &lt;vector&gt;</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#include &lt;list&gt;</span>
+<a name="l00057"></a>00057 <span class="preprocessor">#include &lt;utility&gt;</span>
+<a name="l00058"></a>00058 <span class="keyword">using namespace </span>std;
+<a name="l00059"></a>00059
+<a name="l00060"></a>00060 <span class="preprocessor">#include &lt;gtest/gtest.h&gt;</span>
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="preprocessor">#include &quot;../source/logic/CollisionDetector.h&quot;</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#include &quot;../source/logic/PlayerCar.h&quot;</span>
+<a name="l00064"></a>00064 <span class="preprocessor">#include &quot;../source/logic/EnemyCar.h&quot;</span>
+<a name="l00065"></a>00065 <span class="preprocessor">#include &quot;../source/logic/Checkpoint.h&quot;</span>
+<a name="l00066"></a>00066 <span class="preprocessor">#include &quot;../source/logic/Rock.h&quot;</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#include &quot;../source/logic/Smokescreen.h&quot;</span>
+<a name="l00068"></a>00068 <span class="preprocessor">#include &quot;../source/logic/Maze.h&quot;</span>
+<a name="l00069"></a>00069 <span class="preprocessor">#include &quot;../source/logic/MazeMath.h&quot;</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#include &quot;../source/logic/DestroyedObjectPopup.h&quot;</span>
+<a name="l00071"></a>00071
+<a name="l00075"></a><a class="code" href="logic_tests_8cpp.html#af107924db552c5a66c5bf3aeafe15519">00075</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, updateMovesPlayerUpInEmptyMaze)
+<a name="l00076"></a>00076 {
+<a name="l00077"></a>00077 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00078"></a>00078 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00079"></a>00079 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(2,2,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fad2e008a4b04be5e2d3559c70193920e7">Maze::UP</a>);
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00084"></a>00084 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="keywordtype">double</span> expectX = 2;
+<a name="l00087"></a>00087 <span class="keywordtype">double</span> expectY = 2-player.<a class="code" href="class_car.html#a68b59187e1520a5d016b0894b4c116b9" title="Function to access the current speed of the car.">speed</a>();
+<a name="l00088"></a>00088 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00089"></a>00089 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091
+<a name="l00095"></a><a class="code" href="logic_tests_8cpp.html#a4011469f0a6dfeb25d704d662ce02caf">00095</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, updateMovesPlayerDownInEmptyMaze)
+<a name="l00096"></a>00096 {
+<a name="l00097"></a>00097 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00098"></a>00098 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00099"></a>00099 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(2,2,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa89ab143d020541957ab5e0e9cfdd3e23">Maze::DOWN</a>);
+<a name="l00102"></a>00102
+<a name="l00103"></a>00103 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00104"></a>00104 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 <span class="keywordtype">double</span> expectX = 2;
+<a name="l00107"></a>00107 <span class="keywordtype">double</span> expectY = 2+player.<a class="code" href="class_car.html#a68b59187e1520a5d016b0894b4c116b9" title="Function to access the current speed of the car.">speed</a>();
+<a name="l00108"></a>00108 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00109"></a>00109 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111
+<a name="l00115"></a><a class="code" href="logic_tests_8cpp.html#ac7954e0cf27b4044b5b9ba0a7faf747e">00115</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, updateMovesPlayerLeftInEmptyMaze)
+<a name="l00116"></a>00116 {
+<a name="l00117"></a>00117 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00118"></a>00118 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00119"></a>00119 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00120"></a>00120
+<a name="l00121"></a>00121 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(2,2,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28faab1a1fe0274cd139b3c0116d8caf458c">Maze::LEFT</a>);
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00124"></a>00124 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="keywordtype">double</span> expectX = 2-player.<a class="code" href="class_car.html#a68b59187e1520a5d016b0894b4c116b9" title="Function to access the current speed of the car.">speed</a>();
+<a name="l00127"></a>00127 <span class="keywordtype">double</span> expectY = 2;
+<a name="l00128"></a>00128 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00129"></a>00129 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131
+<a name="l00135"></a><a class="code" href="logic_tests_8cpp.html#a1b0625252aae5ca87e0b26e01b7aa506">00135</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, updateMovesPlayerRightInEmptyMaze)
+<a name="l00136"></a>00136 {
+<a name="l00137"></a>00137 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00138"></a>00138 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00139"></a>00139 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(2,2,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa699ae3e1d989e9b12bd200aa86e29e9d">Maze::RIGHT</a>);
+<a name="l00142"></a>00142
+<a name="l00143"></a>00143 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00144"></a>00144 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="keywordtype">double</span> expectX = 2+player.<a class="code" href="class_car.html#a68b59187e1520a5d016b0894b4c116b9" title="Function to access the current speed of the car.">speed</a>();
+<a name="l00147"></a>00147 <span class="keywordtype">double</span> expectY = 2;
+<a name="l00148"></a>00148 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00149"></a>00149 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151
+<a name="l00155"></a><a class="code" href="logic_tests_8cpp.html#a2c0f1615b9769a4140124c5d6845d50a">00155</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carNotMovedWhenPathUpBlocked)
+<a name="l00156"></a>00156 {
+<a name="l00157"></a>00157 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00158"></a>00158 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00159"></a>00159 walls.push_back(make_pair(3,3));
+<a name="l00160"></a>00160 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(3,4,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fad2e008a4b04be5e2d3559c70193920e7">Maze::UP</a>);
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00165"></a>00165 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00166"></a>00166
+<a name="l00167"></a>00167 <span class="keywordtype">double</span> expectX = 3;
+<a name="l00168"></a>00168 <span class="keywordtype">double</span> expectY = 4;
+<a name="l00169"></a>00169 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00170"></a>00170 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00171"></a>00171 }
+<a name="l00175"></a><a class="code" href="logic_tests_8cpp.html#a1a6506ee8e2f21181a26f92098707a9b">00175</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carNotMovedWhenPathDownBlocked)
+<a name="l00176"></a>00176 {
+<a name="l00177"></a>00177 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00178"></a>00178 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00179"></a>00179 walls.push_back(make_pair(3,3));
+<a name="l00180"></a>00180 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(3,2,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa89ab143d020541957ab5e0e9cfdd3e23">Maze::DOWN</a>);
+<a name="l00183"></a>00183
+<a name="l00184"></a>00184 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00185"></a>00185 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00186"></a>00186
+<a name="l00187"></a>00187 <span class="keywordtype">double</span> expectX = 3;
+<a name="l00188"></a>00188 <span class="keywordtype">double</span> expectY = 2;
+<a name="l00189"></a>00189 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00190"></a>00190 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00191"></a>00191 }
+<a name="l00195"></a><a class="code" href="logic_tests_8cpp.html#ad2919e050b740fafe3545d279463a4ab">00195</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carNotMovedWhenPathLeftBlocked)
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00198"></a>00198 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00199"></a>00199 walls.push_back(make_pair(3,3));
+<a name="l00200"></a>00200 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(4,3,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28faab1a1fe0274cd139b3c0116d8caf458c">Maze::LEFT</a>);
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00205"></a>00205 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <span class="keywordtype">double</span> expectX = 4;
+<a name="l00208"></a>00208 <span class="keywordtype">double</span> expectY = 3;
+<a name="l00209"></a>00209 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00210"></a>00210 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00211"></a>00211 }
+<a name="l00215"></a><a class="code" href="logic_tests_8cpp.html#a9ac2e91f3041374b626d08f5ede8b914">00215</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carNotMovedWhenPathRightBlocked)
+<a name="l00216"></a>00216 {
+<a name="l00217"></a>00217 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00218"></a>00218 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00219"></a>00219 walls.push_back(make_pair(3,3));
+<a name="l00220"></a>00220 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00221"></a>00221
+<a name="l00222"></a>00222 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(2,3,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa699ae3e1d989e9b12bd200aa86e29e9d">Maze::RIGHT</a>);
+<a name="l00223"></a>00223
+<a name="l00224"></a>00224 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00225"></a>00225 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 <span class="keywordtype">double</span> expectX = 2;
+<a name="l00228"></a>00228 <span class="keywordtype">double</span> expectY = 3;
+<a name="l00229"></a>00229 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00230"></a>00230 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232
+<a name="l00236"></a><a class="code" href="logic_tests_8cpp.html#a485e6ab1a085528b7315eebf1ee9d65d">00236</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carDoesNotMoveUpOutMaze)
+<a name="l00237"></a>00237 {
+<a name="l00238"></a>00238 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00239"></a>00239 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00240"></a>00240 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00241"></a>00241
+<a name="l00242"></a>00242 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(3,0,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fad2e008a4b04be5e2d3559c70193920e7">Maze::UP</a>);
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00245"></a>00245 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00246"></a>00246
+<a name="l00247"></a>00247 <span class="keywordtype">double</span> expectX = 3;
+<a name="l00248"></a>00248 <span class="keywordtype">double</span> expectY = 0;
+<a name="l00249"></a>00249 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00250"></a>00250 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00251"></a>00251 }
+<a name="l00255"></a><a class="code" href="logic_tests_8cpp.html#a2bf92ba800c8c7190ccd736289fc083a">00255</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carDoesNotMoveDownOutMaze)
+<a name="l00256"></a>00256 {
+<a name="l00257"></a>00257 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00258"></a>00258 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00259"></a>00259 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(3,5,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa89ab143d020541957ab5e0e9cfdd3e23">Maze::DOWN</a>);
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00264"></a>00264 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266 <span class="keywordtype">double</span> expectX = 3;
+<a name="l00267"></a>00267 <span class="keywordtype">double</span> expectY = 5;
+<a name="l00268"></a>00268 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00269"></a>00269 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00270"></a>00270 }
+<a name="l00274"></a><a class="code" href="logic_tests_8cpp.html#a6a8767f7e51b8997ce11e56ce5d88b53">00274</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carDoesNotMoveLeftOutMaze)
+<a name="l00275"></a>00275 {
+<a name="l00276"></a>00276 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00277"></a>00277 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00278"></a>00278 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(0,3,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28faab1a1fe0274cd139b3c0116d8caf458c">Maze::LEFT</a>);
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00283"></a>00283 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00284"></a>00284
+<a name="l00285"></a>00285 <span class="keywordtype">double</span> expectX = 0;
+<a name="l00286"></a>00286 <span class="keywordtype">double</span> expectY = 3;
+<a name="l00287"></a>00287 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00288"></a>00288 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00289"></a>00289 }
+<a name="l00293"></a><a class="code" href="logic_tests_8cpp.html#aa9dba66248eff545a8f6d12943ad9965">00293</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_car.html" title="GameObject that moves through the maze and changes direction.">Car</a>, carDoesNotMoveRightOutMaze)
+<a name="l00294"></a>00294 {
+<a name="l00295"></a>00295 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00296"></a>00296 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00297"></a>00297 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00298"></a>00298
+<a name="l00299"></a>00299 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(5,3,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa699ae3e1d989e9b12bd200aa86e29e9d">Maze::RIGHT</a>);
+<a name="l00300"></a>00300
+<a name="l00301"></a>00301 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00302"></a>00302 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00303"></a>00303
+<a name="l00304"></a>00304 <span class="keywordtype">double</span> expectX = 5;
+<a name="l00305"></a>00305 <span class="keywordtype">double</span> expectY = 3;
+<a name="l00306"></a>00306 EXPECT_FLOAT_EQ(expectX, player.<a class="code" href="class_game_object.html#a676dd981c2891493782de36fb4618cd8" title="Provides access to the x coordinate of the object.">x</a>());
+<a name="l00307"></a>00307 EXPECT_FLOAT_EQ(expectY, player.<a class="code" href="class_game_object.html#a293548656551d6aed5f714f8c4a3235b" title="Provides access to the y coordinate of the object.">y</a>());
+<a name="l00308"></a>00308 }
+<a name="l00309"></a>00309
+<a name="l00313"></a><a class="code" href="logic_tests_8cpp.html#a2e89a1385841eacfe13c25e920de6543">00313</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_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>, countIncrementsAndDecrements)
+<a name="l00314"></a>00314 {
+<a name="l00315"></a>00315 vector&lt;Checkpoint&gt; checkpoints;
+<a name="l00316"></a>00316 EXPECT_EQ(0, <a class="code" href="class_checkpoint.html#a872d8574b6f0a7960854fb1175e05f13" title="Function for accessing the number of checkpoints that currently exist.">Checkpoint::checkpointCount</a>());
+<a name="l00317"></a>00317
+<a name="l00318"></a>00318 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;1000; ++i)
+<a name="l00319"></a>00319 {
+<a name="l00320"></a>00320 checkpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(i,i));
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322 EXPECT_EQ(1000, <a class="code" href="class_checkpoint.html#a872d8574b6f0a7960854fb1175e05f13" title="Function for accessing the number of checkpoints that currently exist.">Checkpoint::checkpointCount</a>());
+<a name="l00323"></a>00323
+<a name="l00324"></a>00324 <span class="comment">//brackets to limit scope</span>
+<a name="l00325"></a>00325 {
+<a name="l00326"></a>00326 <a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a> extraCheck1(0,0);
+<a name="l00327"></a>00327 <a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a> extraCheck2 = extraCheck1;
+<a name="l00328"></a>00328 EXPECT_EQ(1002, <a class="code" href="class_checkpoint.html#a872d8574b6f0a7960854fb1175e05f13" title="Function for accessing the number of checkpoints that currently exist.">Checkpoint::checkpointCount</a>());
+<a name="l00329"></a>00329 extraCheck2 = extraCheck1;
+<a name="l00330"></a>00330 EXPECT_EQ(1002, <a class="code" href="class_checkpoint.html#a872d8574b6f0a7960854fb1175e05f13" title="Function for accessing the number of checkpoints that currently exist.">Checkpoint::checkpointCount</a>());
+<a name="l00331"></a>00331 }
+<a name="l00332"></a>00332 EXPECT_EQ(1000, <a class="code" href="class_checkpoint.html#a872d8574b6f0a7960854fb1175e05f13" title="Function for accessing the number of checkpoints that currently exist.">Checkpoint::checkpointCount</a>());
+<a name="l00333"></a>00333
+<a name="l00334"></a>00334 <span class="keywordflow">while</span>(!checkpoints.empty())
+<a name="l00335"></a>00335 {
+<a name="l00336"></a>00336 checkpoints.pop_back();
+<a name="l00337"></a>00337 }
+<a name="l00338"></a>00338 EXPECT_EQ(0, <a class="code" href="class_checkpoint.html#a872d8574b6f0a7960854fb1175e05f13" title="Function for accessing the number of checkpoints that currently exist.">Checkpoint::checkpointCount</a>());
+<a name="l00339"></a>00339 }
+<a name="l00340"></a>00340
+<a name="l00344"></a><a class="code" href="logic_tests_8cpp.html#a8f4ecb8511bd9f8da009cce86e7de78f">00344</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_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a>, playerAndEnemyBothDestroyed)
+<a name="l00345"></a>00345 {
+<a name="l00346"></a>00346 list&lt;PlayerCar&gt; players;
+<a name="l00347"></a>00347 list&lt;EnemyCar&gt; enemies;
+<a name="l00348"></a>00348 list&lt;Checkpoint&gt; checkpoints;
+<a name="l00349"></a>00349 list&lt;Rock&gt; rocks;
+<a name="l00350"></a>00350 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00351"></a>00351 <a class="code" href="class_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a> detector;
+<a name="l00352"></a>00352
+<a name="l00353"></a>00353 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(5,5));
+<a name="l00354"></a>00354 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(5,6));
+<a name="l00355"></a>00355 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(6,5));
+<a name="l00356"></a>00356 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(7,7.5));
+<a name="l00357"></a>00357
+<a name="l00358"></a>00358 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(5,6));
+<a name="l00359"></a>00359 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(4,5));
+<a name="l00360"></a>00360 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(6,6));
+<a name="l00361"></a>00361 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(6.5,8));
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 detector.<a class="code" href="class_collision_detector.html#a6ee96032c26ceeab038d2702d7064c7b" title="Checks for collisions between all relevant pairs of objects, and calls the relevant collision functio...">checkCollisions</a>(players, enemies, checkpoints, rocks, smokescreens);
+<a name="l00364"></a>00364
+<a name="l00365"></a>00365 list&lt;PlayerCar&gt;::const_iterator playerIter = players.begin();
+<a name="l00366"></a>00366 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00367"></a>00367 ++playerIter;
+<a name="l00368"></a>00368 EXPECT_TRUE(playerIter-&gt;destroyed());
+<a name="l00369"></a>00369 ++playerIter;
+<a name="l00370"></a>00370 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00371"></a>00371 ++playerIter;
+<a name="l00372"></a>00372 EXPECT_TRUE(playerIter-&gt;destroyed());
+<a name="l00373"></a>00373
+<a name="l00374"></a>00374 list&lt;EnemyCar&gt;::const_iterator enemyIter = enemies.begin();
+<a name="l00375"></a>00375 EXPECT_TRUE(enemyIter-&gt;destroyed());
+<a name="l00376"></a>00376 ++enemyIter;
+<a name="l00377"></a>00377 EXPECT_FALSE(enemyIter-&gt;destroyed());
+<a name="l00378"></a>00378 ++enemyIter;
+<a name="l00379"></a>00379 EXPECT_FALSE(enemyIter-&gt;destroyed());
+<a name="l00380"></a>00380 ++enemyIter;
+<a name="l00381"></a>00381 EXPECT_TRUE(enemyIter-&gt;destroyed());
+<a name="l00382"></a>00382 }
+<a name="l00383"></a>00383
+<a name="l00387"></a><a class="code" href="logic_tests_8cpp.html#abb21ae25f8060ef3dafd386ed054c44f">00387</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_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a>, playerDestroyedByRock)
+<a name="l00388"></a>00388 {
+<a name="l00389"></a>00389 list&lt;PlayerCar&gt; players;
+<a name="l00390"></a>00390 list&lt;EnemyCar&gt; enemies;
+<a name="l00391"></a>00391 list&lt;Checkpoint&gt; checkpoints;
+<a name="l00392"></a>00392 list&lt;Rock&gt; rocks;
+<a name="l00393"></a>00393 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00394"></a>00394 <a class="code" href="class_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a> detector;
+<a name="l00395"></a>00395
+<a name="l00396"></a>00396 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(5,5));
+<a name="l00397"></a>00397 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(5,6));
+<a name="l00398"></a>00398 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(6,5));
+<a name="l00399"></a>00399 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(7,7.5));
+<a name="l00400"></a>00400
+<a name="l00401"></a>00401 rocks.push_back(<a class="code" href="class_rock.html" title="A game object that acts as an obstacle to the player.">Rock</a>(5,6));
+<a name="l00402"></a>00402 rocks.push_back(<a class="code" href="class_rock.html" title="A game object that acts as an obstacle to the player.">Rock</a>(4,5));
+<a name="l00403"></a>00403 rocks.push_back(<a class="code" href="class_rock.html" title="A game object that acts as an obstacle to the player.">Rock</a>(6,6));
+<a name="l00404"></a>00404 rocks.push_back(<a class="code" href="class_rock.html" title="A game object that acts as an obstacle to the player.">Rock</a>(6.5,8));
+<a name="l00405"></a>00405
+<a name="l00406"></a>00406 detector.<a class="code" href="class_collision_detector.html#a6ee96032c26ceeab038d2702d7064c7b" title="Checks for collisions between all relevant pairs of objects, and calls the relevant collision functio...">checkCollisions</a>(players, enemies, checkpoints, rocks, smokescreens);
+<a name="l00407"></a>00407
+<a name="l00408"></a>00408 list&lt;PlayerCar&gt;::const_iterator playerIter = players.begin();
+<a name="l00409"></a>00409 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00410"></a>00410 ++playerIter;
+<a name="l00411"></a>00411 EXPECT_TRUE(playerIter-&gt;destroyed());
+<a name="l00412"></a>00412 ++playerIter;
+<a name="l00413"></a>00413 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00414"></a>00414 ++playerIter;
+<a name="l00415"></a>00415 EXPECT_TRUE(playerIter-&gt;destroyed());
+<a name="l00416"></a>00416
+<a name="l00417"></a>00417 list&lt;Rock&gt;::const_iterator rockIter = rocks.begin();
+<a name="l00418"></a>00418 EXPECT_FALSE(rockIter-&gt;destroyed());
+<a name="l00419"></a>00419 ++rockIter;
+<a name="l00420"></a>00420 EXPECT_FALSE(rockIter-&gt;destroyed());
+<a name="l00421"></a>00421 ++rockIter;
+<a name="l00422"></a>00422 EXPECT_FALSE(rockIter-&gt;destroyed());
+<a name="l00423"></a>00423 ++rockIter;
+<a name="l00424"></a>00424 EXPECT_FALSE(rockIter-&gt;destroyed());
+<a name="l00425"></a>00425 }
+<a name="l00426"></a>00426
+<a name="l00430"></a><a class="code" href="logic_tests_8cpp.html#a115831998a1832f3354e06bdd11c150b">00430</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_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a>, checkpointDestroyedByPlayer)
+<a name="l00431"></a>00431 {
+<a name="l00432"></a>00432 list&lt;PlayerCar&gt; players;
+<a name="l00433"></a>00433 list&lt;EnemyCar&gt; enemies;
+<a name="l00434"></a>00434 list&lt;Checkpoint&gt; checkpoints;
+<a name="l00435"></a>00435 list&lt;Rock&gt; rocks;
+<a name="l00436"></a>00436 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00437"></a>00437 <a class="code" href="class_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a> detector;
+<a name="l00438"></a>00438
+<a name="l00439"></a>00439 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(5,5));
+<a name="l00440"></a>00440 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(5,6));
+<a name="l00441"></a>00441 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(6,5));
+<a name="l00442"></a>00442 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(7,7.5));
+<a name="l00443"></a>00443
+<a name="l00444"></a>00444 checkpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(5,6));
+<a name="l00445"></a>00445 checkpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(4,5));
+<a name="l00446"></a>00446 checkpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(6,6));
+<a name="l00447"></a>00447 checkpoints.push_back(<a class="code" href="class_checkpoint.html" title="GameObject that the player needs to pick up by driving over.">Checkpoint</a>(6.5,8));
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 detector.<a class="code" href="class_collision_detector.html#a6ee96032c26ceeab038d2702d7064c7b" title="Checks for collisions between all relevant pairs of objects, and calls the relevant collision functio...">checkCollisions</a>(players, enemies, checkpoints, rocks, smokescreens);
+<a name="l00450"></a>00450
+<a name="l00451"></a>00451 list&lt;PlayerCar&gt;::const_iterator playerIter = players.begin();
+<a name="l00452"></a>00452 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00453"></a>00453 ++playerIter;
+<a name="l00454"></a>00454 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00455"></a>00455 ++playerIter;
+<a name="l00456"></a>00456 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00457"></a>00457 ++playerIter;
+<a name="l00458"></a>00458 EXPECT_FALSE(playerIter-&gt;destroyed());
+<a name="l00459"></a>00459
+<a name="l00460"></a>00460 list&lt;Checkpoint&gt;::const_iterator checkpointIter = checkpoints.begin();
+<a name="l00461"></a>00461 EXPECT_TRUE(checkpointIter-&gt;destroyed());
+<a name="l00462"></a>00462 ++checkpointIter;
+<a name="l00463"></a>00463 EXPECT_FALSE(checkpointIter-&gt;destroyed());
+<a name="l00464"></a>00464 ++checkpointIter;
+<a name="l00465"></a>00465 EXPECT_FALSE(checkpointIter-&gt;destroyed());
+<a name="l00466"></a>00466 ++checkpointIter;
+<a name="l00467"></a>00467 EXPECT_TRUE(checkpointIter-&gt;destroyed());
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469
+<a name="l00473"></a><a class="code" href="logic_tests_8cpp.html#a9860202068d4e498e238d9d886234ea7">00473</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_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a>, enemyStoppedBySmokescreen)
+<a name="l00474"></a>00474 {
+<a name="l00475"></a>00475 list&lt;PlayerCar&gt; players;
+<a name="l00476"></a>00476 list&lt;EnemyCar&gt; enemies;
+<a name="l00477"></a>00477 list&lt;Checkpoint&gt; checkpoints;
+<a name="l00478"></a>00478 list&lt;Rock&gt; rocks;
+<a name="l00479"></a>00479 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00480"></a>00480 <a class="code" href="class_collision_detector.html" title="Object for handling collisions between GameObjects.">CollisionDetector</a> detector;
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(5,5));
+<a name="l00483"></a>00483 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(5,6));
+<a name="l00484"></a>00484 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(6,5));
+<a name="l00485"></a>00485 enemies.push_back(<a class="code" href="class_enemy_car.html" title="GameObject that chases the player around the maze.">EnemyCar</a>(7,7.5));
+<a name="l00486"></a>00486
+<a name="l00487"></a>00487 smokescreens.push_back(<a class="code" href="class_smokescreen.html" title="GameObject that causes the EnemyCar to be delayed if they crash into it.">Smokescreen</a>(5,6));
+<a name="l00488"></a>00488 smokescreens.push_back(<a class="code" href="class_smokescreen.html" title="GameObject that causes the EnemyCar to be delayed if they crash into it.">Smokescreen</a>(4,5));
+<a name="l00489"></a>00489 smokescreens.push_back(<a class="code" href="class_smokescreen.html" title="GameObject that causes the EnemyCar to be delayed if they crash into it.">Smokescreen</a>(6,6));
+<a name="l00490"></a>00490 smokescreens.push_back(<a class="code" href="class_smokescreen.html" title="GameObject that causes the EnemyCar to be delayed if they crash into it.">Smokescreen</a>(6.5,8));
+<a name="l00491"></a>00491
+<a name="l00492"></a>00492 detector.<a class="code" href="class_collision_detector.html#a6ee96032c26ceeab038d2702d7064c7b" title="Checks for collisions between all relevant pairs of objects, and calls the relevant collision functio...">checkCollisions</a>(players, enemies, checkpoints, rocks, smokescreens);
+<a name="l00493"></a>00493
+<a name="l00494"></a>00494 list&lt;EnemyCar&gt;::const_iterator enemyIter = enemies.begin();
+<a name="l00495"></a>00495 EXPECT_GT(enemyIter-&gt;speed(),0);
+<a name="l00496"></a>00496 ++enemyIter;
+<a name="l00497"></a>00497 EXPECT_FLOAT_EQ(0, enemyIter-&gt;speed());
+<a name="l00498"></a>00498 ++enemyIter;
+<a name="l00499"></a>00499 EXPECT_GT(enemyIter-&gt;speed(),0);
+<a name="l00500"></a>00500 ++enemyIter;
+<a name="l00501"></a>00501 EXPECT_FLOAT_EQ(0, enemyIter-&gt;speed());
+<a name="l00502"></a>00502 }
+<a name="l00503"></a>00503
+<a name="l00507"></a><a class="code" href="logic_tests_8cpp.html#a484a53647d1cde5db81c1fdc53bf55c9">00507</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_destroyed_object_popup.html" title="Object that appears on the screen for a short time when another object has been destroyed.">DestroyedObjectPopup</a>, destroyedAfterSetTime)
+<a name="l00508"></a>00508 {
+<a name="l00509"></a>00509 <a class="code" href="class_destroyed_object_popup.html" title="Object that appears on the screen for a short time when another object has been destroyed.">DestroyedObjectPopup</a> testPopup(3,2,<a class="code" href="class_bitmap_store.html#af3bc66181673def9d0a590cd13c7e386a8b9eb5b79abe467982784ea2227d67e0">BitmapStore::CRASHED_CAR</a>);
+<a name="l00510"></a>00510
+<a name="l00511"></a>00511 <span class="keywordtype">int</span> i=0;
+<a name="l00512"></a>00512 <span class="keywordflow">while</span> (!testPopup.<a class="code" href="class_game_object.html#a266871f6c0220f6b3c902075ebff8eea" title="Checks if an object has been marked for destruction, for example through a collision.">destroyed</a>())
+<a name="l00513"></a>00513 {
+<a name="l00514"></a>00514 testPopup.<a class="code" href="class_limited_time_object.html#ad81a1c9aba4e21dfa40b9e6d881aba4e" title="Function that should be run on every iteration of the gameloop.">update</a>();
+<a name="l00515"></a>00515 ++i;
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517
+<a name="l00518"></a>00518 EXPECT_EQ(30,i);
+<a name="l00519"></a>00519 }
+<a name="l00520"></a>00520
+<a name="l00524"></a><a class="code" href="logic_tests_8cpp.html#aa16a32786815a8bb8cb7e8de664ff950">00524</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_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a>, queryOutsideBoundsReturnsSolid)
+<a name="l00525"></a>00525 {
+<a name="l00526"></a>00526 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00527"></a>00527 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00528"></a>00528 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00529"></a>00529
+<a name="l00530"></a>00530 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(5,5));
+<a name="l00531"></a>00531 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(0,0));
+<a name="l00532"></a>00532 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(6,5));
+<a name="l00533"></a>00533 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(5,6));
+<a name="l00534"></a>00534 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(-1,3));
+<a name="l00535"></a>00535 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(3,-1));
+<a name="l00536"></a>00536 }
+<a name="l00537"></a>00537
+<a name="l00541"></a><a class="code" href="logic_tests_8cpp.html#a38676411c83cef750c1e48dd8f1a87ca">00541</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_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a>, generationWithWallsWithoutObjectMax)
+<a name="l00542"></a>00542 {
+<a name="l00543"></a>00543 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00544"></a>00544 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00545"></a>00545 walls.push_back(make_pair(1,2));
+<a name="l00546"></a>00546 walls.push_back(make_pair(4,3));
+<a name="l00547"></a>00547 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls);
+<a name="l00548"></a>00548
+<a name="l00549"></a>00549 <span class="comment">//test random empty blocks</span>
+<a name="l00550"></a>00550 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(2,1));
+<a name="l00551"></a>00551 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(0,0));
+<a name="l00552"></a>00552
+<a name="l00553"></a>00553 <span class="comment">//test wall blocks</span>
+<a name="l00554"></a>00554 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(1,2));
+<a name="l00555"></a>00555 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(4,3));
+<a name="l00556"></a>00556
+<a name="l00557"></a>00557 <span class="comment">//test bounds are being set right</span>
+<a name="l00558"></a>00558 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(4,4));
+<a name="l00559"></a>00559 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(5,3));
+<a name="l00560"></a>00560 }
+<a name="l00561"></a>00561
+<a name="l00565"></a><a class="code" href="logic_tests_8cpp.html#a0363213c93a0b22e67182dc5af60b78b">00565</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_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a>, generationWithWallsWithObjectMax)
+<a name="l00566"></a>00566 {
+<a name="l00567"></a>00567 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00568"></a>00568 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00569"></a>00569 walls.push_back(make_pair(1,2));
+<a name="l00570"></a>00570 walls.push_back(make_pair(4,3));
+<a name="l00571"></a>00571 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,6);
+<a name="l00572"></a>00572
+<a name="l00573"></a>00573 <span class="comment">//test random empty blocks</span>
+<a name="l00574"></a>00574 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(2,1));
+<a name="l00575"></a>00575 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(0,0));
+<a name="l00576"></a>00576
+<a name="l00577"></a>00577 <span class="comment">//test wall blocks</span>
+<a name="l00578"></a>00578 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(1,2));
+<a name="l00579"></a>00579 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(4,3));
+<a name="l00580"></a>00580
+<a name="l00581"></a>00581 <span class="comment">//test bounds are being set right</span>
+<a name="l00582"></a>00582 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(4,4));
+<a name="l00583"></a>00583 EXPECT_FALSE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(5,6));
+<a name="l00584"></a>00584 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(6,6));
+<a name="l00585"></a>00585 EXPECT_TRUE(testMaze.<a class="code" href="class_maze.html#a1bbdfece82c4ba90ffcf2fea52e5fef1" title="Checks if a given position contains a wall or not.">getSolid</a>(5,7));
+<a name="l00586"></a>00586 }
+<a name="l00587"></a>00587
+<a name="l00591"></a><a class="code" href="logic_tests_8cpp.html#a2b5bbb44002c6d13e3a3811cb3677832">00591</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_maze_math.html" title="Class of static methods for common math functions that occur in the 2D maze setting.">MazeMath</a>, distanceGivesExpectedResult)
+<a name="l00592"></a>00592 {
+<a name="l00593"></a>00593 <span class="comment">//right angle triange with sides of length 3, 4, and 5</span>
+<a name="l00594"></a>00594 <span class="keywordtype">double</span> x1 = 1;
+<a name="l00595"></a>00595 <span class="keywordtype">double</span> y1 = 1;
+<a name="l00596"></a>00596 <span class="keywordtype">double</span> x2 = 4;
+<a name="l00597"></a>00597 <span class="keywordtype">double</span> y2 = 5;
+<a name="l00598"></a>00598
+<a name="l00599"></a>00599 <span class="keywordtype">double</span> expectedResult = 5;
+<a name="l00600"></a>00600
+<a name="l00601"></a>00601 EXPECT_DOUBLE_EQ(expectedResult, <a class="code" href="class_maze_math.html#a5735276fb4c76f25944f2c02d622c3f6" title="Finds the straight line distance between two points on a 2D plane.">MazeMath::distance</a>(x1,y1,x2,y2));
+<a name="l00602"></a>00602 }
+<a name="l00603"></a>00603
+<a name="l00607"></a><a class="code" href="logic_tests_8cpp.html#a5a55cf80381ed4c7885fb887427e6118">00607</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_maze_math.html" title="Class of static methods for common math functions that occur in the 2D maze setting.">MazeMath</a>, roundGivesExpectedResult)
+<a name="l00608"></a>00608 {
+<a name="l00609"></a>00609 <span class="comment">//right angle triange with sides of length 3, 4, and 5</span>
+<a name="l00610"></a>00610 <span class="keywordtype">double</span> roundUp = 5.5;
+<a name="l00611"></a>00611 <span class="keywordtype">double</span> roundDown = 5.49;
+<a name="l00612"></a>00612
+<a name="l00613"></a>00613 <span class="keywordtype">double</span> expectUp = 6;
+<a name="l00614"></a>00614 <span class="keywordtype">double</span> expectDown = 5;
+<a name="l00615"></a>00615
+<a name="l00616"></a>00616 EXPECT_DOUBLE_EQ(expectUp, <a class="code" href="class_maze_math.html#a2314f211065f4dc7cb11469770fd2f1c" title="Rounds a value to the nearest integer.">MazeMath::round</a>(roundUp));
+<a name="l00617"></a>00617 EXPECT_DOUBLE_EQ(expectDown, <a class="code" href="class_maze_math.html#a2314f211065f4dc7cb11469770fd2f1c" title="Rounds a value to the nearest integer.">MazeMath::round</a>(roundDown));
+<a name="l00618"></a>00618 }
+<a name="l00619"></a>00619
+<a name="l00626"></a><a class="code" href="logic_tests_8cpp.html#a610f20b2b4a1407fa2a8983015dfb81b">00626</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_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>, creationAndDestructionCanHappen)
+<a name="l00627"></a>00627 {
+<a name="l00628"></a>00628 EXPECT_NO_THROW({
+<a name="l00629"></a>00629 vector&lt;PlayerCar&gt; players;
+<a name="l00630"></a>00630 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;10; ++i)
+<a name="l00631"></a>00631 {
+<a name="l00632"></a>00632 players.push_back(<a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>(i,i));
+<a name="l00633"></a>00633 }
+<a name="l00634"></a>00634 <span class="keywordflow">while</span>(!players.empty())
+<a name="l00635"></a>00635 {
+<a name="l00636"></a>00636 players.pop_back();
+<a name="l00637"></a>00637 }
+<a name="l00638"></a>00638 });
+<a name="l00639"></a>00639
+<a name="l00640"></a>00640 EXPECT_FALSE(al_is_system_installed());
+<a name="l00641"></a>00641 }
+<a name="l00642"></a>00642
+<a name="l00648"></a><a class="code" href="logic_tests_8cpp.html#a257f2123dddae6d77b7926f48d4e71e2">00648</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_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a>, playerSpeedAffectedByPetrol)
+<a name="l00649"></a>00649 {
+<a name="l00650"></a>00650 <a class="code" href="class_maze.html" title="A rectangular 2D boolean array, representing where cars can drive and where they cannot.">Maze</a> testMaze;
+<a name="l00651"></a>00651 vector&lt;pair&lt;int,int&gt; &gt; walls;
+<a name="l00652"></a>00652 testMaze.<a class="code" href="class_maze.html#ae238f9a5dbae9418f78f158ced6decf8" title="Generates a new Maze from the vector of wall coordinates.">generateMaze</a>(walls,5,5);
+<a name="l00653"></a>00653
+<a name="l00654"></a>00654 <a class="code" href="class_player_car.html" title="A GameObject that is controlled by the player.">PlayerCar</a> player(5,3,<a class="code" href="class_maze.html#ad12c28d50f4d7457160a70a94acfe28fa699ae3e1d989e9b12bd200aa86e29e9d">Maze::RIGHT</a>);
+<a name="l00655"></a>00655
+<a name="l00656"></a>00656 list&lt;Smokescreen&gt; smokescreens;
+<a name="l00657"></a>00657 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;1429; ++i)
+<a name="l00658"></a>00658 {
+<a name="l00659"></a>00659 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame&#39;s worth of activity for the object, called every frame.">update</a>(testMaze, smokescreens);
+<a name="l00660"></a>00660 }
+<a name="l00661"></a>00661
+<a name="l00662"></a>00662 EXPECT_FLOAT_EQ(0, player.<a class="code" href="class_player_car.html#af32c01166e92d567202c8415cb3e7c88" title="Function to allow access to the amount of petrol that the PlayerCar still has.">petrol</a>());
+<a name="l00663"></a>00663 EXPECT_FLOAT_EQ(0.05, player.<a class="code" href="class_car.html#a68b59187e1520a5d016b0894b4c116b9" title="Function to access the current speed of the car.">speed</a>());
+<a name="l00664"></a>00664
+<a name="l00665"></a>00665 player.<a class="code" href="class_player_car.html#aaa8b9d66c0c4e4eab5a303dd0a4e5f39" title="Function that is called when the PlayerCar collides with a Checkpoint.">gotCheckpoint</a>();
+<a name="l00666"></a>00666 EXPECT_GT(player.<a class="code" href="class_player_car.html#af32c01166e92d567202c8415cb3e7c88" title="Function to allow access to the amount of petrol that the PlayerCar still has.">petrol</a>(), 0);
+<a name="l00667"></a>00667 EXPECT_FLOAT_EQ(0.1, player.<a class="code" href="class_car.html#a68b59187e1520a5d016b0894b4c116b9" title="Function to access the current speed of the car.">speed</a>());
+<a name="l00668"></a>00668 }
+<a name="l00669"></a>00669
+<a name="l00673"></a><a class="code" href="logic_tests_8cpp.html#a2de4a45e984d28048ec0cfcd3199cfc7">00673</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_smokescreen.html" title="GameObject that causes the EnemyCar to be delayed if they crash into it.">Smokescreen</a>, destroyedAfterSetTime)
+<a name="l00674"></a>00674 {
+<a name="l00675"></a>00675 <a class="code" href="class_smokescreen.html" title="GameObject that causes the EnemyCar to be delayed if they crash into it.">Smokescreen</a> testSmokescreen(3,2);
+<a name="l00676"></a>00676
+<a name="l00677"></a>00677 <span class="keywordtype">int</span> i=0;
+<a name="l00678"></a>00678 <span class="keywordflow">while</span> (!testSmokescreen.<a class="code" href="class_game_object.html#a266871f6c0220f6b3c902075ebff8eea" title="Checks if an object has been marked for destruction, for example through a collision.">destroyed</a>())
+<a name="l00679"></a>00679 {
+<a name="l00680"></a>00680 testSmokescreen.<a class="code" href="class_limited_time_object.html#ad81a1c9aba4e21dfa40b9e6d881aba4e" title="Function that should be run on every iteration of the gameloop.">update</a>();
+<a name="l00681"></a>00681 ++i;
+<a name="l00682"></a>00682 }
+<a name="l00683"></a>00683
+<a name="l00684"></a>00684 EXPECT_EQ(60,i);
+<a name="l00685"></a>00685 }
+</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>