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
74 lines
1.7 KiB
#include <gtest/gtest.h> |
|
|
|
#include "stores.h" |
|
|
|
using namespace devilution; |
|
|
|
namespace { |
|
|
|
TEST(Stores, AddStoreHoldRepair_magic) |
|
{ |
|
devilution::Item *item; |
|
|
|
item = &storehold[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; |
|
storenumh = 0; |
|
AddStoreHoldRepair(item, 0); |
|
EXPECT_EQ(1, storenumh); |
|
EXPECT_EQ(95 * (item->_iMaxDur - i) / 2, item->_ivalue); |
|
} |
|
|
|
item->_iDurability = 59; |
|
storenumh = 0; |
|
item->_ivalue = 500; |
|
item->_iIvalue = 30; // To cheap to repair |
|
AddStoreHoldRepair(item, 0); |
|
EXPECT_EQ(0, storenumh); |
|
EXPECT_EQ(30, item->_iIvalue); |
|
EXPECT_EQ(500, item->_ivalue); |
|
} |
|
|
|
TEST(Stores, AddStoreHoldRepair_normal) |
|
{ |
|
devilution::Item *item; |
|
|
|
item = &storehold[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; |
|
storenumh = 0; |
|
AddStoreHoldRepair(item, 0); |
|
EXPECT_EQ(1, storenumh); |
|
EXPECT_EQ(50 * (item->_iMaxDur - i), item->_ivalue); |
|
} |
|
|
|
item->_iDurability = 19; |
|
storenumh = 0; |
|
item->_ivalue = 10; // less than 1 per dur |
|
item->_iIvalue = item->_ivalue; |
|
AddStoreHoldRepair(item, 0); |
|
EXPECT_EQ(1, storenumh); |
|
EXPECT_EQ(1, item->_ivalue); |
|
EXPECT_EQ(1, item->_iIvalue); |
|
} |
|
} // namespace
|
|
|