MapComparer.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * MapComparer.h, 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. #pragma once
  11. #include "../lib/ScopeGuard.h"
  12. #include "../lib/JsonNode.h"
  13. namespace vstd
  14. {
  15. template<typename Func>
  16. class ScopeGuard;
  17. }
  18. class CMap;
  19. class CGObjectInstance;
  20. struct MapComparer
  21. {
  22. const CMap * actual;
  23. const CMap * expected;
  24. void compareHeader();
  25. void compareOptions();
  26. void compareObject(const CGObjectInstance * actual, const CGObjectInstance * expected);
  27. void compareObjects();
  28. void compareTerrain();
  29. void compare();
  30. void operator()(const std::unique_ptr<CMap> & actual, const std::unique_ptr<CMap> & expected);
  31. };
  32. struct JsonMapComparer
  33. {
  34. typedef std::function<void (void)> TScopeGuard;
  35. bool strict;
  36. std::list<std::string> namePath;
  37. JsonMapComparer();
  38. vstd::ScopeGuard<TScopeGuard> pushName(const std::string & name);
  39. std::string buildMessage(const std::string & message);
  40. void addError(const std::string & message);
  41. void addWarning(const std::string & message);
  42. bool isEmpty(const JsonNode & value);
  43. void check(const bool condition, const std::string & message);
  44. void checkExcessStructField(const JsonNode & actualValue, const std::string & name, const JsonMap & expected);
  45. void checkStructField(const JsonMap & actual, const std::string & name, const JsonNode & expectedValue);
  46. void checkEqualInteger(const si64 actual, const si64 expected);
  47. void checkEqualFloat(const double actual, const double expected);
  48. void checkEqualString(const std::string & actual, const std::string & expected);
  49. void checkEqualJson(const JsonNode & actual, const JsonNode & expected);
  50. void checkEqualJson(const JsonMap & actual, const JsonMap & expected);
  51. void checkEqualJson(const JsonVector & actual, const JsonVector & expected);
  52. void compareHeader(const JsonNode & actual, const JsonNode & expected);
  53. void compareObjects(const JsonNode & actual, const JsonNode & expected);
  54. void compareTerrain(const std::string & levelName, const JsonNode & actual, const JsonNode & expected);
  55. };