Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Alien/Alien_test.h

Committer:
evanso
Date:
2020-05-13
Revision:
26:1a7056eb3253
Parent:
22:053c11a202e1
Child:
27:8bb2bd97c319

File content as of revision 26:1a7056eb3253:

#ifndef ALIEN_TEST_H
#define ALIEN_TEST_H

/** Alien Test
@brief Checks that the alien draws, moves and detects collisions
@author Benjamin Evans, University of Leeds
@date May 2020
@return true if test are passed 
*/

bool alien_collision_test(bool expected_collision, bool bullet_direction,int position_x_bullet,int position_y_bullet){
    // Objects reqired for test 
    Alien alien;
    Weapons bullet;
    Gamepad pad;
    
    // Initialise alien in start postion of 10, 22 
    alien.init(pad); 
    
    printf("collision =  %s : " ,expected_collision ? "true" : "false");
    
    //set bullet direction and posisiton 
    Vector2D pos = {position_x_bullet,position_y_bullet};
    bullet.set_pos_one(pos);
    bullet.set_direction(bullet_direction);
    
    // Checks collision function
    bool actual_collision = alien.check_collision(bullet);
    
    // Checks if collision is espected 
    if (actual_collision == expected_collision) {
        printf ( "Passed!\n");
        return true;
    } else {
        printf ("Failed! value = %s (expecting  %d)\n", actual_collision ? "true" : "false", expected_collision ? "true" : "false");
        return false;
    } 
}

bool alien_movement_test(int random_direction, int expected_x_move, int expected_y_move){
    // Objects reqired for test 
    Gamepad pad;
    Alien alien;
    Spaceship spaceship;
    N5110 lcd;
    Map map;
    Direction d_;
    
    // Initialise alien in start postion of 10, 22 
    pad.init();
    alien.init(pad); 
    spaceship.init();
    
    Vector2D start_postion = alien.get_pos();
    int start_x_postion = start_postion.x;
    int start_y_postion = start_postion.y;
    printf("move_alien = %d,%d : ", start_x_postion + expected_x_move, start_y_postion + expected_y_move);
    
    // Moves alien
    alien.draw_alien(lcd,start_postion,d_, map.get_length_map(), map.get_position_x_map());
    
    //Reads finish alien positon 
    Vector2D finish_postion = alien.get_pos();
    
    // Checks final position with espected
    if (finish_postion.x == start_postion.x + expected_x_move && start_postion.y + expected_y_move) {
        printf ( "Passed!\n");
        return true;
    } else {
        int finish_x_postion = finish_postion.x ;
        int finish_y_postion = finish_postion.y ;
        printf ("Failed! value = %d,%d (expecting  %d,%d)\n", finish_x_postion, finish_y_postion, start_x_postion + expected_x_move, start_y_postion + expected_x_move);
        return false;
    } 
}

#endif