mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
166 lines
6.5 KiB
C
166 lines
6.5 KiB
C
#include "global.h"
|
|
#include "battle.h"
|
|
#include "event_data.h"
|
|
#include "item_menu.h"
|
|
#include "pokemon.h"
|
|
#include "test/overworld_script.h"
|
|
#include "test/test.h"
|
|
|
|
TEST("TMs and HMs are sorted correctly in the bag")
|
|
{
|
|
struct BagPocket *pocket = &gBagPockets[POCKET_TM_HM];
|
|
|
|
ASSUME(GetItemPocket(ITEM_HM07) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_TM25) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_TM14) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_TM42) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_HM05) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_TM05) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_TM01) == POCKET_TM_HM);
|
|
ASSUME(GetItemPocket(ITEM_HM02) == POCKET_TM_HM);
|
|
|
|
/*
|
|
* Note: I would add a test to make sure that TMs are sorted correctly by move name,
|
|
* but downstream users are likely to rearrange TMs so this would just be a nuisance.
|
|
*/
|
|
|
|
RUN_OVERWORLD_SCRIPT(
|
|
additem ITEM_HM07;
|
|
additem ITEM_TM25;
|
|
additem ITEM_TM14;
|
|
additem ITEM_TM42;
|
|
additem ITEM_HM05;
|
|
additem ITEM_TM05;
|
|
additem ITEM_TM01;
|
|
additem ITEM_HM02;
|
|
);
|
|
|
|
SortItemsInBag(&gBagPockets[POCKET_TM_HM], SORT_BY_INDEX);
|
|
|
|
EXPECT_EQ(pocket->itemSlots[0].itemId, ITEM_TM01);
|
|
EXPECT_EQ(pocket->itemSlots[1].itemId, ITEM_TM05);
|
|
EXPECT_EQ(pocket->itemSlots[2].itemId, ITEM_TM14);
|
|
EXPECT_EQ(pocket->itemSlots[3].itemId, ITEM_TM25);
|
|
EXPECT_EQ(pocket->itemSlots[4].itemId, ITEM_TM42);
|
|
EXPECT_EQ(pocket->itemSlots[5].itemId, ITEM_HM02);
|
|
EXPECT_EQ(pocket->itemSlots[6].itemId, ITEM_HM05);
|
|
EXPECT_EQ(pocket->itemSlots[7].itemId, ITEM_HM07);
|
|
EXPECT_EQ(pocket->itemSlots[8].itemId, ITEM_NONE);
|
|
}
|
|
|
|
TEST("Berries are sorted correctly in the bag")
|
|
{
|
|
struct BagPocket *pocket = &gBagPockets[POCKET_BERRIES];
|
|
|
|
ASSUME(GetItemPocket(ITEM_POMEG_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_MAGOST_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_KELPSY_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_MICLE_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_CHARTI_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_GANLON_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_ORAN_BERRY) == POCKET_BERRIES);
|
|
ASSUME(GetItemPocket(ITEM_CHERI_BERRY) == POCKET_BERRIES);
|
|
|
|
RUN_OVERWORLD_SCRIPT(
|
|
additem ITEM_POMEG_BERRY;
|
|
additem ITEM_MAGOST_BERRY;
|
|
additem ITEM_KELPSY_BERRY;
|
|
additem ITEM_MICLE_BERRY;
|
|
additem ITEM_CHARTI_BERRY;
|
|
additem ITEM_GANLON_BERRY;
|
|
additem ITEM_ORAN_BERRY;
|
|
additem ITEM_CHERI_BERRY;
|
|
);
|
|
|
|
SortItemsInBag(&gBagPockets[POCKET_BERRIES], SORT_BY_INDEX);
|
|
|
|
EXPECT_EQ(pocket->itemSlots[0].itemId, ITEM_CHERI_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[1].itemId, ITEM_ORAN_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[2].itemId, ITEM_POMEG_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[3].itemId, ITEM_KELPSY_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[4].itemId, ITEM_MAGOST_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[5].itemId, ITEM_CHARTI_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[6].itemId, ITEM_GANLON_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[7].itemId, ITEM_MICLE_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[8].itemId, ITEM_NONE);
|
|
|
|
SortItemsInBag(&gBagPockets[POCKET_BERRIES], SORT_ALPHABETICALLY);
|
|
|
|
EXPECT_EQ(pocket->itemSlots[0].itemId, ITEM_CHARTI_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[1].itemId, ITEM_CHERI_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[2].itemId, ITEM_GANLON_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[3].itemId, ITEM_KELPSY_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[4].itemId, ITEM_MAGOST_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[5].itemId, ITEM_MICLE_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[6].itemId, ITEM_ORAN_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[7].itemId, ITEM_POMEG_BERRY);
|
|
EXPECT_EQ(pocket->itemSlots[8].itemId, ITEM_NONE);
|
|
}
|
|
|
|
TEST("Items are correctly sorted and compacted in the bag")
|
|
{
|
|
struct BagPocket *pocket = &gBagPockets[POCKET_ITEMS];
|
|
memset(pocket->itemSlots, 0, sizeof(gSaveBlock1Ptr->bag.items));
|
|
|
|
ASSUME(GetItemPocket(ITEM_NUGGET) == POCKET_ITEMS);
|
|
ASSUME(GetItemPocket(ITEM_BIG_NUGGET) == POCKET_ITEMS);
|
|
ASSUME(GetItemPocket(ITEM_TINY_MUSHROOM) == POCKET_ITEMS);
|
|
ASSUME(GetItemPocket(ITEM_BIG_MUSHROOM) == POCKET_ITEMS);
|
|
ASSUME(GetItemPocket(ITEM_PEARL) == POCKET_ITEMS);
|
|
ASSUME(GetItemPocket(ITEM_BIG_PEARL) == POCKET_ITEMS);
|
|
|
|
RUN_OVERWORLD_SCRIPT(
|
|
additem ITEM_NUGGET;
|
|
additem ITEM_BIG_NUGGET;
|
|
additem ITEM_TINY_MUSHROOM;
|
|
additem ITEM_BIG_MUSHROOM;
|
|
additem ITEM_PEARL;
|
|
additem ITEM_BIG_PEARL;
|
|
);
|
|
|
|
EXPECT_EQ(pocket->itemSlots[0].itemId, ITEM_NUGGET);
|
|
EXPECT_EQ(pocket->itemSlots[0].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[1].itemId, ITEM_BIG_NUGGET);
|
|
EXPECT_EQ(pocket->itemSlots[1].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[2].itemId, ITEM_TINY_MUSHROOM);
|
|
EXPECT_EQ(pocket->itemSlots[2].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[3].itemId, ITEM_BIG_MUSHROOM);
|
|
EXPECT_EQ(pocket->itemSlots[3].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[4].itemId, ITEM_PEARL);
|
|
EXPECT_EQ(pocket->itemSlots[4].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[5].itemId, ITEM_BIG_PEARL);
|
|
EXPECT_EQ(pocket->itemSlots[5].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[6].itemId, ITEM_NONE);
|
|
|
|
SortItemsInBag(&gBagPockets[POCKET_ITEMS], SORT_ALPHABETICALLY);
|
|
|
|
EXPECT_EQ(pocket->itemSlots[0].itemId, ITEM_BIG_MUSHROOM);
|
|
EXPECT_EQ(pocket->itemSlots[1].itemId, ITEM_BIG_NUGGET);
|
|
EXPECT_EQ(pocket->itemSlots[2].itemId, ITEM_BIG_PEARL);
|
|
EXPECT_EQ(pocket->itemSlots[3].itemId, ITEM_NUGGET);
|
|
EXPECT_EQ(pocket->itemSlots[4].itemId, ITEM_PEARL);
|
|
EXPECT_EQ(pocket->itemSlots[5].itemId, ITEM_TINY_MUSHROOM);
|
|
EXPECT_EQ(pocket->itemSlots[6].itemId, ITEM_NONE);
|
|
|
|
// Try removing the big items, check that everything is compacted correctly
|
|
|
|
RUN_OVERWORLD_SCRIPT(
|
|
removeitem ITEM_BIG_NUGGET;
|
|
removeitem ITEM_BIG_MUSHROOM;
|
|
removeitem ITEM_BIG_PEARL;
|
|
);
|
|
|
|
CompactItemsInBagPocket(POCKET_ITEMS);
|
|
|
|
EXPECT_EQ(pocket->itemSlots[0].itemId, ITEM_NUGGET);
|
|
EXPECT_EQ(pocket->itemSlots[0].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[1].itemId, ITEM_PEARL);
|
|
EXPECT_EQ(pocket->itemSlots[1].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[2].itemId, ITEM_TINY_MUSHROOM);
|
|
EXPECT_EQ(pocket->itemSlots[2].quantity, 1);
|
|
EXPECT_EQ(pocket->itemSlots[3].itemId, ITEM_NONE);
|
|
EXPECT_EQ(pocket->itemSlots[4].itemId, ITEM_NONE);
|
|
EXPECT_EQ(pocket->itemSlots[5].itemId, ITEM_NONE);
|
|
EXPECT_EQ(pocket->itemSlots[6].itemId, ITEM_NONE);
|
|
}
|