diff --git a/test/Fixtures.cmake b/test/Fixtures.cmake index a9b69e2c9..8efed85d2 100644 --- a/test/Fixtures.cmake +++ b/test/Fixtures.cmake @@ -20,7 +20,9 @@ set(devilutionx_fixtures diablo/11-384626536.dun diablo/12-2104541047.dun diablo/13-428074402.dun + diablo/13-594689775.dun diablo/14-717625719.dun + diablo/15-1256511996.dun diablo/15-1583642716.dun diablo/15-1583642716-changed.dun diablo/16-741281013.dun @@ -55,6 +57,9 @@ set(devilutionx_fixtures Levels/L4Data/diab3b.DUN Levels/L4Data/diab4a.DUN Levels/L4Data/diab4b.DUN + Levels/L4Data/Vile1.DUN + Levels/L4Data/Warlord.DUN + Levels/L4Data/Warlord2.DUN ) foreach(fixture ${devilutionx_fixtures}) diff --git a/test/drlg_l2_test.cpp b/test/drlg_l2_test.cpp index ad7c086d7..0b7585ff6 100644 --- a/test/drlg_l2_test.cpp +++ b/test/drlg_l2_test.cpp @@ -13,6 +13,9 @@ TEST(Drlg_l2, CreateL2Dungeon_diablo_5_1677631846) { LoadExpectedLevelData("diablo/5-1677631846.dun"); + InitQuests(); + Quests[Q_BLOOD]._qactive = QUEST_NOTAVAIL; + TestCreateDungeon(5, 1677631846, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(27, 28)); TestCreateDungeon(5, 1677631846, ENTRY_PREV); diff --git a/test/drlg_l4_test.cpp b/test/drlg_l4_test.cpp index eb55d05c0..b3aed55e0 100644 --- a/test/drlg_l4_test.cpp +++ b/test/drlg_l4_test.cpp @@ -3,6 +3,7 @@ #include "drlg_test.hpp" #include "gendung.h" +#include "multi.h" #include "quests.h" using namespace devilution; @@ -13,6 +14,9 @@ TEST(Drlg_l4, CreateL4Dungeon_diablo_13_428074402) { LoadExpectedLevelData("diablo/13-428074402.dun"); + InitQuests(); + Quests[Q_WARLORD]._qactive = QUEST_NOTAVAIL; + TestCreateDungeon(13, 428074402, ENTRY_MAIN); EXPECT_EQ(ViewPosition, Point(26, 64)); TestCreateDungeon(13, 428074402, ENTRY_PREV); @@ -21,6 +25,21 @@ TEST(Drlg_l4, CreateL4Dungeon_diablo_13_428074402) EXPECT_EQ(ViewPosition, Point(26, 44)); } +TEST(Drlg_l4, CreateL4Dungeon_diablo_13_594689775) +{ + LoadExpectedLevelData("diablo/13-594689775.dun"); + + InitQuests(); + Quests[Q_WARLORD]._qactive = QUEST_INIT; + + TestCreateDungeon(13, 594689775, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(72, 38)); + TestCreateDungeon(13, 594689775, ENTRY_PREV); + EXPECT_EQ(ViewPosition, Point(32, 40)); + TestCreateDungeon(13, 594689775, ENTRY_TWARPUP); + EXPECT_EQ(ViewPosition, Point(36, 88)); +} + TEST(Drlg_l4, CreateL4Dungeon_diablo_14_717625719) { LoadExpectedLevelData("diablo/14-717625719.dun"); @@ -35,6 +54,8 @@ TEST(Drlg_l4, CreateL4Dungeon_diablo_15_1583642716) { LoadExpectedLevelData("diablo/15-1583642716.dun"); + gbIsMultiplayer = false; + InitQuests(); Quests[Q_DIABLO]._qactive = QUEST_INIT; TestCreateDungeon(15, 1583642716, ENTRY_MAIN); @@ -52,6 +73,19 @@ TEST(Drlg_l4, CreateL4Dungeon_diablo_15_1583642716) EXPECT_EQ(ViewPosition, Point(87, 69)); } +TEST(Drlg_l4, CreateL4Dungeon_diablo_15_1256511996) +{ + LoadExpectedLevelData("diablo/15-1256511996.dun"); + + gbIsMultiplayer = true; + InitQuests(); + + TestCreateDungeon(15, 1256511996, ENTRY_MAIN); + EXPECT_EQ(ViewPosition, Point(80, 70)); + TestCreateDungeon(15, 1256511996, ENTRY_PREV); + EXPECT_EQ(ViewPosition, Point(33, 67)); +} + TEST(Drlg_l4, CreateL4Dungeon_diablo_16_741281013) { LoadExpectedLevelData("diablo/16-741281013.dun"); diff --git a/test/drlg_test.hpp b/test/drlg_test.hpp index 8d01f6926..653f97ac6 100644 --- a/test/drlg_test.hpp +++ b/test/drlg_test.hpp @@ -6,6 +6,7 @@ #pragma once #include "engine/load_file.hpp" +#include "themes.h" #include "utils/paths.h" using namespace devilution; @@ -55,6 +56,7 @@ void TestCreateDungeon(int level, uint32_t seed, lvl_entry entry) pMegaTiles = std::make_unique(GetTileCount(leveltype)); CreateDungeon(seed, entry); + CreateThemeRooms(); const uint16_t *tileLayer = &DunData[2]; diff --git a/test/fixtures/Levels/L4Data/Vile1.DUN b/test/fixtures/Levels/L4Data/Vile1.DUN new file mode 100644 index 000000000..6777e9926 Binary files /dev/null and b/test/fixtures/Levels/L4Data/Vile1.DUN differ diff --git a/test/fixtures/Levels/L4Data/Warlord.DUN b/test/fixtures/Levels/L4Data/Warlord.DUN new file mode 100644 index 000000000..61dd1aef3 Binary files /dev/null and b/test/fixtures/Levels/L4Data/Warlord.DUN differ diff --git a/test/fixtures/Levels/L4Data/Warlord2.DUN b/test/fixtures/Levels/L4Data/Warlord2.DUN new file mode 100644 index 000000000..c6e0e0c02 Binary files /dev/null and b/test/fixtures/Levels/L4Data/Warlord2.DUN differ diff --git a/test/fixtures/diablo/13-594689775.dun b/test/fixtures/diablo/13-594689775.dun new file mode 100644 index 000000000..7da2e18e6 Binary files /dev/null and b/test/fixtures/diablo/13-594689775.dun differ diff --git a/test/fixtures/diablo/15-1256511996.dun b/test/fixtures/diablo/15-1256511996.dun new file mode 100644 index 000000000..2c09dcfa3 Binary files /dev/null and b/test/fixtures/diablo/15-1256511996.dun differ