From 932d0934339a12c609e2eea776eda8acdf836247 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 21 Mar 2021 15:39:18 +0100 Subject: [PATCH] :white_check_mark: Test GetDirection --- CMakeLists.txt | 1 + Source/missiles.h | 2 + SourceT/missiles_test.cpp | 84 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 SourceT/missiles_test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c9130f68..46a3750fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -378,6 +378,7 @@ if(RUN_TESTS) SourceT/file_util_test.cpp SourceT/inv_test.cpp SourceT/lighting_test.cpp + SourceT/missiles_test.cpp SourceT/pack_test.cpp SourceT/player_test.cpp SourceT/scrollrt_test.cpp diff --git a/Source/missiles.h b/Source/missiles.h index 694604e4f..48d2871ad 100644 --- a/Source/missiles.h +++ b/Source/missiles.h @@ -97,6 +97,8 @@ extern bool MissilePreFlag; void GetDamageAmt(int i, int *mind, int *maxd); int GetSpellLevel(int id, int sn); +int GetDirection8(int x1, int y1, int x2, int y2); +int GetDirection16(int x1, int y1, int x2, int y2); void DeleteMissile(int mi, int i); BOOL MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, BOOLEAN shift); BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEAN shift, int earflag, BOOLEAN *blocked); diff --git a/SourceT/missiles_test.cpp b/SourceT/missiles_test.cpp new file mode 100644 index 000000000..5a5954a34 --- /dev/null +++ b/SourceT/missiles_test.cpp @@ -0,0 +1,84 @@ +#include +#include "all.h" + +TEST(Missiles, GetDirection8) +{ + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 15, 15)); + EXPECT_EQ(1, dvl::GetDirection8(0, 0, 0, 15)); + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 8, 15)); + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 8, 8)); + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 15, 8)); + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 15, 7)); + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 11, 7)); + EXPECT_EQ(0, dvl::GetDirection8(0, 0, 8, 11)); + EXPECT_EQ(4, dvl::GetDirection8(15, 15, 0, 0)); + EXPECT_EQ(5, dvl::GetDirection8(0, 15, 0, 0)); + EXPECT_EQ(4, dvl::GetDirection8(8, 15, 0, 0)); + EXPECT_EQ(4, dvl::GetDirection8(8, 8, 0, 0)); + EXPECT_EQ(4, dvl::GetDirection8(15, 8, 0, 0)); + EXPECT_EQ(4, dvl::GetDirection8(15, 7, 0, 0)); + EXPECT_EQ(4, dvl::GetDirection8(11, 7, 0, 0)); + EXPECT_EQ(4, dvl::GetDirection8(8, 11, 0, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 15, 15, 0)); + EXPECT_EQ(7, dvl::GetDirection8(0, 0, 15, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 8, 15, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 8, 8, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 15, 8, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 15, 7, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 11, 7, 0)); + EXPECT_EQ(6, dvl::GetDirection8(0, 8, 11, 0)); + + EXPECT_EQ(0, dvl::GetDirection8(1, 1, 2, 2)); + EXPECT_EQ(1, dvl::GetDirection8(1, 1, 1, 2)); + EXPECT_EQ(2, dvl::GetDirection8(1, 1, 0, 2)); + EXPECT_EQ(3, dvl::GetDirection8(1, 1, 0, 1)); + EXPECT_EQ(4, dvl::GetDirection8(1, 1, 0, 0)); + EXPECT_EQ(5, dvl::GetDirection8(1, 1, 1, 0)); + EXPECT_EQ(6, dvl::GetDirection8(1, 1, 2, 0)); + EXPECT_EQ(7, dvl::GetDirection8(1, 1, 2, 1)); +} + +TEST(Missiles, GetDirection16) +{ + EXPECT_EQ(0, dvl::GetDirection16(0, 0, 15, 15)); + EXPECT_EQ(2, dvl::GetDirection16(0, 0, 0, 15)); + EXPECT_EQ(1, dvl::GetDirection16(0, 0, 8, 15)); + EXPECT_EQ(0, dvl::GetDirection16(0, 0, 8, 8)); + EXPECT_EQ(15, dvl::GetDirection16(0, 0, 15, 8)); + EXPECT_EQ(15, dvl::GetDirection16(0, 0, 15, 7)); + EXPECT_EQ(15, dvl::GetDirection16(0, 0, 11, 7)); + EXPECT_EQ(1, dvl::GetDirection16(0, 0, 8, 11)); + EXPECT_EQ(8, dvl::GetDirection16(15, 15, 0, 0)); + EXPECT_EQ(10, dvl::GetDirection16(0, 15, 0, 0)); + EXPECT_EQ(9, dvl::GetDirection16(8, 15, 0, 0)); + EXPECT_EQ(8, dvl::GetDirection16(8, 8, 0, 0)); + EXPECT_EQ(7, dvl::GetDirection16(15, 8, 0, 0)); + EXPECT_EQ(7, dvl::GetDirection16(15, 7, 0, 0)); + EXPECT_EQ(7, dvl::GetDirection16(11, 7, 0, 0)); + EXPECT_EQ(9, dvl::GetDirection16(8, 11, 0, 0)); + EXPECT_EQ(12, dvl::GetDirection16(0, 15, 15, 0)); + EXPECT_EQ(14, dvl::GetDirection16(0, 0, 15, 0)); + EXPECT_EQ(13, dvl::GetDirection16(0, 8, 15, 0)); + EXPECT_EQ(12, dvl::GetDirection16(0, 8, 8, 0)); + EXPECT_EQ(11, dvl::GetDirection16(0, 15, 8, 0)); + EXPECT_EQ(11, dvl::GetDirection16(0, 15, 7, 0)); + EXPECT_EQ(11, dvl::GetDirection16(0, 11, 7, 0)); + EXPECT_EQ(13, dvl::GetDirection16(0, 8, 11, 0)); + + EXPECT_EQ(0, dvl::GetDirection16(2, 2, 3, 3)); + EXPECT_EQ(1, dvl::GetDirection16(2, 2, 3, 4)); + EXPECT_EQ(2, dvl::GetDirection16(2, 2, 2, 4)); + EXPECT_EQ(3, dvl::GetDirection16(2, 2, 1, 4)); + EXPECT_EQ(4, dvl::GetDirection16(2, 2, 1, 3)); + EXPECT_EQ(5, dvl::GetDirection16(2, 2, 0, 3)); + EXPECT_EQ(6, dvl::GetDirection16(2, 2, 0, 2)); + EXPECT_EQ(7, dvl::GetDirection16(2, 2, 0, 1)); + EXPECT_EQ(8, dvl::GetDirection16(2, 2, 1, 1)); + EXPECT_EQ(9, dvl::GetDirection16(2, 2, 1, 0)); + EXPECT_EQ(10, dvl::GetDirection16(2, 2, 2, 0)); + EXPECT_EQ(11, dvl::GetDirection16(2, 2, 3, 0)); + EXPECT_EQ(12, dvl::GetDirection16(2, 2, 3, 1)); + EXPECT_EQ(13, dvl::GetDirection16(2, 2, 4, 1)); + EXPECT_EQ(14, dvl::GetDirection16(2, 2, 4, 2)); + EXPECT_EQ(15, dvl::GetDirection16(2, 2, 4, 3)); +}