BattleHexTest.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. BattleHex mainHex;
  14. std::vector<BattleHex> neighbouringTiles;
  15. mainHex.setXY(16,0);
  16. neighbouringTiles = mainHex.neighbouringTiles();
  17. EXPECT_EQ(neighbouringTiles.size(), 1);
  18. mainHex.setXY(0,0);
  19. neighbouringTiles = mainHex.neighbouringTiles();
  20. EXPECT_EQ(neighbouringTiles.size(), 2);
  21. mainHex.setXY(15,2);
  22. neighbouringTiles = mainHex.neighbouringTiles();
  23. EXPECT_EQ(neighbouringTiles.size(), 3);
  24. mainHex.setXY(2,0);
  25. neighbouringTiles = mainHex.neighbouringTiles();
  26. EXPECT_EQ(neighbouringTiles.size(), 4);
  27. mainHex.setXY(1,2);
  28. neighbouringTiles = mainHex.neighbouringTiles();
  29. EXPECT_EQ(neighbouringTiles.size(), 5);
  30. mainHex.setXY(8,5);
  31. neighbouringTiles = mainHex.neighbouringTiles();
  32. EXPECT_EQ(neighbouringTiles.size(), 6);
  33. ASSERT_TRUE(neighbouringTiles.size()==6 && mainHex==93);
  34. EXPECT_EQ(neighbouringTiles.at(0), 75);
  35. EXPECT_EQ(neighbouringTiles.at(1), 76);
  36. EXPECT_EQ(neighbouringTiles.at(2), 94);
  37. EXPECT_EQ(neighbouringTiles.at(3), 110);
  38. EXPECT_EQ(neighbouringTiles.at(4), 109);
  39. EXPECT_EQ(neighbouringTiles.at(5), 92);
  40. }
  41. TEST(BattleHexTest, getDistance){
  42. BattleHex firstHex(0,0), secondHex(16,0);
  43. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 16);
  44. firstHex=0, secondHex=170;
  45. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 10);
  46. firstHex=16, secondHex=181;
  47. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 10);
  48. firstHex=186, secondHex=70;
  49. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 17);
  50. firstHex=166, secondHex=39;
  51. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 11);
  52. firstHex=25, secondHex=103;
  53. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 9);
  54. firstHex=18, secondHex=71;
  55. EXPECT_EQ((int)firstHex.getDistance(firstHex,secondHex), 4);
  56. }
  57. TEST(BattleHexTest, mutualPositions)
  58. {
  59. BattleHex firstHex(0,0), secondHex(16,0);
  60. firstHex=86, secondHex=68;
  61. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::TOP_LEFT);
  62. secondHex=69;
  63. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::TOP_RIGHT);
  64. secondHex=87;
  65. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::RIGHT);
  66. secondHex=103;
  67. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::BOTTOM_RIGHT);
  68. secondHex=102;
  69. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::BOTTOM_LEFT);
  70. secondHex=85;
  71. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), BattleHex::EDir::LEFT);
  72. secondHex=46;
  73. EXPECT_EQ((int)firstHex.mutualPosition(firstHex,secondHex), -1);
  74. }
  75. TEST(BattleHexTest, getClosestTile)
  76. {
  77. BattleHex mainHex(0);
  78. std::set<BattleHex> possibilities;
  79. possibilities.insert(3);
  80. possibilities.insert(170);
  81. possibilities.insert(100);
  82. possibilities.insert(119);
  83. possibilities.insert(186);
  84. EXPECT_EQ(mainHex.getClosestTile(0,mainHex,possibilities), 3);
  85. mainHex = 139;
  86. EXPECT_EQ(mainHex.getClosestTile(1,mainHex,possibilities), 119);
  87. mainHex = 16;
  88. EXPECT_EQ(mainHex.getClosestTile(1,mainHex,possibilities), 100);
  89. mainHex = 166;
  90. EXPECT_EQ(mainHex.getClosestTile(0,mainHex,possibilities), 186);
  91. mainHex = 76;
  92. EXPECT_EQ(mainHex.getClosestTile(1,mainHex,possibilities), 3);
  93. EXPECT_EQ(mainHex.getClosestTile(0,mainHex,possibilities), 100);
  94. }
  95. TEST(BattleHexTest, moveEDir)
  96. {
  97. BattleHex mainHex(20);
  98. mainHex.moveInDirection(BattleHex::EDir::BOTTOM_RIGHT);
  99. EXPECT_EQ(mainHex, 37);
  100. mainHex.moveInDirection(BattleHex::EDir::RIGHT);
  101. EXPECT_EQ(mainHex, 38);
  102. mainHex.moveInDirection(BattleHex::EDir::TOP_RIGHT);
  103. EXPECT_EQ(mainHex, 22);
  104. mainHex.moveInDirection(BattleHex::EDir::TOP_LEFT);
  105. EXPECT_EQ(mainHex, 4);
  106. mainHex.moveInDirection(BattleHex::EDir::LEFT);
  107. EXPECT_EQ(mainHex, 3);
  108. mainHex.moveInDirection(BattleHex::EDir::BOTTOM_LEFT);
  109. EXPECT_EQ(mainHex, 20);
  110. }