BattleHexTest.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /*
  2. * BattleHexTest.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "../lib/battle/BattleHex.h"
  12. TEST(BattleHexTest, getNeighbouringTiles)
  13. {
  14. BattleHex mainHex;
  15. std::vector<BattleHex> neighbouringTiles;
  16. mainHex.setXY(16,0);
  17. neighbouringTiles = mainHex.neighbouringTiles();
  18. EXPECT_EQ(neighbouringTiles.size(), 1);
  19. mainHex.setXY(0,0);
  20. neighbouringTiles = mainHex.neighbouringTiles();
  21. EXPECT_EQ(neighbouringTiles.size(), 2);
  22. mainHex.setXY(15,2);
  23. neighbouringTiles = mainHex.neighbouringTiles();
  24. EXPECT_EQ(neighbouringTiles.size(), 3);
  25. mainHex.setXY(2,0);
  26. neighbouringTiles = mainHex.neighbouringTiles();
  27. EXPECT_EQ(neighbouringTiles.size(), 4);
  28. mainHex.setXY(1,2);
  29. neighbouringTiles = mainHex.neighbouringTiles();
  30. EXPECT_EQ(neighbouringTiles.size(), 5);
  31. mainHex.setXY(8,5);
  32. neighbouringTiles = mainHex.neighbouringTiles();
  33. EXPECT_EQ(neighbouringTiles.size(), 6);
  34. ASSERT_TRUE(neighbouringTiles.size()==6 && mainHex==93);
  35. EXPECT_EQ(neighbouringTiles.at(0), 75);
  36. EXPECT_EQ(neighbouringTiles.at(1), 76);
  37. EXPECT_EQ(neighbouringTiles.at(2), 94);
  38. EXPECT_EQ(neighbouringTiles.at(3), 110);
  39. EXPECT_EQ(neighbouringTiles.at(4), 109);
  40. EXPECT_EQ(neighbouringTiles.at(5), 92);
  41. }
  42. TEST(BattleHexTest, getDistance)
  43. {
  44. BattleHex firstHex(0,0), secondHex(16,0);
  45. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 16);
  46. firstHex=0, secondHex=170;
  47. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 10);
  48. firstHex=16, secondHex=181;
  49. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 10);
  50. firstHex=186, secondHex=70;
  51. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 17);
  52. firstHex=166, secondHex=39;
  53. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 11);
  54. firstHex=25, secondHex=103;
  55. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 9);
  56. firstHex=18, secondHex=71;
  57. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 4);
  58. }
  59. TEST(BattleHexTest, mutualPositions)
  60. {
  61. BattleHex firstHex(0,0), secondHex(16,0);
  62. firstHex=86, secondHex=68;
  63. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::TOP_LEFT);
  64. secondHex=69;
  65. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::TOP_RIGHT);
  66. secondHex=87;
  67. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::RIGHT);
  68. secondHex=103;
  69. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::BOTTOM_RIGHT);
  70. secondHex=102;
  71. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::BOTTOM_LEFT);
  72. secondHex=85;
  73. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::LEFT);
  74. secondHex=46;
  75. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), -1);
  76. }
  77. TEST(BattleHexTest, getClosestTile)
  78. {
  79. BattleHex mainHex(0);
  80. std::set<BattleHex> possibilities;
  81. possibilities.insert(3);
  82. possibilities.insert(170);
  83. possibilities.insert(100);
  84. possibilities.insert(119);
  85. possibilities.insert(186);
  86. EXPECT_EQ(mainHex.getClosestTile(0,mainHex,possibilities), 3);
  87. mainHex = 139;
  88. EXPECT_EQ(mainHex.getClosestTile(1,mainHex,possibilities), 119);
  89. mainHex = 16;
  90. EXPECT_EQ(mainHex.getClosestTile(1,mainHex,possibilities), 100);
  91. mainHex = 166;
  92. EXPECT_EQ(mainHex.getClosestTile(0,mainHex,possibilities), 186);
  93. mainHex = 76;
  94. EXPECT_EQ(mainHex.getClosestTile(1,mainHex,possibilities), 3);
  95. EXPECT_EQ(mainHex.getClosestTile(0,mainHex,possibilities), 100);
  96. }
  97. TEST(BattleHexTest, moveEDir)
  98. {
  99. BattleHex mainHex(20);
  100. mainHex.moveInDirection(BattleHex::EDir::BOTTOM_RIGHT);
  101. EXPECT_EQ(mainHex, 37);
  102. mainHex.moveInDirection(BattleHex::EDir::RIGHT);
  103. EXPECT_EQ(mainHex, 38);
  104. mainHex.moveInDirection(BattleHex::EDir::TOP_RIGHT);
  105. EXPECT_EQ(mainHex, 22);
  106. mainHex.moveInDirection(BattleHex::EDir::TOP_LEFT);
  107. EXPECT_EQ(mainHex, 4);
  108. mainHex.moveInDirection(BattleHex::EDir::LEFT);
  109. EXPECT_EQ(mainHex, 3);
  110. mainHex.moveInDirection(BattleHex::EDir::BOTTOM_LEFT);
  111. EXPECT_EQ(mainHex, 20);
  112. }