Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pokemon.h"
- #include <assert.h>
- #include <string.h>
- #include <stdlib.h>
- #define MINIMUM_EXPERIENCE 1
- #define MAXIMUM_EXPERIENCE 9901
- /* static bool*/
- Pokemon pokemonCreate(char* name, PokemonType type, int experience,
- int max_number_of_moves) {
- Pokemon pokemon = malloc(sizeof(*pokemon));
- if (pokemon == NULL) {
- return NULL;
- }
- pokemon->moves = malloc(sizeof(*(pokemon->moves)) * max_number_of_moves);
- if (pokemon->moves == NULL) {
- return NULL;
- }
- for(int i= 0; i < max_number_of_moves; i++) {
- pokemon->moves[i] = malloc(sizeof(*(pokemon->moves[i])));
- if(pokemon->moves[i] == NULL) {
- return NULL;
- }
- }
- pokemon->name = name;
- char* empty_string = "";
- if ((name == NULL) || (!(strcmp(name, empty_string)))) {
- return NULL;
- }
- pokemon->type = type;
- if (!(type >= TYPE_NORMAL && type <= TYPE_ELECTRIC)) {
- return NULL;
- }
- pokemon->experience = experience;
- if ((experience < MINIMUM_EXPERIENCE)
- || (experience > MAXIMUM_EXPERIENCE)) {
- return NULL;
- }
- pokemon->max_number_of_moves = max_number_of_moves;
- if ((max_number_of_moves) < 1) {
- return NULL;
- }
- pokemon->number_of_moves = 0;
- int level = (experience / 100) + 1;
- pokemon->health_points = (100 + level) * 10;
- return pokemon;
- }
- void pokemonDestroy(Pokemon pokemon) {
- if (pokemon == NULL) {
- return;
- }
- free(pokemon->moves);
- free(pokemon);
- return;
- }
- Pokemon pokemonCopy(Pokemon pokemon) {
- if (pokemon == NULL) {
- return NULL;
- }
- Pokemon pokemon_copy = malloc(sizeof(*pokemon));
- if (pokemon_copy == NULL) {
- return NULL;
- }
- pokemon_copy->name = pokemon->name;
- pokemon_copy->type = pokemon->type;
- pokemon_copy->experience = pokemon->experience;
- pokemon_copy->health_points = pokemon->health_points;
- pokemon_copy->moves = pokemon->moves;
- pokemon_copy->number_of_moves = pokemon->number_of_moves;
- pokemon_copy->max_number_of_moves = pokemon->max_number_of_moves;
- return pokemon_copy;
- }
- PokemonResult pokemonTeachMove(Pokemon pokemon, char* move_name,
- PokemonType type, int max_power_points,
- int strength) {
- char* empty_string = "";
- if ((pokemon == NULL) || (move_name == NULL)) {
- return POKEMON_NULL_ARG;
- }
- if (!(strcmp(empty_string, move_name))) {
- return POKEMON_INVALID_MOVE_NAME;
- }
- if (!(type >= TYPE_NORMAL) && (type <= TYPE_ELECTRIC)) {
- return POKEMON_INVALID_TYPE;
- }
- if (max_power_points < 1) {
- return POKEMON_INVALID_POWER_POINTS;
- }
- if (strength < 1) {
- return POKEMON_INVALID_STRENGTH;
- }
- if ((type != pokemon->type) && (type != TYPE_NORMAL)) {
- return POKEMON_INCOMPATIBLE_MOVE_TYPE;
- }
- PokemonMove learning_move = malloc(sizeof(*learning_move));
- if (learning_move == NULL) {
- return POKEMON_OUT_OF_MEM;
- }
- char* copied_move_name = malloc(sizeof(char) * strlen(move_name));
- if (copied_move_name == NULL) {
- free(learning_move);
- return POKEMON_OUT_OF_MEM;
- }
- strcpy(copied_move_name, move_name);
- learning_move->name = copied_move_name;
- learning_move->type = type;
- learning_move->max_power_points = max_power_points;
- learning_move->power_points = max_power_points;
- learning_move->strength = strength;
- for (int i = 0; i < (pokemon->number_of_moves); i++) {
- if ((strcmp(((pokemon->moves[i])->name),
- learning_move->name) == 0)) {
- free(copied_move_name);
- free(learning_move);
- return POKEMON_MOVE_ALREADY_EXISTS;
- }
- }
- int i = 0;
- if ((pokemon->number_of_moves) == (pokemon->max_number_of_moves)) {
- int position_of_grater_move = 0;
- for (i = 0; i < (pokemon->number_of_moves); i++) {
- if ((strcmp(((pokemon->moves[position_of_grater_move])->name),
- ((pokemon->moves[i])->name)) < 0)) {
- position_of_grater_move = i;
- }
- }
- }
- pokemon->moves[i] = learning_move;
- pokemon->number_of_moves++;
- //free(copied_move_name);
- // free(learning_move);
- return POKEMON_SUCCESS;
- }
- PokemonResult pokemonUnteachMove(Pokemon pokemon, char* move_name) {
- if ((pokemon == NULL) || (move_name == NULL)) {
- return POKEMON_NULL_ARG;
- }
- char* empty_string = "";
- if ((strcmp(move_name, empty_string)) == 0) {
- return POKEMON_INVALID_MOVE_NAME;
- }
- for (int i = 0; i < (pokemon->number_of_moves); i++) {
- if (strcmp((pokemon->moves[i])->name, move_name) == 0) {
- (pokemon->moves[i])->name = "";
- (pokemon->moves[i])->type = 0;
- (pokemon->moves[i])->power_points = 0;
- (pokemon->moves[i])->max_power_points = 0;
- (pokemon->moves[i])->strength = 0;
- pokemon->number_of_moves--;
- return POKEMON_SUCCESS;
- }
- }
- return POKEMON_MOVE_DOES_NOT_EXIST;
- }
- int pokemonGetLevel(Pokemon pokemon) {
- assert(pokemon != NULL);
- int level = ((pokemon->experience / 100) + 1);
- return level;
- }
- int pokemonGetRank(Pokemon pokemon) {
- assert(pokemon != NULL);
- if (pokemon->number_of_moves == 0) {
- return 0;
- }
- int average_move_strength = 0;
- int i;
- for (i = 0; i < pokemon->number_of_moves; i++) {
- average_move_strength += (pokemon->moves[i])->strength;
- }
- average_move_strength /= 2;
- return (pokemonGetLevel(pokemon) + average_move_strength);
- }
- PokemonResult pokemonUseMove(Pokemon pokemon, Pokemon opponent_pokemon,
- char* move_name) {
- if (pokemon == NULL || opponent_pokemon == NULL || move_name == NULL) {
- return POKEMON_NULL_ARG;
- }
- char* empty_move_name = "";
- if (strcmp(move_name, empty_move_name) == 0) {
- return POKEMON_INVALID_MOVE_NAME;
- }
- int i;
- int check_move = 0;
- for (i = 0; i < pokemon->number_of_moves; i++) {
- if (strcmp((pokemon->moves[i])->name, move_name) == 0) {
- check_move = 1;
- break;
- }
- }
- if (!check_move) {
- return POKEMON_MOVE_DOES_NOT_EXIST;
- }
- if (((pokemon->moves[i])->power_points) == 0) {
- return POKEMON_NO_POWER_POINTS;
- }
- if (((pokemon->health_points) == 0)
- || ((opponent_pokemon->health_points) == 0)) {
- return POKEMON_NO_HEALTH_POINTS;
- }
- int factor = 1;
- if ((((pokemon->moves[i])->type == TYPE_FIRE)
- && (opponent_pokemon->type == TYPE_GRASS))
- || (((pokemon->moves[i])->type == TYPE_WATER)
- && (opponent_pokemon->type == TYPE_FIRE))
- || (((pokemon->moves[i])->type == TYPE_GRASS)
- && (opponent_pokemon->type == TYPE_WATER))
- || (((pokemon->moves[i])->type == TYPE_ELECTRIC)
- && (opponent_pokemon->type == TYPE_WATER))) {
- factor = 2;
- }
- int health_points_lost = ((2 * pokemonGetLevel(pokemon)
- + ((pokemon->moves[i])->strength)) * factor);
- opponent_pokemon->health_points -= health_points_lost;
- if (opponent_pokemon->health_points < 0) {
- health_points_lost += opponent_pokemon->health_points;
- opponent_pokemon->health_points = 0;
- }
- ((pokemon->moves[i])->power_points)--;
- pokemon->experience += health_points_lost;
- if (pokemon->experience > MAXIMUM_EXPERIENCE) {
- pokemon->experience = MAXIMUM_EXPERIENCE;
- }
- return POKEMON_SUCCESS;
- }
- PokemonResult pokemonHeal(Pokemon pokemon) {
- if (pokemon == NULL) {
- return POKEMON_NULL_ARG;
- }
- pokemon->health_points = (100 + pokemonGetLevel(pokemon)) * 10;
- int i = 0;
- for (i = 0; i < pokemon->number_of_moves; i++) {
- (pokemon->moves[i])->power_points =
- (pokemon->moves[i])->max_power_points;
- }
- return POKEMON_SUCCESS;
- }
- PokemonResult pokemonEvolve(Pokemon pokemon, char* new_name) {
- if (pokemon == NULL || new_name == NULL) {
- return POKEMON_NULL_ARG;
- }
- char* empty_new_name = "";
- if (strcmp(new_name, empty_new_name) == 0) {
- return POKEMON_INVALID_MOVE_NAME;
- }
- if (pokemon->experience >= MAXIMUM_EXPERIENCE) {
- return POKEMON_CANNOT_EVOLVE;
- }
- pokemon->name = new_name;
- if ((pokemon->experience) % 100 == 0) {
- (pokemon->experience)++;
- } else
- pokemon->experience += (((pokemon->experience) / 100) * 100 + 101);
- return POKEMON_SUCCESS;
- }
- PokemonResult pokemonPrintName(Pokemon pokemon, FILE* file) {
- if ((pokemon == NULL) || (file == NULL)) {
- return POKEMON_NULL_ARG;
- }
- fprintf(file, "%s", pokemon->name);
- return POKEMON_SUCCESS;
- }
- PokemonResult pokemonPrintVoice(Pokemon pokemon, FILE* file) {
- if ((pokemon == NULL) || (file == NULL)) {
- return POKEMON_NULL_ARG;
- }
- int i = 0;
- int count = (int)strlen(pokemon->name);
- for (i = 0; i < strlen(pokemon->name); i++) {
- if (!((((pokemon->name[i]) >= 'A') && ((pokemon->name[i]) <= 'Z'))
- || (((pokemon->name[i]) >= 'a') && ((pokemon->name[i]) <= 'z')))) {
- count--;
- }
- }
- char* name_only_letters = malloc(sizeof(char) * count);
- if (name_only_letters == NULL) {
- return POKEMON_OUT_OF_MEM;
- }
- int j = 0;
- for (i = 0; i < strlen(pokemon->name); i++) {
- if ((((pokemon->name[i]) >= 'A') && ((pokemon->name[i]) <= 'Z'))
- || (((pokemon->name[i]) >= 'a') && ((pokemon->name[i]) <= 'z'))) {
- name_only_letters[j] = pokemon->name[i];
- j++;
- }
- }
- int length_voice = count - (count / 2);
- if (count < 4) {
- fprintf(file, "%s-%s", name_only_letters, name_only_letters);
- free(name_only_letters);
- } else {
- char* half_name = malloc(sizeof(char) * length_voice);
- if (half_name == NULL) {
- return POKEMON_OUT_OF_MEM;
- }
- for (i = 0; i < length_voice; i++) {
- half_name[i] = name_only_letters[i];
- }
- fprintf(file, "%s-%s", half_name, half_name);
- free(name_only_letters);
- free(half_name);
- }
- return POKEMON_SUCCESS;
- }
- //now I will pass pokemon_test.c
- #include <stdbool.h>
- #include "aux_macros.h"
- #include "pokemon.h"
- static bool testCombo() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- TEST_DIFFERENT(result, pikachu, NULL);
- Pokemon pikachu_copy = pokemonCopy(pikachu);
- TEST_DIFFERENT(result, pikachu_copy, NULL);
- pokemonDestroy(pikachu_copy);
- TEST_EQUALS(result, pokemonTeachMove(
- pikachu, "Thunder", TYPE_ELECTRIC, 10, 110), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonUnteachMove(pikachu, "Thunder"), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonGetLevel(pikachu), 1);
- TEST_EQUALS(result, pokemonGetRank(pikachu), 0);
- Pokemon squirtle = pokemonCreate("Squirtle", TYPE_WATER, 10, 4);
- pokemonTeachMove(squirtle, "Bubble", TYPE_WATER, 30, 40);
- TEST_EQUALS(result, pokemonUseMove(
- squirtle, pikachu, "Bubble"), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonHeal(pikachu), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonEvolve(squirtle, "Wartortle"), POKEMON_SUCCESS);
- pokemonDestroy(pikachu);
- pokemonDestroy(squirtle);
- return result;
- }
- static bool testPokemonCreate() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- TEST_DIFFERENT(result, pikachu, NULL);
- pikachu = pokemonCreate("", TYPE_ELECTRIC, 20, 4);
- TEST_EQUALS(result, pikachu, NULL);
- pikachu = pokemonCreate(NULL, TYPE_ELECTRIC, 20, 4);
- TEST_EQUALS(result, pikachu, NULL);
- pikachu = pokemonCreate("Pikachu", 666, 20, 4);
- TEST_EQUALS(result, pikachu, NULL);
- pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, -20, 4);
- TEST_EQUALS(result, pikachu, NULL);
- pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 9902, 4);
- TEST_EQUALS(result, pikachu, NULL);
- pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 0);
- TEST_EQUALS(result, pikachu, NULL);
- pokemonDestroy(pikachu);
- return result;
- }
- static bool testPokemonDestroy() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- pokemonDestroy(NULL);
- TEST_DIFFERENT(result, pikachu, NULL);
- pokemonDestroy(pikachu);
- TEST_EQUALS(result, pikachu, NULL);
- return result;
- }
- static bool testPokemonCopy() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- Pokemon pikachu_copy = pokemonCopy(pikachu);
- TEST_DIFFERENT(result, pikachu_copy, NULL);
- pikachu_copy = pokemonCopy(NULL);
- TEST_EQUALS(result, pikachu_copy, NULL);
- pokemonDestroy(pikachu);
- pokemonDestroy(pikachu_copy);
- return result;
- }
- static bool testPokemonTeachMove() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 10, 110), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonTeachMove(NULL, "Thunder", TYPE_ELECTRIC, 10, 110), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, NULL, TYPE_ELECTRIC, 10, 110), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "", TYPE_ELECTRIC, 10, 110), POKEMON_INVALID_MOVE_NAME);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Thunder", 666, 10, 110), POKEMON_INVALID_TYPE);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Thunder", 100, 10, 110), POKEMON_INVALID_TYPE);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 0, 110), POKEMON_INVALID_POWER_POINTS);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 10, 0), POKEMON_INVALID_STRENGTH);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Bubble", TYPE_WATER, 10, 110), POKEMON_INCOMPATIBLE_MOVE_TYPE);
- TEST_EQUALS(result, pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 10, 110), POKEMON_MOVE_ALREADY_EXISTS);
- pokemonDestroy(pikachu);
- return result;
- }
- static bool testPokemonUnteachMove() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 10, 110);
- TEST_EQUALS(result, pokemonUnteachMove(pikachu, "Thunder"), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonUnteachMove(NULL, "Thunder"), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonUnteachMove(pikachu, NULL), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonUnteachMove(pikachu, ""), POKEMON_INVALID_MOVE_NAME);
- TEST_EQUALS(result, pokemonUnteachMove(pikachu, "Bubble"), POKEMON_MOVE_DOES_NOT_EXIST);
- pokemonDestroy(pikachu);
- return result;
- }
- static bool testPokemonGetLevel() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- int actual_level = (20 / 100) + 1;
- TEST_EQUALS(result, pokemonGetLevel(pikachu), actual_level);
- pokemonDestroy(pikachu);
- return result;
- }
- static bool testPokemonGetRank() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- TEST_EQUALS(result, pokemonGetRank(pikachu), 0);
- int expected_rank = 0;
- pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 10, 110);
- expected_rank = pokemonGetLevel(pikachu) + 110;
- TEST_EQUALS(result, pokemonGetRank(pikachu), expected_rank);
- pokemonTeachMove(pikachu, "Thundershock", TYPE_ELECTRIC, 15, 45);
- expected_rank = pokemonGetLevel(pikachu) + (110 + 45) / 2;
- TEST_EQUALS(result, pokemonGetRank(pikachu), expected_rank);
- pokemonTeachMove(pikachu, "Quick Attack", TYPE_NORMAL, 20, 40);
- expected_rank = pokemonGetLevel(pikachu) + (110 + 45 + 40) / 3;
- TEST_EQUALS(result, pokemonGetRank(pikachu), expected_rank);
- pokemonTeachMove(pikachu, "Thunderbolt", TYPE_ELECTRIC, 15, 90);
- expected_rank = pokemonGetLevel(pikachu) + (110 + 45 + 40 + 90) / 4;
- TEST_EQUALS(result, pokemonGetRank(pikachu), expected_rank);
- pokemonDestroy(pikachu);
- return result;
- }
- static bool testPokemonUseMove() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 1000, 4);
- Pokemon squirtle = pokemonCreate("Squirtle", TYPE_WATER, 10, 4);
- pokemonTeachMove(pikachu, "Thunder", TYPE_ELECTRIC, 1, 110);
- TEST_EQUALS(result, pokemonUseMove(pikachu, squirtle, "Thunder"), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonUseMove(pikachu, squirtle, "Thunder"), POKEMON_NO_POWER_POINTS);
- TEST_EQUALS(result, pokemonUseMove(NULL, squirtle, "Thunder"), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonUseMove(pikachu, NULL, "Thunder"), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonUseMove(pikachu, squirtle, NULL), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonUseMove(pikachu, squirtle, ""), POKEMON_INVALID_MOVE_NAME);
- TEST_EQUALS(result, pokemonUseMove(pikachu, squirtle, "Tackle"), POKEMON_MOVE_DOES_NOT_EXIST);
- pokemonTeachMove(pikachu, "Thunderbolt", TYPE_ELECTRIC, 15, 1000);
- pokemonUseMove(pikachu, squirtle, "Thunderbolt");
- TEST_EQUALS(result, pokemonUseMove(pikachu, squirtle, "Thunderbolt"), POKEMON_NO_HEALTH_POINTS);//caso in cui va a -0
- Pokemon charizard = pokemonCreate("Charizard", TYPE_FIRE, 200, 4);
- TEST_EQUALS(result, pokemonUseMove(pikachu, charizard, "Thunderbolt"), POKEMON_NO_HEALTH_POINTS);//caso in cui va a 0
- Pokemon charmander = pokemonCreate("Charmander", TYPE_FIRE, 5000, 4);
- pokemonUseMove(pikachu, charmander, "Thunderbolt");
- TEST_DIFFERENT(result, pokemonUseMove(pikachu, charmander, "Thunderbolt"), POKEMON_NO_HEALTH_POINTS);//caso in cui e ancora vivo
- pokemonTeachMove(squirtle, "Bubble", TYPE_WATER, 30, 40);
- TEST_EQUALS(result, pokemonUseMove(squirtle, pikachu, "Bubble"), POKEMON_NO_HEALTH_POINTS);
- pokemonDestroy(pikachu);
- pokemonDestroy(squirtle);
- pokemonDestroy(charizard);
- pokemonDestroy(charmander);
- return result;
- }
- static bool testPokemonHeal() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 900, 4);
- Pokemon squirtle = pokemonCreate("Squirtle", TYPE_WATER, 10, 4);
- pokemonTeachMove(pikachu, "Thunderbolt", TYPE_ELECTRIC, 2, 500);
- pokemonUseMove(pikachu, squirtle, "Thunderbolt");
- TEST_EQUALS(result, pokemonHeal(squirtle), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonHeal(NULL), POKEMON_NULL_ARG);
- TEST_DIFFERENT(result, pokemonUseMove(pikachu, squirtle, "Thunderbolt"), POKEMON_NO_HEALTH_POINTS);
- pokemonHeal(pikachu);
- pokemonHeal(squirtle);
- TEST_DIFFERENT(result, pokemonUseMove(pikachu, squirtle, "Thunderbolt"), POKEMON_NO_POWER_POINTS);
- pokemonDestroy(pikachu);
- pokemonDestroy(squirtle);
- return result;
- }
- static bool testPokemonEvolve() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 900, 4);
- TEST_EQUALS(result, pokemonEvolve(pikachu, "Raichu"), POKEMON_SUCCESS);
- TEST_EQUALS(result, pokemonEvolve(NULL, "Raichu"), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonEvolve(pikachu, NULL), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonEvolve(pikachu, ""), POKEMON_INVALID_MOVE_NAME);
- Pokemon squirtle = pokemonCreate("Squirtle", TYPE_WATER, 9901, 4);
- TEST_EQUALS(result, pokemonEvolve(squirtle, "Wartartle"), POKEMON_CANNOT_EVOLVE);
- Pokemon bulbasaur = pokemonCreate("Bulbasaur", TYPE_GRASS, 9900, 4);
- pokemonEvolve(bulbasaur, "Ivysaur");
- TEST_DIFFERENT(result, pokemonEvolve(bulbasaur, "Venusaur"), POKEMON_CANNOT_EVOLVE);
- Pokemon charmander = pokemonCreate("Charmander", TYPE_FIRE, 9850, 4);
- pokemonEvolve(charmander, "Charmeleon");
- TEST_DIFFERENT(result, pokemonEvolve(charmander, "Charizard"), POKEMON_CANNOT_EVOLVE);
- pokemonDestroy(pikachu);
- pokemonDestroy(squirtle);
- pokemonDestroy(bulbasaur);
- pokemonDestroy(charmander);
- return result;
- }
- static bool testPokemonPrintName() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- TEST_EQUALS(result, pokemonPrintName(NULL, stdout), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonPrintName(pikachu, NULL), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonPrintName(pikachu, stdout), POKEMON_SUCCESS);
- pokemonDestroy(pikachu);
- return result;
- }
- static bool testPokemonPrintVoice() {
- bool result = true;
- Pokemon pikachu = pokemonCreate("Pikachu", TYPE_ELECTRIC, 20, 4);
- TEST_EQUALS(result, pokemonPrintName(NULL, stdout), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonPrintName(pikachu, NULL), POKEMON_NULL_ARG);
- TEST_EQUALS(result, pokemonPrintName(pikachu, stdout), POKEMON_SUCCESS);
- pokemonDestroy(pikachu);
- return result;
- }
- int main() {
- RUN_TEST(testCombo);
- RUN_TEST(testPokemonCreate);
- RUN_TEST(testPokemonDestroy);
- RUN_TEST(testPokemonCopy);
- RUN_TEST(testPokemonTeachMove);
- RUN_TEST(testPokemonUnteachMove);
- RUN_TEST(testPokemonGetLevel);
- RUN_TEST(testPokemonGetRank);
- RUN_TEST(testPokemonUseMove);
- RUN_TEST(testPokemonHeal);
- RUN_TEST(testPokemonEvolve);
- RUN_TEST(testPokemonPrintName);
- RUN_TEST(testPokemonPrintVoice);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement