Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Mon May 25 22:18:11 2020 +0000
Revision:
83:35d1e846eab2
Child:
85:87bc28b151d8
Added many unit tests for PlayEngine class wich all passed!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 83:35d1e846eab2 1 #ifndef PLAYENGINE_TEST_H
evanso 83:35d1e846eab2 2 #define PLAYENGINE_TEST_H
evanso 83:35d1e846eab2 3
evanso 83:35d1e846eab2 4 /** PlayEngine Test
evanso 83:35d1e846eab2 5 * @brief Checks that the engine functions of the playble part of game work
evanso 83:35d1e846eab2 6 * @author Benjamin Evans, University of Leeds
evanso 83:35d1e846eab2 7 * @date May 2020
evanso 83:35d1e846eab2 8 * @return true if test are passed
evanso 83:35d1e846eab2 9 */
evanso 83:35d1e846eab2 10
evanso 83:35d1e846eab2 11 bool read_accelerometer_direction_test(Direction expected_d, float roll,
evanso 83:35d1e846eab2 12 float pitch) {
evanso 83:35d1e846eab2 13 // Objects reqired for test
evanso 83:35d1e846eab2 14 PlayEngine engine;;
evanso 83:35d1e846eab2 15
evanso 83:35d1e846eab2 16 printf("read_accelerometer_direction = %d : ", expected_d);
evanso 83:35d1e846eab2 17
evanso 83:35d1e846eab2 18 engine.read_accelerometer_direction(roll, pitch);
evanso 83:35d1e846eab2 19
evanso 83:35d1e846eab2 20 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 21 if (expected_d == engine.d_) {
evanso 83:35d1e846eab2 22 printf ( "Passed!\n");
evanso 83:35d1e846eab2 23 return true;
evanso 83:35d1e846eab2 24 } else {
evanso 83:35d1e846eab2 25 printf ( "Failed! value = %d (expecting %d)\n", expected_d,
evanso 83:35d1e846eab2 26 engine.d_);
evanso 83:35d1e846eab2 27 return false;
evanso 83:35d1e846eab2 28 }
evanso 83:35d1e846eab2 29 }
evanso 83:35d1e846eab2 30
evanso 83:35d1e846eab2 31 bool spawn_aliens_test(int expected_alien_num) {
evanso 83:35d1e846eab2 32 // Objects reqired for test
evanso 83:35d1e846eab2 33 PlayEngine engine;
evanso 83:35d1e846eab2 34 engine.alien_number_ = expected_alien_num;
evanso 83:35d1e846eab2 35
evanso 83:35d1e846eab2 36 printf("spawn_aliens : ");
evanso 83:35d1e846eab2 37
evanso 83:35d1e846eab2 38 //spawn number of expected aliens
evanso 83:35d1e846eab2 39 for(int i = 1; i <= expected_alien_num; i++) {
evanso 83:35d1e846eab2 40 engine.spawn_aliens();
evanso 83:35d1e846eab2 41 }
evanso 83:35d1e846eab2 42
evanso 83:35d1e846eab2 43 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 44 if (engine.alien_vector.size() == expected_alien_num) {
evanso 83:35d1e846eab2 45 printf ( "Passed!\n");
evanso 83:35d1e846eab2 46 return true;
evanso 83:35d1e846eab2 47 } else {
evanso 83:35d1e846eab2 48 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 49 engine.alien_vector.size(), expected_alien_num);
evanso 83:35d1e846eab2 50 return false;
evanso 83:35d1e846eab2 51 }
evanso 83:35d1e846eab2 52 }
evanso 83:35d1e846eab2 53
evanso 83:35d1e846eab2 54 bool create_alien_test(int expected_alien_num) {
evanso 83:35d1e846eab2 55 // Objects reqired for test
evanso 83:35d1e846eab2 56 PlayEngine engine;
evanso 83:35d1e846eab2 57 engine.alien_number_ = expected_alien_num;
evanso 83:35d1e846eab2 58
evanso 83:35d1e846eab2 59 printf("create_aliens : ");
evanso 83:35d1e846eab2 60
evanso 83:35d1e846eab2 61 //spawn number of expected aliens
evanso 83:35d1e846eab2 62 for(int i = 1; i <= expected_alien_num; i++) {
evanso 83:35d1e846eab2 63 engine.create_alien();
evanso 83:35d1e846eab2 64 }
evanso 83:35d1e846eab2 65
evanso 83:35d1e846eab2 66 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 67 if (engine.alien_vector.size() == expected_alien_num) {
evanso 83:35d1e846eab2 68 printf ( "Passed!\n");
evanso 83:35d1e846eab2 69 return true;
evanso 83:35d1e846eab2 70 } else {
evanso 83:35d1e846eab2 71 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 72 engine.alien_vector.size(), expected_alien_num);
evanso 83:35d1e846eab2 73 return false;
evanso 83:35d1e846eab2 74 }
evanso 83:35d1e846eab2 75 }
evanso 83:35d1e846eab2 76
evanso 83:35d1e846eab2 77 bool create_explosion_test(int expected_explosion_num) {
evanso 83:35d1e846eab2 78 // Objects reqired for test
evanso 83:35d1e846eab2 79 PlayEngine engine;
evanso 83:35d1e846eab2 80
evanso 83:35d1e846eab2 81 Vector2D pos = {5,4};
evanso 83:35d1e846eab2 82
evanso 83:35d1e846eab2 83 printf("Create_explosion : ");
evanso 83:35d1e846eab2 84
evanso 83:35d1e846eab2 85 //spawn number of expected aliens
evanso 83:35d1e846eab2 86 for(int i = 1; i <= expected_explosion_num; i++) {
evanso 83:35d1e846eab2 87 engine.create_explosion(pos);
evanso 83:35d1e846eab2 88 }
evanso 83:35d1e846eab2 89
evanso 83:35d1e846eab2 90 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 91 if (engine.explosion_vector.size() == expected_explosion_num) {
evanso 83:35d1e846eab2 92 printf ( "Passed!\n");
evanso 83:35d1e846eab2 93 return true;
evanso 83:35d1e846eab2 94 } else {
evanso 83:35d1e846eab2 95 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 96 engine.explosion_vector.size(), expected_explosion_num);
evanso 83:35d1e846eab2 97 return false;
evanso 83:35d1e846eab2 98 }
evanso 83:35d1e846eab2 99 }
evanso 83:35d1e846eab2 100
evanso 83:35d1e846eab2 101 bool draw_explosions_test(int expected_pixel_status, int expected_postion_x,
evanso 83:35d1e846eab2 102 int expected_postion_y) {
evanso 83:35d1e846eab2 103 // Objects reqired for test
evanso 83:35d1e846eab2 104 PlayEngine engine;
evanso 83:35d1e846eab2 105 Gamepad pad;
evanso 83:35d1e846eab2 106 N5110 lcd;
evanso 83:35d1e846eab2 107
evanso 83:35d1e846eab2 108 printf("Draw_explosion : ");
evanso 83:35d1e846eab2 109
evanso 83:35d1e846eab2 110 // Set explosion position
evanso 83:35d1e846eab2 111 Vector2D pos = {expected_postion_x,expected_postion_y};
evanso 83:35d1e846eab2 112 engine.create_explosion(pos);
evanso 83:35d1e846eab2 113
evanso 83:35d1e846eab2 114 engine.draw_explosions();
evanso 83:35d1e846eab2 115
evanso 83:35d1e846eab2 116 // Get pixel status
evanso 83:35d1e846eab2 117 int actual_pixel_status = lcd.getPixel(expected_postion_x+3,
evanso 83:35d1e846eab2 118 expected_postion_y+3);
evanso 83:35d1e846eab2 119
evanso 83:35d1e846eab2 120 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 121 if (actual_pixel_status == expected_pixel_status) {
evanso 83:35d1e846eab2 122 printf ( "Passed!\n");
evanso 83:35d1e846eab2 123 return true;
evanso 83:35d1e846eab2 124 } else {
evanso 83:35d1e846eab2 125 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 126 actual_pixel_status, expected_pixel_status);
evanso 83:35d1e846eab2 127 return false;
evanso 83:35d1e846eab2 128 }
evanso 83:35d1e846eab2 129 }
evanso 83:35d1e846eab2 130
evanso 83:35d1e846eab2 131 bool spawn_people_test(int expected_people_num) {
evanso 83:35d1e846eab2 132 // Objects reqired for test
evanso 83:35d1e846eab2 133 PlayEngine engine;
evanso 83:35d1e846eab2 134
evanso 83:35d1e846eab2 135 printf("spawn_people : ");
evanso 83:35d1e846eab2 136
evanso 83:35d1e846eab2 137 //spawn number of expected aliens
evanso 83:35d1e846eab2 138 for(int i = 1; i <= expected_people_num; i++) {
evanso 83:35d1e846eab2 139 engine.spawn_people();
evanso 83:35d1e846eab2 140 }
evanso 83:35d1e846eab2 141
evanso 83:35d1e846eab2 142 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 143 if (engine.people_vector.size() == expected_people_num) {
evanso 83:35d1e846eab2 144 printf ( "Passed!\n");
evanso 83:35d1e846eab2 145 return true;
evanso 83:35d1e846eab2 146 } else {
evanso 83:35d1e846eab2 147 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 148 engine.people_vector.size(), expected_people_num);
evanso 83:35d1e846eab2 149 return false;
evanso 83:35d1e846eab2 150 }
evanso 83:35d1e846eab2 151 }
evanso 83:35d1e846eab2 152
evanso 83:35d1e846eab2 153 bool create_people_test(int expected_people_num) {
evanso 83:35d1e846eab2 154 // Objects reqired for test
evanso 83:35d1e846eab2 155 PlayEngine engine;
evanso 83:35d1e846eab2 156 printf("create_people : ");
evanso 83:35d1e846eab2 157
evanso 83:35d1e846eab2 158 //spawn number of expected aliens
evanso 83:35d1e846eab2 159 for(int i = 1; i <= expected_people_num; i++) {
evanso 83:35d1e846eab2 160 engine.create_people();
evanso 83:35d1e846eab2 161 }
evanso 83:35d1e846eab2 162
evanso 83:35d1e846eab2 163 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 164 if (engine.people_vector.size() == expected_people_num) {
evanso 83:35d1e846eab2 165 printf ( "Passed!\n");
evanso 83:35d1e846eab2 166 return true;
evanso 83:35d1e846eab2 167 } else {
evanso 83:35d1e846eab2 168 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 169 engine.people_vector.size(), expected_people_num);
evanso 83:35d1e846eab2 170 return false;
evanso 83:35d1e846eab2 171 }
evanso 83:35d1e846eab2 172 }
evanso 83:35d1e846eab2 173
evanso 83:35d1e846eab2 174 bool reset_map_timer_test(Direction expected_d, bool spaceship_destroyed) {
evanso 83:35d1e846eab2 175 // Objects reqired for test
evanso 83:35d1e846eab2 176 PlayEngine engine;
evanso 83:35d1e846eab2 177
evanso 83:35d1e846eab2 178 printf("reset_map_timer %d: ",spaceship_destroyed);
evanso 83:35d1e846eab2 179
evanso 83:35d1e846eab2 180 // Pre defines varibales
evanso 83:35d1e846eab2 181 engine.spaceship_destroyed_ = spaceship_destroyed;
evanso 83:35d1e846eab2 182 engine.d_ = N;
evanso 83:35d1e846eab2 183
evanso 83:35d1e846eab2 184 engine.reset_map_timer();
evanso 83:35d1e846eab2 185
evanso 83:35d1e846eab2 186 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 187 if (engine.d_ == expected_d) {
evanso 83:35d1e846eab2 188 printf ( "Passed!\n");
evanso 83:35d1e846eab2 189 return true;
evanso 83:35d1e846eab2 190 } else {
evanso 83:35d1e846eab2 191 printf ( "Failed! value = %d (expecting %d)\n",engine.d_, expected_d);
evanso 83:35d1e846eab2 192 return false;
evanso 83:35d1e846eab2 193 }
evanso 83:35d1e846eab2 194 }
evanso 83:35d1e846eab2 195
evanso 83:35d1e846eab2 196 bool reset_map_test() {
evanso 83:35d1e846eab2 197 // Objects reqired for test
evanso 83:35d1e846eab2 198 PlayEngine engine;
evanso 83:35d1e846eab2 199
evanso 83:35d1e846eab2 200 printf("reset_map_ : ");
evanso 83:35d1e846eab2 201
evanso 83:35d1e846eab2 202 // Creat object for map functions
evanso 83:35d1e846eab2 203 engine.spawn_people();
evanso 83:35d1e846eab2 204 engine.spawn_aliens();
evanso 83:35d1e846eab2 205
evanso 83:35d1e846eab2 206 engine.reset_map();
evanso 83:35d1e846eab2 207
evanso 83:35d1e846eab2 208 // Checks if pixel is drawn and therefor testing it hasnt gone of screen
evanso 83:35d1e846eab2 209 if (engine.people_vector.size()== 0 && engine.alien_vector.size() == 0) {
evanso 83:35d1e846eab2 210 printf ( "Passed!\n");
evanso 83:35d1e846eab2 211 return true;
evanso 83:35d1e846eab2 212 } else {
evanso 83:35d1e846eab2 213 printf ( "Failed! value = %d,%d, (expecting 0,0)\n",
evanso 83:35d1e846eab2 214 engine.people_vector.size(), engine.alien_vector.size());
evanso 83:35d1e846eab2 215 return false;
evanso 83:35d1e846eab2 216 }
evanso 83:35d1e846eab2 217 }
evanso 83:35d1e846eab2 218 #endif