You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
1.7 KiB

#include <gtest/gtest.h>
#include "stores.h"
using namespace devilution;
namespace {
TEST(Stores, AddStoreHoldRepair_magic)
{
devilution::Item *item;
item = &PlayerItems[0];
item->_iMaxDur = 60;
item->_iDurability = item->_iMaxDur;
item->_iMagical = ITEM_QUALITY_MAGIC;
item->_iIdentified = true;
item->_ivalue = 2000;
item->_iIvalue = 19000;
for (int i = 1; i < item->_iMaxDur; i++) {
item->_ivalue = 2000;
item->_iIvalue = 19000;
item->_iDurability = i;
CurrentItemIndex = 0;
AddStoreHoldRepair(item, 0);
EXPECT_EQ(1, CurrentItemIndex);
EXPECT_EQ(95 * (item->_iMaxDur - i) / 2, item->_ivalue);
}
item->_iDurability = 59;
CurrentItemIndex = 0;
item->_ivalue = 500;
item->_iIvalue = 30; // To cheap to repair
AddStoreHoldRepair(item, 0);
EXPECT_EQ(0, CurrentItemIndex);
EXPECT_EQ(30, item->_iIvalue);
EXPECT_EQ(500, item->_ivalue);
}
TEST(Stores, AddStoreHoldRepair_normal)
{
devilution::Item *item;
item = &PlayerItems[0];
item->_iMaxDur = 20;
item->_iDurability = item->_iMaxDur;
item->_iMagical = ITEM_QUALITY_NORMAL;
item->_iIdentified = true;
item->_ivalue = 2000;
item->_iIvalue = item->_ivalue;
for (int i = 1; i < item->_iMaxDur; i++) {
item->_ivalue = 2000;
item->_iIvalue = item->_ivalue;
item->_iDurability = i;
CurrentItemIndex = 0;
AddStoreHoldRepair(item, 0);
EXPECT_EQ(1, CurrentItemIndex);
EXPECT_EQ(50 * (item->_iMaxDur - i), item->_ivalue);
}
item->_iDurability = 19;
CurrentItemIndex = 0;
item->_ivalue = 10; // less than 1 per dur
item->_iIvalue = item->_ivalue;
AddStoreHoldRepair(item, 0);
EXPECT_EQ(1, CurrentItemIndex);
EXPECT_EQ(1, item->_ivalue);
EXPECT_EQ(1, item->_iIvalue);
}
} // namespace