Selaa lähdekoodia

Advance MapComparer

AlexVinS 10 vuotta sitten
vanhempi
sitoutus
0798ef4b2a
3 muutettua tiedostoa jossa 82 lisäystä ja 7 poistoa
  1. 2 3
      test/CMapFormatTest.cpp
  2. 69 3
      test/MapComparer.cpp
  3. 11 1
      test/MapComparer.h

+ 2 - 3
test/CMapFormatTest.cpp

@@ -62,9 +62,8 @@ BOOST_AUTO_TEST_CASE(CMapFormatVCMI_Simple)
 		std::unique_ptr<CMap> serialized = loader.loadMap();
 		
 		
-		MapComparer c;
-		
-		BOOST_REQUIRE_MESSAGE(c(initialMap, serialized), "Serialize cycle failed");
+		MapComparer c;		
+		c(initialMap, serialized);
 	}
 	catch(const std::exception & e)
 	{

+ 69 - 3
test/MapComparer.cpp

@@ -13,8 +13,74 @@
 
 #include "MapComparer.h"
 
-bool MapComparer::operator() (const std::unique_ptr<CMap>& lhs, const std::unique_ptr<CMap>&  rhs)
+#define VCMI_CHECK_FIELD_EQUAL(field) BOOST_CHECK_EQUAL(actual->field, expected->field)
+
+std::ostream& operator<< (std::ostream& os, const PlayerInfo & p)
+{
+	os << "PlayerInfo"; 
+	return os;
+}
+
+bool operator!=(const PlayerInfo & actual, const PlayerInfo & expected)
+{
+	
+	
+	return true;
+}
+
+void MapComparer::compareHeader()
+{
+	VCMI_CHECK_FIELD_EQUAL(name);
+	VCMI_CHECK_FIELD_EQUAL(description);
+	VCMI_CHECK_FIELD_EQUAL(difficulty);
+	VCMI_CHECK_FIELD_EQUAL(levelLimit);
+
+	VCMI_CHECK_FIELD_EQUAL(victoryMessage);
+	VCMI_CHECK_FIELD_EQUAL(defeatMessage);
+	VCMI_CHECK_FIELD_EQUAL(victoryIconIndex);
+	VCMI_CHECK_FIELD_EQUAL(defeatIconIndex);
+	
+	BOOST_CHECK_EQUAL_COLLECTIONS(actual->players.begin(), actual->players.end(), expected->players.begin(), expected->players.end());
+
+
+	//map size parameters are vital for further checks 
+	BOOST_REQUIRE_EQUAL(actual->height, expected->height);
+	BOOST_REQUIRE_EQUAL(actual->width, expected->width);
+	BOOST_REQUIRE_EQUAL(actual->twoLevel, expected->twoLevel);
+
+	BOOST_FAIL("Not implemented");
+}
+
+void MapComparer::compareOptions()
+{
+	BOOST_FAIL("Not implemented");
+}
+
+void MapComparer::compareObjects()
+{
+	BOOST_FAIL("Not implemented");
+}
+
+void MapComparer::compareTerrain()
+{
+	BOOST_FAIL("Not implemented");
+}
+
+void MapComparer::compare()
+{
+	BOOST_REQUIRE_NE((void *) actual, (void *) expected); //should not point to the same object
+	BOOST_REQUIRE_MESSAGE(actual != nullptr, "Actual map is not defined");
+	BOOST_REQUIRE_MESSAGE(actual != nullptr, "Expected map is not defined");
+
+	compareHeader();
+	compareObjects();
+	compareOptions();
+	compareTerrain();
+}
+
+void MapComparer::operator() (const std::unique_ptr<CMap>& actual, const std::unique_ptr<CMap>&  expected)
 {
-	BOOST_ERROR(" MapComparer::operator() not implemented");
-	return false;
+	this->actual = actual.get();
+	this->expected = expected.get();
+	compare();
 }

+ 11 - 1
test/MapComparer.h

@@ -14,7 +14,17 @@
 
 struct MapComparer
 {
-	bool operator() (const std::unique_ptr<CMap>& lhs, const std::unique_ptr<CMap>& rhs);
+	const CMap * actual;
+	const CMap * expected;
+	
+	void compareHeader();
+	void compareOptions();
+	void compareObjects();
+	void compareTerrain();	
+	
+	void compare(); 
+	
+	void operator() (const std::unique_ptr<CMap>& actual, const std::unique_ptr<CMap>& expected);
 };