MapComparer.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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(field) BOOST_CHECK_EQUAL(actual->field, expected->field)
  14. std::ostream& operator<< (std::ostream& os, const PlayerInfo & p)
  15. {
  16. os << "PlayerInfo";
  17. return os;
  18. }
  19. bool operator!=(const PlayerInfo & actual, const PlayerInfo & expected)
  20. {
  21. return true;
  22. }
  23. void MapComparer::compareHeader()
  24. {
  25. VCMI_CHECK_FIELD_EQUAL(name);
  26. VCMI_CHECK_FIELD_EQUAL(description);
  27. VCMI_CHECK_FIELD_EQUAL(difficulty);
  28. VCMI_CHECK_FIELD_EQUAL(levelLimit);
  29. VCMI_CHECK_FIELD_EQUAL(victoryMessage);
  30. VCMI_CHECK_FIELD_EQUAL(defeatMessage);
  31. VCMI_CHECK_FIELD_EQUAL(victoryIconIndex);
  32. VCMI_CHECK_FIELD_EQUAL(defeatIconIndex);
  33. BOOST_CHECK_EQUAL_COLLECTIONS(actual->players.begin(), actual->players.end(), expected->players.begin(), expected->players.end());
  34. //map size parameters are vital for further checks
  35. BOOST_REQUIRE_EQUAL(actual->height, expected->height);
  36. BOOST_REQUIRE_EQUAL(actual->width, expected->width);
  37. BOOST_REQUIRE_EQUAL(actual->twoLevel, expected->twoLevel);
  38. BOOST_FAIL("Not implemented");
  39. }
  40. void MapComparer::compareOptions()
  41. {
  42. BOOST_FAIL("Not implemented");
  43. }
  44. void MapComparer::compareObjects()
  45. {
  46. BOOST_FAIL("Not implemented");
  47. }
  48. void MapComparer::compareTerrain()
  49. {
  50. BOOST_FAIL("Not implemented");
  51. }
  52. void MapComparer::compare()
  53. {
  54. BOOST_REQUIRE_NE((void *) actual, (void *) expected); //should not point to the same object
  55. BOOST_REQUIRE_MESSAGE(actual != nullptr, "Actual map is not defined");
  56. BOOST_REQUIRE_MESSAGE(actual != nullptr, "Expected map is not defined");
  57. compareHeader();
  58. compareObjects();
  59. compareOptions();
  60. compareTerrain();
  61. }
  62. void MapComparer::operator() (const std::unique_ptr<CMap>& actual, const std::unique_ptr<CMap>& expected)
  63. {
  64. this->actual = actual.get();
  65. this->expected = expected.get();
  66. compare();
  67. }