diff --git a/CMakeLists.txt b/CMakeLists.txt index 90a814e43..1f813d413 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -317,7 +317,16 @@ if(RUN_TESTS) SourceT/appfat_test.cpp SourceT/automap_test.cpp SourceT/control_test.cpp - SourceT/cursor_test.cpp) + SourceT/cursor_test.cpp + SourceT/codec_test.cpp + SourceT/dead_test.cpp + SourceT/diablo_test.cpp + SourceT/doom_test.cpp + SourceT/drlg_l1_test.cpp + SourceT/drlg_l2_test.cpp + SourceT/drlg_l3_test.cpp + SourceT/drlg_l4_test.cpp + SourceT/effects_test.cpp) endif() add_executable(${BIN_TARGET} WIN32 MACOSX_BUNDLE ${devilutionx_SRCS}) diff --git a/SourceT/codec_test.cpp b/SourceT/codec_test.cpp new file mode 100644 index 000000000..69631d041 --- /dev/null +++ b/SourceT/codec_test.cpp @@ -0,0 +1,10 @@ +#include +#include "devilution.h" + +TEST(Codec, codec_get_encoded_len) { + EXPECT_EQ(dvl::codec_get_encoded_len(50), 72); +} + +TEST(Codec, codec_get_encoded_len_eq) { + EXPECT_EQ(dvl::codec_get_encoded_len(128), 136); +} diff --git a/SourceT/dead_test.cpp b/SourceT/dead_test.cpp new file mode 100644 index 000000000..5ad255478 --- /dev/null +++ b/SourceT/dead_test.cpp @@ -0,0 +1,12 @@ +#include +#include "devilution.h" + +TEST(Dead, AddDead) { + dvl::AddDead(21, 48, 8, dvl::DIR_W); + EXPECT_EQ(dvl::dDead[21][48], 8 + (dvl::DIR_W << 5)); +} + +TEST(Dead, AddDead_OOB) { + dvl::AddDead(21, 48, MAXDEAD + 1, dvl::DIR_W); + EXPECT_EQ(dvl::dDead[21][48], 0 + (dvl::DIR_W << 5)); +} diff --git a/SourceT/diablo_test.cpp b/SourceT/diablo_test.cpp new file mode 100644 index 000000000..7a78a084a --- /dev/null +++ b/SourceT/diablo_test.cpp @@ -0,0 +1,8 @@ +#include +#include "devilution.h" + +TEST(Diablo, diablo_pause_game_unpause) { + dvl::PauseMode = 1; + dvl::diablo_pause_game(); + EXPECT_EQ(dvl::PauseMode, 0); +} diff --git a/SourceT/doom_test.cpp b/SourceT/doom_test.cpp new file mode 100644 index 000000000..bf66e4602 --- /dev/null +++ b/SourceT/doom_test.cpp @@ -0,0 +1,12 @@ +#include +#include "devilution.h" + +TEST(Doom, doom_get_frame_from_time) { + dvl::DoomQuestState = 1200 * 8 + 548; + EXPECT_EQ(dvl::doom_get_frame_from_time(), 8); +} + +TEST(Doom, doom_get_frame_from_time_max) { + dvl::DoomQuestState = 1200 * 30 + 1; + EXPECT_EQ(dvl::doom_get_frame_from_time(), 31); +} diff --git a/SourceT/drlg_l1_test.cpp b/SourceT/drlg_l1_test.cpp new file mode 100644 index 000000000..4419f7b3b --- /dev/null +++ b/SourceT/drlg_l1_test.cpp @@ -0,0 +1,23 @@ +#include +#include "devilution.h" + +TEST(Drlg_l1, DRLG_Init_Globals_4flag) { + dvl::lightflag = false; + dvl::light4flag = true; + dvl::DRLG_Init_Globals(); + EXPECT_EQ(dvl::dLight[0][0], 3); +} + +TEST(Drlg_l1, DRLG_Init_Globals_noflag) { + dvl::lightflag = false; + dvl::light4flag = false; + dvl::DRLG_Init_Globals(); + EXPECT_EQ(dvl::dLight[0][0], 15); +} + +TEST(Drlg_l1, DRLG_Init_Globals) { + dvl::lightflag = true; + dvl::DRLG_Init_Globals(); + EXPECT_EQ(dvl::dLight[0][0], 0); +} + diff --git a/SourceT/drlg_l2_test.cpp b/SourceT/drlg_l2_test.cpp new file mode 100644 index 000000000..dc31a2622 --- /dev/null +++ b/SourceT/drlg_l2_test.cpp @@ -0,0 +1,8 @@ +#include +#include "devilution.h" + +TEST(Drlg_l2, InitDungeon) { + dvl::InitDungeon(); + EXPECT_EQ(dvl::predungeon[0][0], 32); + EXPECT_EQ(dvl::dflags[0][0], 0); +} diff --git a/SourceT/drlg_l3_test.cpp b/SourceT/drlg_l3_test.cpp new file mode 100644 index 000000000..2df876a48 --- /dev/null +++ b/SourceT/drlg_l3_test.cpp @@ -0,0 +1,18 @@ +#include +#include "devilution.h" + +TEST(Drlg_l3, AddFenceDoors) { + dvl::dungeon[5][5] = 7; + dvl::dungeon[5 - 1][5] = 130; + dvl::dungeon[5 + 1][5] = 152; + dvl::AddFenceDoors(); + EXPECT_EQ(dvl::dungeon[5][5], 146); +} + +TEST(Drlg_l3, AddFenceDoors_no) { + dvl::dungeon[5][5] = 7; + dvl::dungeon[5 - 1][5] = 130; + dvl::dungeon[5 + 1][5] = 153; + dvl::AddFenceDoors(); + EXPECT_EQ(dvl::dungeon[5][5], 7); +} diff --git a/SourceT/drlg_l4_test.cpp b/SourceT/drlg_l4_test.cpp new file mode 100644 index 000000000..294b3f5ca --- /dev/null +++ b/SourceT/drlg_l4_test.cpp @@ -0,0 +1,16 @@ +#include +#include "devilution.h" + +TEST(Drlg_l4, IsDURWall) { + EXPECT_EQ(dvl::IsDURWall(25), true); + EXPECT_EQ(dvl::IsDURWall(28), true); + EXPECT_EQ(dvl::IsDURWall(23), true); + EXPECT_EQ(dvl::IsDURWall(20), false); +} + +TEST(Drlg_l4, IsDLLWall) { + EXPECT_EQ(dvl::IsDLLWall(27), true); + EXPECT_EQ(dvl::IsDLLWall(26), true); + EXPECT_EQ(dvl::IsDLLWall(22), true); + EXPECT_EQ(dvl::IsDLLWall(20), false); +} diff --git a/SourceT/effects_test.cpp b/SourceT/effects_test.cpp new file mode 100644 index 000000000..88b5dd6d8 --- /dev/null +++ b/SourceT/effects_test.cpp @@ -0,0 +1,52 @@ +#include +#include "devilution.h" + +TEST(Drlg_l4, calc_snd_position_center) { + dvl::plr[dvl::myplr].WorldX = 50; + dvl::plr[dvl::myplr].WorldY = 50; + int plVolume = 0; + int plPan = 0; + EXPECT_EQ(dvl::calc_snd_position(50, 50, &plVolume, &plPan), true); + EXPECT_EQ(plVolume, 0); + EXPECT_EQ(plPan, 0); +} + +TEST(Drlg_l4, calc_snd_position_near) { + dvl::plr[dvl::myplr].WorldX = 50; + dvl::plr[dvl::myplr].WorldY = 50; + int plVolume = 0; + int plPan = 0; + EXPECT_EQ(dvl::calc_snd_position(55, 50, &plVolume, &plPan), true); + EXPECT_EQ(plVolume, -320); + EXPECT_EQ(plPan, 1280); +} + +TEST(Drlg_l4, calc_snd_position_out_of_range) { + dvl::plr[dvl::myplr].WorldX = 12; + dvl::plr[dvl::myplr].WorldY = 12; + int plVolume = 0; + int plPan = 0; + EXPECT_EQ(dvl::calc_snd_position(112, 112, &plVolume, &plPan), false); + ASSERT_GE(plVolume, 6400); + EXPECT_EQ(plPan, 0); +} + +TEST(Drlg_l4, calc_snd_position_extream_right) { + dvl::plr[dvl::myplr].WorldX = 50; + dvl::plr[dvl::myplr].WorldY = 50; + int plVolume = 0; + int plPan = 0; + EXPECT_EQ(dvl::calc_snd_position(76, 50, &plVolume, &plPan), false); + EXPECT_EQ(plVolume, 0); + EXPECT_GT(plPan, 6400); +} + +TEST(Drlg_l4, calc_snd_position_extream_left) { + dvl::plr[dvl::myplr].WorldX = 50; + dvl::plr[dvl::myplr].WorldY = 50; + int plVolume = 0; + int plPan = 0; + EXPECT_EQ(dvl::calc_snd_position(24, 50, &plVolume, &plPan), false); + EXPECT_EQ(plVolume, 0); + EXPECT_LT(plPan, -6400); +}