MapComparer.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * MapComparer.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 <boost/test/unit_test.hpp>
  12. #include "MapComparer.h"
  13. #define VCMI_CHECK_FIELD_EQUAL_P(field) BOOST_CHECK_EQUAL(actual->field, expected->field)
  14. #define VCMI_CHECK_FIELD_EQUAL(field) BOOST_CHECK_EQUAL(actual.field, expected.field)
  15. #define VCMI_REQUIRE_FIELD_EQUAL(field) BOOST_REQUIRE_EQUAL(actual->field, expected->field)
  16. std::ostream& operator<< (std::ostream& os, const PlayerInfo & value)
  17. {
  18. os << "PlayerInfo";
  19. return os;
  20. }
  21. //std::ostream& operator<< (std::ostream& os, const std::set<ui8> & value)
  22. //{
  23. // os << "'Set'";
  24. // return os;
  25. //}
  26. bool operator!=(const PlayerInfo & actual, const PlayerInfo & expected)
  27. {
  28. VCMI_CHECK_FIELD_EQUAL(canHumanPlay);
  29. VCMI_CHECK_FIELD_EQUAL(canComputerPlay);
  30. VCMI_CHECK_FIELD_EQUAL(aiTactic);
  31. //VCMI_CHECK_FIELD_EQUAL(allowedFactions);
  32. return false;
  33. }
  34. void MapComparer::compareHeader()
  35. {
  36. VCMI_CHECK_FIELD_EQUAL_P(name);
  37. VCMI_CHECK_FIELD_EQUAL_P(description);
  38. VCMI_CHECK_FIELD_EQUAL_P(difficulty);
  39. VCMI_CHECK_FIELD_EQUAL_P(levelLimit);
  40. VCMI_CHECK_FIELD_EQUAL_P(victoryMessage);
  41. VCMI_CHECK_FIELD_EQUAL_P(defeatMessage);
  42. VCMI_CHECK_FIELD_EQUAL_P(victoryIconIndex);
  43. VCMI_CHECK_FIELD_EQUAL_P(defeatIconIndex);
  44. BOOST_CHECK_EQUAL_COLLECTIONS(actual->players.begin(), actual->players.end(), expected->players.begin(), expected->players.end());
  45. //map size parameters are vital for further checks
  46. VCMI_REQUIRE_FIELD_EQUAL(height);
  47. VCMI_REQUIRE_FIELD_EQUAL(width);
  48. VCMI_REQUIRE_FIELD_EQUAL(twoLevel);
  49. BOOST_FAIL("Not implemented");
  50. }
  51. void MapComparer::compareOptions()
  52. {
  53. BOOST_FAIL("Not implemented");
  54. }
  55. void MapComparer::compareObjects()
  56. {
  57. BOOST_FAIL("Not implemented");
  58. }
  59. void MapComparer::compareTerrain()
  60. {
  61. BOOST_FAIL("Not implemented");
  62. }
  63. void MapComparer::compare()
  64. {
  65. BOOST_REQUIRE_NE((void *) actual, (void *) expected); //should not point to the same object
  66. BOOST_REQUIRE_MESSAGE(actual != nullptr, "Actual map is not defined");
  67. BOOST_REQUIRE_MESSAGE(actual != nullptr, "Expected map is not defined");
  68. compareHeader();
  69. compareOptions();
  70. compareObjects();
  71. compareTerrain();
  72. }
  73. void MapComparer::operator() (const std::unique_ptr<CMap>& actual, const std::unique_ptr<CMap>& expected)
  74. {
  75. this->actual = actual.get();
  76. this->expected = expected.get();
  77. compare();
  78. }