summaryrefslogtreecommitdiff
path: root/docs/html/logic_tests_8cpp_source.html
blob: e3344b484106d7332ced3b2c62775ac8e6e393cf (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
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
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
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>