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.
246 lines
10 KiB
246 lines
10 KiB
#include <gtest/gtest.h> |
|
#include "all.h" |
|
|
|
dvl::PkItemStruct diabloItems[] = { |
|
// clang-format off |
|
// iSeed, iCreateInfo, idx, bId, bDur, bMDur, bCh, bMCh, wValue, dwBuff |
|
{ 2082213289, 0x119, 53, 3, 60, 60, 0, 0, 0, 0 }, // Amber Helm of harmony |
|
{ 338833725, 0x118, 154, 3, 0, 0, 0, 0, 0, 0 }, // Cobalt Amulet of giants |
|
{ 545145866, 0x11A, 120, 3, 38, 40, 0, 0, 0, 0 }, // Brutal Sword of gore |
|
{ 1504248345, 0x35A, 70, 5, 255, 255, 0, 0, 0, 0 }, // Demonspike Coat |
|
{ 1884424756, 0x146, 151, 3, 0, 0, 0, 0, 0, 0 }, // Steel Ring of the jaguar |
|
{ 1712759905, 0xDC, 151, 3, 0, 0, 0, 0, 0, 0 }, // Ring of the heavens |
|
{ 981777658, 0x11E, 153, 2, 0, 0, 0, 0, 0, 0 }, // Ring of sorcery |
|
{ 844854815, 0x11A, 75, 3, 255, 255, 0, 0, 0, 0 }, // Shield of the ages |
|
{ 1151513535, 0x11E, 73, 2, 12, 32, 0, 0, 0, 0 }, // Sapphire Shield |
|
{ 640243885, 6, 27, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Town Portal |
|
{ 741806938, 9, 25, 0, 0, 0, 0, 0, 0, 0 }, // IDI_MANA |
|
{ 1456608333, 257, 79, 0, 0, 0, 0, 0, 0, 0 }, // Mana |
|
{ 554676945, 16, 30, 0, 0, 0, 0, 0, 0, 0 }, // Full mana |
|
{ 355389938, 0, 24, 0, 0, 0, 0, 0, 0, 0 }, // Healing |
|
{ 868435486, 16, 29, 0, 0, 0, 0, 0, 0, 0 }, // Full healing |
|
{ 797389356, 0, 0, 0, 0, 0, 0, 0, 100, 0 }, // Gold |
|
{ 1372832903, 0, 4, 0, 30, 30, 0, 0, 0, 0 }, // IDI_ROGUE |
|
{ 896239556, 2068, 53, 3, 56, 60, 0, 0, 0, 0 }, // Jade Helm of the wolf |
|
{ 1286225254, 269, 151, 3, 0, 0, 0, 0, 0, 0 }, // Steel Ring of accuracy |
|
{ 548642293, 266, 21, 0, 0, 0, 0, 0, 0, 0 }, // Blood Stone |
|
{ 307669016, 270, 151, 3, 0, 0, 0, 0, 0, 0 }, // Ring of power |
|
{ 204766888, 332, 154, 3, 0, 0, 0, 0, 0, 0 }, // Gold Amulet of accuracy |
|
{ 1642744332, 273, 122, 3, 25, 60, 0, 0, 0, 0 }, // Sword of the bat |
|
{ 1031508271, 1036, 72, 0, 14, 24, 0, 0, 0, 0 }, // Small Shield |
|
{ 1384620228, 338, 65, 3, 44, 80, 0, 0, 0, 0 }, // Plate of giant |
|
{ 681296530, 266, 87, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Healing |
|
{ 1857753366, 260, 81, 0, 0, 0, 0, 0, 0, 0 }, // Potion of Rejuvenation |
|
{ 965103261, 273, 82, 0, 0, 0, 0, 0, 0, 0 }, // Potion of Full Rejuvenation |
|
{ 430621075, 217, 141, 3, 45, 45, 0, 0, 0, 0 }, // Savage Bow of perfection |
|
{ 1272669062, 258, 115, 0, 10, 20, 0, 0, 0, 0 }, // Falchion |
|
{ 1133884051, 278, 120, 2, 18, 40, 0, 0, 0, 0 }, // Sword of vim |
|
{ 2, 776, 8, 5, 0, 0, 0, 0, 0, 0 }, // Empyrean Band, |
|
{ 3, 776, 10, 5, 0, 0, 0, 0, 0, 0 }, // Optic Amulet |
|
{ 4, 772, 11, 5, 0, 0, 0, 0, 0, 0 }, // Ring of Truth |
|
{ 5, 776, 13, 5, 15, 15, 0, 0, 0, 0 }, // Harlequin Crest |
|
{ 6, 527, 14, 5, 60, 60, 0, 0, 0, 0 }, // Veil of Steel |
|
{ 7, 781, 28, 5, 39, 40, 0, 0, 0, 0 }, // Arkaine's Valor |
|
{ 8, 787, 31, 5, 42, 44, 0, 0, 0, 0 }, // Griswold's Edge |
|
{ 6, 911, 14, 5, 60, 60, 0, 0, 0, 0 }, // Veil of Steel - with morph bug |
|
// clang-format on |
|
}; |
|
|
|
const char *diabloItemNames[] = { |
|
"Amber Helm of harmony", |
|
"Cobalt Amulet of giants", |
|
"Brutal Sword of gore", |
|
"Demonspike Coat", |
|
"Steel Ring of the jaguar", |
|
"Ring of the heavens", |
|
"Ring of sorcery", |
|
"Shield of the ages", |
|
"Sapphire Shield", |
|
"Scroll of Town Portal", |
|
"Potion of Mana", |
|
"Potion of Mana", |
|
"Potion of Full Mana", |
|
"Potion of Healing", |
|
"Potion of Full Healing", |
|
"Gold", |
|
"Short Bow", |
|
"Jade Helm of the wolf", |
|
"Steel Ring of accuracy", |
|
"Blood Stone", |
|
"Ring of power", |
|
"Gold Amulet of accuracy", |
|
"Sword of the bat", |
|
"Small Shield", |
|
"Plate of giants", |
|
"Scroll of Healing", |
|
"Potion of Rejuvenation", |
|
"Potion of Full Rejuvenation", |
|
"Savage Bow of perfection", |
|
"Falchion", |
|
"Sword of vim", |
|
"Empyrean Band", |
|
"Optic Amulet", |
|
"Ring of Truth", |
|
"Harlequin Crest", |
|
"Veil of Steel", |
|
"Arkaine's Valor", |
|
"Griswold's Edge", |
|
"Veil of Steel", |
|
}; |
|
|
|
TEST(pack, UnPackItem_diablo) |
|
{ |
|
dvl::ItemStruct id; |
|
|
|
dvl::gbIsHellfire = false; |
|
dvl::gbIsHellfireSaveGame = false; |
|
|
|
for (size_t i = 0; i < sizeof(diabloItems) / sizeof(*diabloItems); i++) { |
|
dvl::UnPackItem(&diabloItems[i], &id); |
|
|
|
ASSERT_STREQ(id._iIName, diabloItemNames[i]); |
|
} |
|
} |
|
|
|
dvl::PkItemStruct hellfireItems[] = { |
|
// clang-format off |
|
// iSeed, iCreateInfo, idx, bId, bDur, bMDur, bCh, bMCh, wValue, dwBuff |
|
{ 1717442367, 266, 156, 3, 0, 0, 0, 0, 0, 0 }, // Ring of stability |
|
{ 1268518156, 338, 157, 3, 0, 0, 0, 0, 0, 0 }, // Ring of precision |
|
{ 132733863, 283, 157, 3, 0, 0, 0, 0, 0, 0 }, // Obsidian Ring of wizardry |
|
{ 511953594, 283, 158, 3, 0, 0, 0, 0, 0, 0 }, // Ring of precision |
|
{ 1183326923, 346, 160, 3, 0, 0, 0, 0, 0, 0 }, // Amulet of titans |
|
{ 1863009736, 280, 160, 3, 0, 0, 0, 0, 0, 0 }, // Gold Amulet |
|
{ 1872860650, 734, 135, 5, 75, 75, 0, 0, 0, 0 }, // Messerschmidt's Reaver |
|
{ 1584694222, 281, 142, 3, 127, 128, 0, 0, 0, 0 }, // Vicious Maul of structure |
|
{ 669112929, 280, 119, 0, 15, 24, 0, 0, 0, 0 }, // Short Sword |
|
{ 303108965, 280, 148, 3, 18, 50, 0, 0, 0, 0 }, // Bow of shock |
|
{ 575830996, 257, 143, 3, 30, 30, 0, 0, 0, 0 }, // Bow of magic |
|
{ 1488880650, 194, 152, 3, 35, 35, 22, 33, 0, 0 }, // Red Staff of Healing |
|
{ 1864450901, 263, 71, 0, 6, 16, 0, 0, 0, 0 }, // Buckler |
|
{ 28387651, 263, 49, 0, 15, 20, 0, 0, 0, 0 }, // Skull Cap |
|
{ 1298183212, 257, 55, 0, 6, 6, 0, 0, 0, 0 }, // Rags |
|
{ 1113945523, 260, 58, 0, 30, 30, 0, 0, 0, 0 }, // Quilted Armor |
|
{ 765757608, 260, 58, 2, 12, 30, 0, 0, 0, 0 }, // Armor of light |
|
{ 188812770, 346, 67, 3, 75, 75, 0, 0, 0, 0 }, // Saintly Plate of the stars |
|
{ 283577043, 2070, 67, 3, 63, 75, 0, 0, 0, 0 }, // Plate of the stars |
|
{ 123272767, 16, 24, 0, 0, 0, 0, 0, 0, 0 }, // Potion of Healing |
|
{ 433688373, 16, 29, 0, 0, 0, 0, 0, 0, 0 }, // Potion of Full Healing |
|
{ 1213385484, 32770, 25, 0, 0, 0, 0, 0, 0, 0 }, // Potion of Mana |
|
{ 1405075219, 280, 110, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Golem |
|
{ 1478792102, 259, 92, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Search |
|
{ 1569255955, 262, 94, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Identify |
|
{ 1291205782, 261, 98, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Town Portal |
|
{ 811925807, 260, 91, 0, 0, 0, 0, 0, 0, 0 }, // Scroll of Healing |
|
{ 1275007287, 257, 161, 0, 0, 0, 0, 0, 0, 0 }, // Rune of Fire |
|
{ 561216242, 278, 0, 0, 0, 0, 0, 0, 1663, 0 }, // Gold |
|
{ 1, 515, 7, 5, 45, 50, 0, 0, 0, 0 }, // The Undead Crown |
|
{ 2, 774, 8, 5, 0, 0, 0, 0, 0, 0 }, // Empyrean Band |
|
{ 4, 769, 11, 5, 0, 0, 0, 0, 0, 0 }, // Ring of Truth |
|
{ 8, 512, 31, 5, 50, 50, 0, 0, 0, 0 }, // Griswold's Edge |
|
{ 9, 850, 32, 5, 255, 255, 0, 0, 0, 0 }, // Bovine Plate |
|
// clang-format on |
|
}; |
|
|
|
const char *hellfireItemNames[] = { |
|
"Ring of stability", |
|
"Ring of precision", |
|
"Obsidian Ring of wizardry", |
|
"Ring of precision", |
|
"Amulet of titans", |
|
"Gold Amulet", |
|
"Messerschmidt's Reaver", |
|
"Vicious Maul of structure", |
|
"Short Sword", |
|
"Bow of shock", |
|
"Bow of magic", |
|
"Red Staff of Healing", |
|
"Buckler", |
|
"Skull Cap", |
|
"Rags", |
|
"Quilted Armor", |
|
"Armor of light", |
|
"Saintly Plate of the stars", |
|
"Plate of the stars", |
|
"Potion of Healing", |
|
"Potion of Full Healing", |
|
"Potion of Mana", |
|
"Scroll of Golem", |
|
"Scroll of Search", |
|
"Scroll of Identify", |
|
"Scroll of Town Portal", |
|
"Scroll of Healing", |
|
"Rune of Fire", |
|
"Gold", |
|
"The Undead Crown", |
|
"Empyrean Band", |
|
"Ring of Truth", |
|
"Griswold's Edge", |
|
"Bovine Plate", |
|
|
|
}; |
|
|
|
TEST(pack, UnPackItem_hellfire) |
|
{ |
|
dvl::ItemStruct id; |
|
|
|
dvl::gbIsHellfire = true; |
|
dvl::gbIsHellfireSaveGame = true; |
|
|
|
for (size_t i = 0; i < sizeof(hellfireItems) / sizeof(*hellfireItems); i++) { |
|
dvl::UnPackItem(&hellfireItems[i], &id); |
|
|
|
ASSERT_STREQ(id._iIName, hellfireItemNames[i]); |
|
} |
|
} |
|
|
|
TEST(pack, UnPackItem_empty) |
|
{ |
|
dvl::PkItemStruct is; |
|
dvl::ItemStruct id; |
|
|
|
is.idx = 0xFFFF; |
|
|
|
dvl::UnPackItem(&is, &id); |
|
|
|
ASSERT_EQ(id._itype, dvl::ITYPE_NONE); |
|
} |
|
|
|
TEST(pack, UnPackItem_gold_small) |
|
{ |
|
dvl::PkItemStruct is; |
|
dvl::ItemStruct id; |
|
|
|
is.idx = 0; |
|
is.wValue = 1000; |
|
|
|
dvl::UnPackItem(&is, &id); |
|
|
|
ASSERT_EQ(id._iCurs, dvl::ICURS_GOLD_SMALL); |
|
} |
|
|
|
TEST(pack, UnPackItem_gold_medium) |
|
{ |
|
dvl::PkItemStruct is; |
|
dvl::ItemStruct id; |
|
|
|
is.idx = 0; |
|
is.wValue = 1001; |
|
|
|
dvl::UnPackItem(&is, &id); |
|
|
|
ASSERT_EQ(id._iCurs, dvl::ICURS_GOLD_MEDIUM); |
|
} |
|
|
|
TEST(pack, UnPackItem_gold_large) |
|
{ |
|
dvl::PkItemStruct is; |
|
dvl::ItemStruct id; |
|
|
|
is.idx = 0; |
|
is.wValue = 2500; |
|
|
|
dvl::UnPackItem(&is, &id); |
|
|
|
ASSERT_EQ(id._iCurs, dvl::ICURS_GOLD_LARGE); |
|
}
|
|
|