From 2fb72c725c7f0b6c3e3590b516554ca5d8cd5c4d Mon Sep 17 00:00:00 2001
From: David Rosca <roscadav@fit.cvut.cz>
Date: Mon, 2 Mar 2015 20:29:37 +0100
Subject: [PATCH] Graphs: Implement testEqual, testXmlParser and
 testStringParser

---
 alib2data/test-src/graph/GraphTest.cpp | 106 +++++++++++++++++++++++++
 1 file changed, 106 insertions(+)

diff --git a/alib2data/test-src/graph/GraphTest.cpp b/alib2data/test-src/graph/GraphTest.cpp
index 8eb68fe0fa..b0eb3c1f8b 100644
--- a/alib2data/test-src/graph/GraphTest.cpp
+++ b/alib2data/test-src/graph/GraphTest.cpp
@@ -57,13 +57,119 @@ void GraphTest::testCopyConstruct()
 
 void GraphTest::testEqual()
 {
+	// Common
+	graph::Node n1("n1");
+	graph::Node n2("n2");
+	graph::Node n3("n3");
+
+	// Directed
+	graph::DirectedGraph dg(graph::REPRESENTATION::ADJACENCY_LIST);
+	dg.addNode(n1);
+	dg.addNode(n2);
+	dg.addNode(n3);
+	dg.addEdge(graph::DirectedEdge(n1, n2));
+	dg.addEdge(graph::DirectedEdge(n1, n3));
+
+	graph::DirectedGraph dg2(graph::REPRESENTATION::ADJACENCY_LIST);
+	dg2.addNode(n1);
+	dg2.addNode(n2);
+	dg2.addEdge(graph::DirectedEdge(n1, n2));
+
+	CPPUNIT_ASSERT(dg != dg2);
+
+	dg2.addNode(n3);
+	CPPUNIT_ASSERT(dg != dg2);
+
+	dg2.addEdge(graph::DirectedEdge(n1, n3));
+	CPPUNIT_ASSERT(dg == dg2);
+
+	// Undirected
+	graph::UndirectedGraph ug(graph::REPRESENTATION::ADJACENCY_LIST);
+	ug.addNode(n1);
+	ug.addNode(n2);
+	ug.addNode(n3);
+	ug.addEdge(graph::UndirectedEdge(n1, n2));
+	ug.addEdge(graph::UndirectedEdge(n1, n3));
+
+	graph::UndirectedGraph ug2(graph::REPRESENTATION::ADJACENCY_LIST);
+	ug2.addNode(n1);
+	ug2.addNode(n2);
+	ug2.addEdge(graph::UndirectedEdge(n1, n2));
+
+	CPPUNIT_ASSERT(ug != ug2);
+
+	ug2.addNode(n3);
+	CPPUNIT_ASSERT(ug != ug2);
+
+	ug2.addEdge(graph::UndirectedEdge(n1, n3));
+	CPPUNIT_ASSERT(ug == ug2);
 }
 
 void GraphTest::testXMLParser()
 {
+	// Common
+	graph::Node n1("n1");
+	graph::Node n2("n2");
+	graph::Node n3("n3");
+
+	// Directed
+	graph::DirectedGraph dg(graph::REPRESENTATION::ADJACENCY_LIST);
+	dg.addNode(n1);
+	dg.addNode(n2);
+	dg.addNode(n3);
+	dg.addEdge(graph::DirectedEdge(n1, n2));
+	dg.addEdge(graph::DirectedEdge(n1, n3));
+
+	graph::Graph dg1(dg);
+	std::string tmp = alib::XmlDataFactory::toString(dg1);
+	graph::Graph dg2 = alib::XmlDataFactory::fromString<graph::Graph>(tmp);
+	CPPUNIT_ASSERT(dg1 == dg2);
+
+	// Undirected
+	graph::UndirectedGraph ug(graph::REPRESENTATION::ADJACENCY_LIST);
+	ug.addNode(n1);
+	ug.addNode(n2);
+	ug.addNode(n3);
+	ug.addEdge(graph::UndirectedEdge(n1, n2));
+	ug.addEdge(graph::UndirectedEdge(n1, n3));
+
+	graph::Graph ug1(ug);
+	tmp = alib::XmlDataFactory::toString(ug1);
+	graph::Graph ug2 = alib::XmlDataFactory::fromString<graph::Graph>(tmp);
+	CPPUNIT_ASSERT(ug1 == ug2);
 }
 
 void GraphTest::testStringParser()
 {
+	// Common
+	graph::Node n1("n1");
+	graph::Node n2("n2");
+	graph::Node n3("n3");
+
+	// Directed
+	graph::DirectedGraph dg(graph::REPRESENTATION::ADJACENCY_LIST);
+	dg.addNode(n1);
+	dg.addNode(n2);
+	dg.addNode(n3);
+	dg.addEdge(graph::DirectedEdge(n1, n2));
+	dg.addEdge(graph::DirectedEdge(n1, n3));
+
+	graph::Graph dg1(dg);
+	std::string tmp = alib::StringDataFactory::toString(dg1);
+	graph::Graph dg2 = alib::StringDataFactory::fromString<graph::Graph>(tmp);
+	CPPUNIT_ASSERT(dg1 == dg2);
+
+	// Undirected
+	graph::UndirectedGraph ug(graph::REPRESENTATION::ADJACENCY_LIST);
+	ug.addNode(n1);
+	ug.addNode(n2);
+	ug.addNode(n3);
+	ug.addEdge(graph::UndirectedEdge(n1, n2));
+	ug.addEdge(graph::UndirectedEdge(n1, n3));
+
+	graph::Graph ug1(ug);
+	tmp = alib::StringDataFactory::toString(ug1);
+	graph::Graph ug2 = alib::StringDataFactory::fromString<graph::Graph>(tmp);
+	CPPUNIT_ASSERT(ug1 == ug2);
 }
 
-- 
GitLab