Пример #1
0
// Make sure parsing doesn't crash.
void read_all_pokemon_fields(const pkmn::pokemon::sptr& pokemon)
{
    std::string game = pokemon->get_game();
    int generation = game_generations.at(game);
    (void)generation;

    (void)pokemon->get_species();
    (void)pokemon->get_form();
    (void)pokemon->get_condition();
    (void)pokemon->get_nickname();
    (void)pokemon->get_original_trainer_name();
    (void)pokemon->get_experience();
    (void)pokemon->get_level();
    (void)pokemon->get_moves();
    (void)pokemon->get_EVs();
    (void)pokemon->get_IVs();
    (void)pokemon->get_current_hp();
    (void)pokemon->get_stats();
    (void)pokemon->get_icon_filepath();
    (void)pokemon->get_sprite_filepath();

    for(const std::string& attribute: pokemon->get_numeric_attribute_names())
    {
        (void)pokemon->get_numeric_attribute(attribute);
    }
    for(const std::string& attribute: pokemon->get_string_attribute_names())
    {
        (void)pokemon->get_string_attribute(attribute);
    }
    for(const std::string& attribute: pokemon->get_boolean_attribute_names())
    {
        (void)pokemon->get_boolean_attribute(attribute);
    }

    if(generation >= 2)
    {
        (void)pokemon->is_egg();
        (void)pokemon->get_gender();
        (void)pokemon->is_shiny();
        (void)pokemon->get_held_item();
        (void)pokemon->get_pokerus_duration();
        (void)pokemon->get_original_trainer_gender();
        (void)pokemon->get_current_trainer_friendship();
        (void)pokemon->get_level_met();
        (void)pokemon->get_location_met(false);
    }
    if(generation >= 3)
    {
        (void)pokemon->get_ability();
        (void)pokemon->get_ball();
        (void)pokemon->get_personality();
        (void)pokemon->get_markings();
        (void)pokemon->get_ribbons();
        (void)pokemon->get_contest_stats();
    }
    if(generation >= 4)
    {
        (void)pokemon->get_location_met(true);
    }
}
Пример #2
0
void pokemon_equality_check(pkmn::pokemon::sptr pkmn1, pkmn::pokemon::sptr pkmn2)
{
    BOOST_CHECK_EQUAL(pkmn1->get_species_id(), pkmn2->get_species_id());
    BOOST_CHECK_EQUAL(pkmn1->get_game_id(), pkmn2->get_game_id());

    if(pkmn1->get_species_id() == pkmn::Species::NONE)
        return;
    else if(pkmn1->get_species_id() == pkmn::Species::INVALID)
    {
        BOOST_CHECK(!memcmp(pkmn1->get_native(), pkmn2->get_native(), native_sizes[pkmn1->get_generation()]));
        return;
    }

    BOOST_CHECK_EQUAL(pkmn1->get_original_game_id(), pkmn2->get_original_game_id());
    BOOST_CHECK_EQUAL(pkmn1->get_pokemon_id(), pkmn2->get_pokemon_id());
    BOOST_CHECK_EQUAL(pkmn1->get_ability_id(), pkmn2->get_ability_id());
    BOOST_CHECK_EQUAL(pkmn1->get_item_id(), pkmn2->get_item_id());
    BOOST_CHECK_EQUAL(pkmn1->get_nature_id(), pkmn2->get_nature_id());
    BOOST_CHECK_EQUAL(pkmn1->get_form_id(), pkmn2->get_form_id());
    BOOST_CHECK(pkmn1->get_markings() == pkmn2->get_markings());
    BOOST_CHECK(pkmn1->get_ribbons().hoenn == pkmn2->get_ribbons().hoenn);
    BOOST_CHECK(pkmn1->get_ribbons().sinnoh.ribbons1 == pkmn2->get_ribbons().sinnoh.ribbons1);
    BOOST_CHECK(pkmn1->get_ribbons().sinnoh.ribbons2 == pkmn2->get_ribbons().sinnoh.ribbons2);
    BOOST_CHECK(pkmn1->get_ribbons().sinnoh.ribbons3 == pkmn2->get_ribbons().sinnoh.ribbons3);
    BOOST_CHECK(pkmn1->get_ribbons().unova == pkmn2->get_ribbons().unova);
    BOOST_CHECK(pkmn1->get_ribbons().kalos == pkmn2->get_ribbons().kalos);
    BOOST_CHECK(pkmn1->get_super_training_medals() == pkmn2->get_super_training_medals());
    BOOST_CHECK(pkmn1->get_pokerus() == pkmn2->get_pokerus());
    BOOST_CHECK(pkmn1->get_nickname() == pkmn2->get_nickname());
    BOOST_CHECK(pkmn1->get_trainer_name() == pkmn2->get_trainer_name());
    BOOST_CHECK(pkmn1->get_trainer_gender() == pkmn2->get_trainer_gender());
    BOOST_CHECK_EQUAL(pkmn1->get_trainer_id(), pkmn2->get_trainer_id());
    BOOST_CHECK(pkmn1->get_ball() == pkmn2->get_ball());
    BOOST_CHECK_EQUAL(pkmn1->get_met_level(), pkmn2->get_met_level());
    BOOST_CHECK_EQUAL(pkmn1->get_personality(), pkmn2->get_personality());
    BOOST_CHECK_EQUAL(pkmn1->get_friendship(), pkmn2->get_friendship());
    BOOST_CHECK_EQUAL(pkmn1->get_level(), pkmn2->get_level());
    BOOST_CHECK_EQUAL(pkmn1->get_experience(), pkmn2->get_experience());
    BOOST_CHECK(pkmn1->get_gender() == pkmn2->get_gender());
    BOOST_CHECK_EQUAL(pkmn1->is_shiny(), pkmn2->is_shiny());

    pkmn::dict<pkmn::pkstring, int> pkmn1_stats = pkmn1->get_stats();
    pkmn::dict<pkmn::pkstring, int> pkmn2_stats = pkmn2->get_stats();
    BOOST_CHECK_EQUAL(pkmn1_stats.at("HP"), pkmn2_stats.at("HP"));
    BOOST_CHECK_EQUAL(pkmn1_stats.at("Attack"), pkmn2_stats.at("Attack"));
    BOOST_CHECK_EQUAL(pkmn1_stats.at("Defense"), pkmn2_stats.at("Defense"));
    BOOST_CHECK_EQUAL(pkmn1_stats.at("Speed"), pkmn2_stats.at("Speed"));

    if(pkmn1->get_generation() == 1)
        BOOST_CHECK_EQUAL(pkmn1_stats.at("Special"), pkmn2_stats.at("Special"));
    else
    {
        BOOST_CHECK_EQUAL(pkmn1_stats.at("Special Attack"), pkmn2_stats.at("Special Attack"));
        BOOST_CHECK_EQUAL(pkmn1_stats.at("Special Defense"), pkmn2_stats.at("Special Defense"));
    }

    pkmn::dict<pkmn::pkstring, int> pkmn1_EVs = pkmn1->get_EVs();
    pkmn::dict<pkmn::pkstring, int> pkmn2_EVs = pkmn2->get_EVs();
    BOOST_CHECK_EQUAL(pkmn1_EVs.at("HP"), pkmn2_EVs.at("HP"));
    BOOST_CHECK_EQUAL(pkmn1_EVs.at("Attack"), pkmn2_EVs.at("Attack"));
    BOOST_CHECK_EQUAL(pkmn1_EVs.at("Defense"), pkmn2_EVs.at("Defense"));
    BOOST_CHECK_EQUAL(pkmn1_EVs.at("Speed"), pkmn2_EVs.at("Speed"));

    if(pkmn1->get_generation() < 3)
        BOOST_CHECK_EQUAL(pkmn1_EVs.at("Special"), pkmn2_EVs.at("Special"));
    else
    {
        BOOST_CHECK_EQUAL(pkmn1_EVs.at("Special Attack"), pkmn2_EVs.at("Special Attack"));
        BOOST_CHECK_EQUAL(pkmn1_EVs.at("Special Defense"), pkmn2_EVs.at("Special Defense"));
    }

    pkmn::dict<pkmn::pkstring, int> pkmn1_IVs = pkmn1->get_IVs();
    pkmn::dict<pkmn::pkstring, int> pkmn2_IVs = pkmn2->get_IVs();
    BOOST_CHECK_EQUAL(pkmn1_IVs.at("HP"), pkmn2_IVs.at("HP"));
    BOOST_CHECK_EQUAL(pkmn1_IVs.at("Attack"), pkmn2_IVs.at("Attack"));
    BOOST_CHECK_EQUAL(pkmn1_IVs.at("Defense"), pkmn2_IVs.at("Defense"));
    BOOST_CHECK_EQUAL(pkmn1_IVs.at("Speed"), pkmn2_IVs.at("Speed"));

    if(pkmn1->get_generation() < 3)
        BOOST_CHECK_EQUAL(pkmn1_IVs.at("Special"), pkmn2_IVs.at("Special"));
    else
    {
        BOOST_CHECK_EQUAL(pkmn1_IVs.at("Special Attack"), pkmn2_IVs.at("Special Attack"));
        BOOST_CHECK_EQUAL(pkmn1_IVs.at("Special Defense"), pkmn2_IVs.at("Special Defense"));
    }

    pkmn::moveset_t moves1, moves2;
    pkmn1->get_moves(moves1);
    pkmn2->get_moves(moves2);
    BOOST_CHECK(moves1[0].name == moves2[0].name);
    BOOST_CHECK(moves1[1].name == moves2[1].name);
    BOOST_CHECK(moves1[2].name == moves2[2].name);
    BOOST_CHECK(moves1[3].name == moves2[3].name);

    pkmn::dict<pkmn::pkstring, int> pkmn1_attributes = pkmn1->get_attributes();
    pkmn::dict<pkmn::pkstring, int> pkmn2_attributes = pkmn2->get_attributes();
    BOOST_CHECK_EQUAL(pkmn1_attributes.size(), pkmn2_attributes.size());
    BOOST_FOREACH(const pkmn::pkstring &key, pkmn1_attributes.keys())
    {
        BOOST_CHECK_EQUAL(pkmn1_attributes.at(key), pkmn1_attributes.at(key,(pkmn1_attributes.at(key)-1)));
    }
}