diff --git a/test/Fixtures.cmake b/test/Fixtures.cmake index 5a067bf8f..88dd52f27 100644 --- a/test/Fixtures.cmake +++ b/test/Fixtures.cmake @@ -10,8 +10,10 @@ set(devilutionx_fixtures diablo/5-1677631846.dun diablo/6-2034738122.dun diablo/7-680552750.dun + diablo/7-1607627156.dun diablo/8-1999936419.dun diablo/9-262005438.dun + diablo/10-879635115.dun diablo/10-1630062353.dun diablo/11-384626536.dun diablo/12-2104541047.dun @@ -19,10 +21,13 @@ set(devilutionx_fixtures diablo/14-717625719.dun diablo/15-1583642716-changed.dun diablo/15-1583642716.dun + diablo/16-741281013.dun hellfire/1-401921334.dun hellfire/2-128964898.dun + hellfire/3-1512491184.dun hellfire/3-1799396623.dun hellfire/4-1190318991.dun + hellfire/4-1924296259.dun hellfire/17-19770182.dun hellfire/18-1522546307.dun hellfire/19-125121312.dun @@ -31,6 +36,17 @@ set(devilutionx_fixtures hellfire/22-1191662129.dun hellfire/23-97055268.dun hellfire/24-1324803725.dun + Levels/L1Data/Banner1.DUN + Levels/L1Data/Banner2.DUN + Levels/L1Data/SKngDO.DUN + Levels/L2Data/Blind1.DUN + Levels/L4Data/diab1.DUN + Levels/L4Data/diab2a.DUN + Levels/L4Data/diab2b.DUN + Levels/L4Data/diab3a.DUN + Levels/L4Data/diab3b.DUN + Levels/L4Data/diab4a.DUN + Levels/L4Data/diab4b.DUN ) foreach(fixture ${devilutionx_fixtures}) diff --git a/test/drlg_l1_test.cpp b/test/drlg_l1_test.cpp index 69be04f57..39d0ac6e1 100644 --- a/test/drlg_l1_test.cpp +++ b/test/drlg_l1_test.cpp @@ -44,6 +44,7 @@ TEST(Drlg_l1, CreateL5Dungeon_diablo_2_1383137027) Quests[Q_PWATER]._qlevel = 2; Quests[Q_PWATER]._qactive = QUEST_INIT; + Quests[Q_BUTCHER]._qactive = QUEST_NOTAVAIL; TestCreateDungeon(2, 1383137027, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(57, 74)); @@ -56,6 +57,7 @@ TEST(Drlg_l1, CreateL5Dungeon_diablo_3_844660068) LoadExpectedLevelData("diablo/3-844660068.dun"); MyPlayer->pOriginalCathedral = true; + Quests[Q_SKELKING]._qactive = QUEST_NOTAVAIL; TestCreateDungeon(3, 844660068, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(67, 52)); @@ -68,6 +70,7 @@ TEST(Drlg_l1, CreateL5Dungeon_diablo_4_609325643) LoadExpectedLevelData("diablo/4-609325643.dun"); MyPlayer->pOriginalCathedral = true; + Quests[Q_LTBANNER]._qactive = QUEST_NOTAVAIL; TestCreateDungeon(4, 609325643, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(85, 78)); @@ -93,6 +96,7 @@ TEST(Drlg_l1, CreateL5Dungeon_hellfire_2_128964898) MyPlayer->pOriginalCathedral = false; Quests[Q_PWATER]._qactive = QUEST_NOTAVAIL; + Quests[Q_BUTCHER]._qactive = QUEST_NOTAVAIL; TestCreateDungeon(2, 128964898, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(55, 68)); @@ -105,6 +109,7 @@ TEST(Drlg_l1, CreateL5Dungeon_hellfire_3_1799396623) LoadExpectedLevelData("hellfire/3-1799396623.dun"); MyPlayer->pOriginalCathedral = false; + Quests[Q_SKELKING]._qactive = QUEST_NOTAVAIL; TestCreateDungeon(3, 1799396623, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(59, 68)); @@ -112,11 +117,26 @@ TEST(Drlg_l1, CreateL5Dungeon_hellfire_3_1799396623) EXPECT_EQ(ViewPosition, Point(47, 55)); } +TEST(Drlg_l1, CreateL5Dungeon_hellfire_3_1512491184) +{ + LoadExpectedLevelData("hellfire/3-1512491184.dun"); + + MyPlayer->pOriginalCathedral = false; + Quests[Q_SKELKING]._qlevel = 3; + Quests[Q_SKELKING]._qactive = QUEST_INIT; + + TestCreateDungeon(3, 1512491184, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(47, 72)); + TestCreateDungeon(3, 1512491184, ENTRY_PREV); + EXPECT_EQ(ViewPosition, Point(79, 45)); +} + TEST(Drlg_l1, CreateL5Dungeon_hellfire_4_1190318991) { LoadExpectedLevelData("hellfire/4-1190318991.dun"); MyPlayer->pOriginalCathedral = false; + Quests[Q_LTBANNER]._qactive = QUEST_NOTAVAIL; TestCreateDungeon(4, 1190318991, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(67, 80)); @@ -124,6 +144,20 @@ TEST(Drlg_l1, CreateL5Dungeon_hellfire_4_1190318991) EXPECT_EQ(ViewPosition, Point(77, 45)); } +TEST(Drlg_l1, CreateL5Dungeon_hellfire_4_1924296259) +{ + LoadExpectedLevelData("hellfire/4-1924296259.dun"); + + MyPlayer->pOriginalCathedral = false; + Quests[Q_LTBANNER]._qlevel = 4; + Quests[Q_LTBANNER]._qactive = QUEST_INIT; + + TestCreateDungeon(4, 1924296259, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(83, 54)); + TestCreateDungeon(4, 1924296259, ENTRY_PREV); + EXPECT_EQ(ViewPosition, Point(52, 88)); +} + TEST(Drlg_l1, CreateL5Dungeon_crypt_1_2122696790) { LoadExpectedLevelData("hellfire/21-2122696790.dun"); @@ -138,8 +172,6 @@ TEST(Drlg_l1, CreateL5Dungeon_crypt_2_1191662129) { LoadExpectedLevelData("hellfire/22-1191662129.dun"); - Quests[Q_PWATER]._qactive = QUEST_NOTAVAIL; - TestCreateDungeon(22, 1191662129, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(71, 47)); TestCreateDungeon(22, 1191662129, ENTRY_PREV); diff --git a/test/drlg_l2_test.cpp b/test/drlg_l2_test.cpp index 55d8aba87..73c622f6c 100644 --- a/test/drlg_l2_test.cpp +++ b/test/drlg_l2_test.cpp @@ -3,6 +3,7 @@ #include "drlg_test.hpp" #include "gendung.h" +#include "quests.h" using namespace devilution; @@ -32,12 +33,27 @@ TEST(Drlg_l2, CreateL2Dungeon_diablo_7_680552750) { LoadExpectedLevelData("diablo/7-680552750.dun"); + Quests[Q_BLIND]._qactive = QUEST_NOTAVAIL; + TestCreateDungeon(7, 680552750, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(27, 26)); TestCreateDungeon(7, 680552750, ENTRY_PREV); EXPECT_EQ(ViewPosition, Point(78, 52)); } +TEST(Drlg_l2, CreateL2Dungeon_diablo_7_1607627156) +{ + LoadExpectedLevelData("diablo/7-1607627156.dun"); + + Quests[Q_BLIND]._qlevel = 7; + Quests[Q_BLIND]._qactive = QUEST_INIT; + + TestCreateDungeon(7, 1607627156, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(53, 26)); + TestCreateDungeon(7, 1607627156, ENTRY_PREV); + EXPECT_EQ(ViewPosition, Point(50, 88)); +} + TEST(Drlg_l2, CreateL2Dungeon_diablo_8_1999936419) { LoadExpectedLevelData("diablo/8-1999936419.dun"); diff --git a/test/drlg_l3_test.cpp b/test/drlg_l3_test.cpp index f924e8754..0b0469e35 100644 --- a/test/drlg_l3_test.cpp +++ b/test/drlg_l3_test.cpp @@ -31,6 +31,19 @@ TEST(Drlg_l3, CreateL3Dungeon_diablo_10_1630062353) EXPECT_EQ(ViewPosition, Point(19, 47)); } +TEST(Drlg_l3, CreateL3Dungeon_diablo_10_879635115) +{ + LoadExpectedLevelData("diablo/10-879635115.dun"); + + Quests[Q_ANVIL]._qlevel = 10; + Quests[Q_ANVIL]._qactive = QUEST_INIT; + + TestCreateDungeon(10, 879635115, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(75, 41)); + TestCreateDungeon(10, 879635115, ENTRY_PREV); + EXPECT_EQ(ViewPosition, Point(27, 45)); +} + TEST(Drlg_l3, CreateL3Dungeon_diablo_11_384626536) { LoadExpectedLevelData("diablo/11-384626536.dun"); diff --git a/test/drlg_l4_test.cpp b/test/drlg_l4_test.cpp index 2c4a26b0b..53f1f6b6a 100644 --- a/test/drlg_l4_test.cpp +++ b/test/drlg_l4_test.cpp @@ -50,4 +50,12 @@ TEST(Drlg_l4, CreateL4Dungeon_diablo_15_1583642716) EXPECT_EQ(ViewPosition, Point(87, 69)); } +TEST(Drlg_l4, CreateL4Dungeon_diablo_16_741281013) +{ + LoadExpectedLevelData("diablo/16-741281013.dun"); + + TestCreateDungeon(16, 741281013, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(58, 42)); +} + } // namespace diff --git a/test/drlg_test.hpp b/test/drlg_test.hpp index 85199b7d8..8d01f6926 100644 --- a/test/drlg_test.hpp +++ b/test/drlg_test.hpp @@ -36,9 +36,11 @@ std::unique_ptr DunData; void LoadExpectedLevelData(const char *fixture) { + std::string dunPath = "test/fixtures/"; + paths::SetPrefPath(paths::BasePath()); + paths::SetAssetsPath(paths::BasePath() + "/" + dunPath); - std::string dunPath = "test/fixtures/"; dunPath.append(fixture); DunData = LoadFileInMem(dunPath.c_str()); ASSERT_NE(DunData, nullptr) << "Unable to load test fixture " << dunPath; diff --git a/test/fixtures/Levels/L1Data/Banner1.DUN b/test/fixtures/Levels/L1Data/Banner1.DUN new file mode 100644 index 000000000..7349963d2 Binary files /dev/null and b/test/fixtures/Levels/L1Data/Banner1.DUN differ diff --git a/test/fixtures/Levels/L1Data/Banner2.DUN b/test/fixtures/Levels/L1Data/Banner2.DUN new file mode 100644 index 000000000..ddef4f411 Binary files /dev/null and b/test/fixtures/Levels/L1Data/Banner2.DUN differ diff --git a/test/fixtures/Levels/L1Data/SKngDO.DUN b/test/fixtures/Levels/L1Data/SKngDO.DUN new file mode 100644 index 000000000..33a6fece9 Binary files /dev/null and b/test/fixtures/Levels/L1Data/SKngDO.DUN differ diff --git a/test/fixtures/Levels/L2Data/Blind1.DUN b/test/fixtures/Levels/L2Data/Blind1.DUN new file mode 100644 index 000000000..ed1030d19 Binary files /dev/null and b/test/fixtures/Levels/L2Data/Blind1.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab1.DUN b/test/fixtures/Levels/L4Data/diab1.DUN new file mode 100644 index 000000000..d8b974d49 Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab1.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab2a.DUN b/test/fixtures/Levels/L4Data/diab2a.DUN new file mode 100644 index 000000000..4b6acdaf4 Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab2a.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab2b.DUN b/test/fixtures/Levels/L4Data/diab2b.DUN new file mode 100644 index 000000000..13547f6ec Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab2b.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab3a.DUN b/test/fixtures/Levels/L4Data/diab3a.DUN new file mode 100644 index 000000000..4837fe27f Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab3a.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab3b.DUN b/test/fixtures/Levels/L4Data/diab3b.DUN new file mode 100644 index 000000000..beb9fc287 Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab3b.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab4a.DUN b/test/fixtures/Levels/L4Data/diab4a.DUN new file mode 100644 index 000000000..8a6463a64 Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab4a.DUN differ diff --git a/test/fixtures/Levels/L4Data/diab4b.DUN b/test/fixtures/Levels/L4Data/diab4b.DUN new file mode 100644 index 000000000..f03aa3009 Binary files /dev/null and b/test/fixtures/Levels/L4Data/diab4b.DUN differ diff --git a/test/fixtures/diablo/10-879635115.dun b/test/fixtures/diablo/10-879635115.dun new file mode 100644 index 000000000..e75dd19ea Binary files /dev/null and b/test/fixtures/diablo/10-879635115.dun differ diff --git a/test/fixtures/diablo/16-741281013.dun b/test/fixtures/diablo/16-741281013.dun new file mode 100644 index 000000000..608aaec2d Binary files /dev/null and b/test/fixtures/diablo/16-741281013.dun differ diff --git a/test/fixtures/diablo/7-1607627156.dun b/test/fixtures/diablo/7-1607627156.dun new file mode 100644 index 000000000..f79c22c51 Binary files /dev/null and b/test/fixtures/diablo/7-1607627156.dun differ diff --git a/test/fixtures/hellfire/3-1512491184.dun b/test/fixtures/hellfire/3-1512491184.dun new file mode 100644 index 000000000..281dfc9c7 Binary files /dev/null and b/test/fixtures/hellfire/3-1512491184.dun differ diff --git a/test/fixtures/hellfire/4-1924296259.dun b/test/fixtures/hellfire/4-1924296259.dun new file mode 100644 index 000000000..601a60b9a Binary files /dev/null and b/test/fixtures/hellfire/4-1924296259.dun differ