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 Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File 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 <vector></span>
<a name="l00056"></a>00056 <span class="preprocessor">#include <list></span>
<a name="l00057"></a>00057 <span class="preprocessor">#include <utility></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 <gtest/gtest.h></span>
<a name="l00061"></a>00061
<a name="l00062"></a>00062 <span class="preprocessor">#include "../source/logic/CollisionDetector.h"</span>
<a name="l00063"></a>00063 <span class="preprocessor">#include "../source/logic/PlayerCar.h"</span>
<a name="l00064"></a>00064 <span class="preprocessor">#include "../source/logic/EnemyCar.h"</span>
<a name="l00065"></a>00065 <span class="preprocessor">#include "../source/logic/Checkpoint.h"</span>
<a name="l00066"></a>00066 <span class="preprocessor">#include "../source/logic/Rock.h"</span>
<a name="l00067"></a>00067 <span class="preprocessor">#include "../source/logic/Smokescreen.h"</span>
<a name="l00068"></a>00068 <span class="preprocessor">#include "../source/logic/Maze.h"</span>
<a name="l00069"></a>00069 <span class="preprocessor">#include "../source/logic/MazeMath.h"</span>
<a name="l00070"></a>00070 <span class="preprocessor">#include "../source/logic/DestroyedObjectPopup.h"</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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00084"></a>00084 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00104"></a>00104 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00124"></a>00124 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00144"></a>00144 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00165"></a>00165 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00185"></a>00185 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00205"></a>00205 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00225"></a>00225 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00245"></a>00245 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00264"></a>00264 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00283"></a>00283 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00302"></a>00302 player.<a class="code" href="class_player_car.html#ae8c5ef8fb59e015c17ddad6ed9ebf907" title="Processes one frame'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<Checkpoint> 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<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<PlayerCar> players;
<a name="l00347"></a>00347 list<EnemyCar> enemies;
<a name="l00348"></a>00348 list<Checkpoint> checkpoints;
<a name="l00349"></a>00349 list<Rock> rocks;
<a name="l00350"></a>00350 list<Smokescreen> 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<PlayerCar>::const_iterator playerIter = players.begin();
<a name="l00366"></a>00366 EXPECT_FALSE(playerIter->destroyed());
<a name="l00367"></a>00367 ++playerIter;
<a name="l00368"></a>00368 EXPECT_TRUE(playerIter->destroyed());
<a name="l00369"></a>00369 ++playerIter;
<a name="l00370"></a>00370 EXPECT_FALSE(playerIter->destroyed());
<a name="l00371"></a>00371 ++playerIter;
<a name="l00372"></a>00372 EXPECT_TRUE(playerIter->destroyed());
<a name="l00373"></a>00373
<a name="l00374"></a>00374 list<EnemyCar>::const_iterator enemyIter = enemies.begin();
<a name="l00375"></a>00375 EXPECT_TRUE(enemyIter->destroyed());
<a name="l00376"></a>00376 ++enemyIter;
<a name="l00377"></a>00377 EXPECT_FALSE(enemyIter->destroyed());
<a name="l00378"></a>00378 ++enemyIter;
<a name="l00379"></a>00379 EXPECT_FALSE(enemyIter->destroyed());
<a name="l00380"></a>00380 ++enemyIter;
<a name="l00381"></a>00381 EXPECT_TRUE(enemyIter->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<PlayerCar> players;
<a name="l00390"></a>00390 list<EnemyCar> enemies;
<a name="l00391"></a>00391 list<Checkpoint> checkpoints;
<a name="l00392"></a>00392 list<Rock> rocks;
<a name="l00393"></a>00393 list<Smokescreen> 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<PlayerCar>::const_iterator playerIter = players.begin();
<a name="l00409"></a>00409 EXPECT_FALSE(playerIter->destroyed());
<a name="l00410"></a>00410 ++playerIter;
<a name="l00411"></a>00411 EXPECT_TRUE(playerIter->destroyed());
<a name="l00412"></a>00412 ++playerIter;
<a name="l00413"></a>00413 EXPECT_FALSE(playerIter->destroyed());
<a name="l00414"></a>00414 ++playerIter;
<a name="l00415"></a>00415 EXPECT_TRUE(playerIter->destroyed());
<a name="l00416"></a>00416
<a name="l00417"></a>00417 list<Rock>::const_iterator rockIter = rocks.begin();
<a name="l00418"></a>00418 EXPECT_FALSE(rockIter->destroyed());
<a name="l00419"></a>00419 ++rockIter;
<a name="l00420"></a>00420 EXPECT_FALSE(rockIter->destroyed());
<a name="l00421"></a>00421 ++rockIter;
<a name="l00422"></a>00422 EXPECT_FALSE(rockIter->destroyed());
<a name="l00423"></a>00423 ++rockIter;
<a name="l00424"></a>00424 EXPECT_FALSE(rockIter->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<PlayerCar> players;
<a name="l00433"></a>00433 list<EnemyCar> enemies;
<a name="l00434"></a>00434 list<Checkpoint> checkpoints;
<a name="l00435"></a>00435 list<Rock> rocks;
<a name="l00436"></a>00436 list<Smokescreen> 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<PlayerCar>::const_iterator playerIter = players.begin();
<a name="l00452"></a>00452 EXPECT_FALSE(playerIter->destroyed());
<a name="l00453"></a>00453 ++playerIter;
<a name="l00454"></a>00454 EXPECT_FALSE(playerIter->destroyed());
<a name="l00455"></a>00455 ++playerIter;
<a name="l00456"></a>00456 EXPECT_FALSE(playerIter->destroyed());
<a name="l00457"></a>00457 ++playerIter;
<a name="l00458"></a>00458 EXPECT_FALSE(playerIter->destroyed());
<a name="l00459"></a>00459
<a name="l00460"></a>00460 list<Checkpoint>::const_iterator checkpointIter = checkpoints.begin();
<a name="l00461"></a>00461 EXPECT_TRUE(checkpointIter->destroyed());
<a name="l00462"></a>00462 ++checkpointIter;
<a name="l00463"></a>00463 EXPECT_FALSE(checkpointIter->destroyed());
<a name="l00464"></a>00464 ++checkpointIter;
<a name="l00465"></a>00465 EXPECT_FALSE(checkpointIter->destroyed());
<a name="l00466"></a>00466 ++checkpointIter;
<a name="l00467"></a>00467 EXPECT_TRUE(checkpointIter->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<PlayerCar> players;
<a name="l00476"></a>00476 list<EnemyCar> enemies;
<a name="l00477"></a>00477 list<Checkpoint> checkpoints;
<a name="l00478"></a>00478 list<Rock> rocks;
<a name="l00479"></a>00479 list<Smokescreen> 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<EnemyCar>::const_iterator enemyIter = enemies.begin();
<a name="l00495"></a>00495 EXPECT_GT(enemyIter->speed(),0);
<a name="l00496"></a>00496 ++enemyIter;
<a name="l00497"></a>00497 EXPECT_FLOAT_EQ(0, enemyIter->speed());
<a name="l00498"></a>00498 ++enemyIter;
<a name="l00499"></a>00499 EXPECT_GT(enemyIter->speed(),0);
<a name="l00500"></a>00500 ++enemyIter;
<a name="l00501"></a>00501 EXPECT_FLOAT_EQ(0, enemyIter->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<pair<int,int> > 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<pair<int,int> > 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<pair<int,int> > 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<PlayerCar> players;
<a name="l00630"></a>00630 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<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<pair<int,int> > 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<Smokescreen> smokescreens;
<a name="l00657"></a>00657 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<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'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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </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  <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>
|