Refactor dungeon room initialization for clarity and add unit tests for room loading functionality
This commit is contained in:
@@ -72,7 +72,7 @@ absl::Status DungeonEditor::Update() {
|
||||
absl::Status DungeonEditor::Initialize() {
|
||||
auto dungeon_man_pal_group = rom()->palette_group().dungeon_main;
|
||||
for (int i = 0; i < 0x100 + 40; i++) {
|
||||
rooms_.emplace_back(zelda3::dungeon::Room(i));
|
||||
rooms_.emplace_back(zelda3::dungeon::Room(/*room_id=*/i));
|
||||
rooms_[i].LoadHeader();
|
||||
rooms_[i].LoadRoomFromROM();
|
||||
if (flags()->kDrawDungeonRoomGraphics) {
|
||||
@@ -827,4 +827,4 @@ void DungeonEditor::DrawUsageGrid() {
|
||||
|
||||
} // namespace editor
|
||||
} // namespace app
|
||||
} // namespace yaze
|
||||
} // namespace yaze
|
||||
|
||||
37
src/test/zelda3/dungeon_room_test.cc
Normal file
37
src/test/zelda3/dungeon_room_test.cc
Normal file
@@ -0,0 +1,37 @@
|
||||
#include "app/zelda3/dungeon/room.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "app/rom.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace test {
|
||||
namespace zelda3 {
|
||||
|
||||
class DungeonRoomTest : public ::testing::Test, public app::SharedRom {
|
||||
protected:
|
||||
void SetUp() override {
|
||||
// Skip tests on Linux for automated github builds
|
||||
#if defined(__linux__)
|
||||
GTEST_SKIP();
|
||||
#else
|
||||
if (!rom()->LoadFromFile("./zelda3.sfc").ok()) {
|
||||
GTEST_SKIP_("Failed to load test ROM");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
void TearDown() override {}
|
||||
};
|
||||
|
||||
TEST_F(DungeonRoomTest, SingleRoomLoadOk) {
|
||||
app::zelda3::dungeon::Room test_room(/*room_id=*/0);
|
||||
test_room.LoadHeader();
|
||||
// Do some assertions based on the output in ZS
|
||||
test_room.LoadRoomFromROM();
|
||||
}
|
||||
|
||||
} // namespace zelda3
|
||||
} // namespace test
|
||||
} // namespace yaze
|
||||
Reference in New Issue
Block a user