BattleHexTest.cpp 4.1 KB

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