Skip to content
Snippets Groups Projects
Commit 87b9cb3d authored by David Rosca's avatar David Rosca
Browse files

Graph test: Add GraphElementsTest

parent 7c3e7097
No related branches found
No related tags found
No related merge requests found
#include "GraphElementsTest.h"
#include "sax/SaxParseInterface.h"
#include "sax/SaxComposeInterface.h"
#include "factory/XmlDataFactory.hpp"
#include "factory/StringDataFactory.hpp"
CPPUNIT_TEST_SUITE_REGISTRATION(GraphElementsTest);
void GraphElementsTest::testCopyConstruct()
{
// Common
graph::Node n1("n1");
graph::Node n2("n2");
graph::Node n3("n3");
// DirectedEdge
graph::DirectedEdge de1(n1, n2);
graph::DirectedEdge de2(n1, n3);
graph::DirectedEdge de1_2(de1);
CPPUNIT_ASSERT(de1_2 == de1);
graph::DirectedEdge de2_2(de2);
CPPUNIT_ASSERT(de2_2 == de2);
graph::DirectedEdge de1_3(std::move(de1));
CPPUNIT_ASSERT(de1_3 == de1_2);
graph::DirectedEdge de2_3(std::move(de2));
CPPUNIT_ASSERT(de2_3 == de2_2);
// UndirectedEdge
graph::UndirectedEdge ue1(n1, n2);
graph::UndirectedEdge ue2(n1, n3);
graph::UndirectedEdge ue1_2(ue1);
CPPUNIT_ASSERT(ue1_2 == ue1);
graph::UndirectedEdge ue2_2(ue2);
CPPUNIT_ASSERT(ue2_2 == ue2);
graph::UndirectedEdge ue1_3(std::move(ue1));
CPPUNIT_ASSERT(ue1_3 == ue1_2);
graph::UndirectedEdge ue2_3(std::move(ue2));
CPPUNIT_ASSERT(ue2_3 == ue2_2);
// Node
graph::Node n1_2(n1);
CPPUNIT_ASSERT(n1_2 == n1);
graph::Node n2_2(n2);
CPPUNIT_ASSERT(n2_2 == n2);
graph::Node n3_2(n3);
CPPUNIT_ASSERT(n3_2 == n3);
graph::Node n1_3(std::move(n1));
CPPUNIT_ASSERT(n1_3 == n1_2);
graph::Node n2_3(std::move(n2));
CPPUNIT_ASSERT(n2_3 == n2_2);
graph::Node n3_3(std::move(n3));
CPPUNIT_ASSERT(n3_3 == n3_2);
}
void GraphElementsTest::testEqual()
{
// Node
graph::Node n1("n1");
graph::Node n1_("n1");
graph::Node n2("n2");
graph::Node n2_("n2");
graph::Node n3("n3");
graph::Node n3_("n3");
CPPUNIT_ASSERT(n1 == n1);
CPPUNIT_ASSERT(n1 == n1_);
CPPUNIT_ASSERT(n2 == n2);
CPPUNIT_ASSERT(n2 == n2_);
CPPUNIT_ASSERT(n3 == n3);
CPPUNIT_ASSERT(n3 == n3_);
CPPUNIT_ASSERT(n1 != n2);
CPPUNIT_ASSERT(n1 != n3);
CPPUNIT_ASSERT(n2 != n1);
CPPUNIT_ASSERT(n3 != n1);
CPPUNIT_ASSERT_EQUAL(0, std::compare<graph::Node>()(n1, n1_));
CPPUNIT_ASSERT_EQUAL(0, std::compare<graph::Node>()(n1, n1));
CPPUNIT_ASSERT(std::compare<graph::Node>()(n1, n2) != 0);
CPPUNIT_ASSERT(std::compare<graph::Node>()(n1, n3) != 0);
CPPUNIT_ASSERT(std::compare<graph::Node>()(n1, n3_) != 0);
// DirectedEdge
graph::DirectedEdge de1(n1, n2);
graph::DirectedEdge de1_(n1, n2);
graph::DirectedEdge de2(n1, n3);
graph::DirectedEdge de2_(n1, n3);
graph::DirectedEdge de3(n1, n3, "a");
graph::DirectedEdge de3_(n1, n3, "a");
CPPUNIT_ASSERT(de1 == de1);
CPPUNIT_ASSERT(de1 == de1_);
CPPUNIT_ASSERT(de2 == de2);
CPPUNIT_ASSERT(de2 == de2_);
CPPUNIT_ASSERT(de3 == de3);
CPPUNIT_ASSERT(de3 == de3_);
CPPUNIT_ASSERT(de1 != de2);
CPPUNIT_ASSERT(de1 != de3);
CPPUNIT_ASSERT(de2 != de1);
CPPUNIT_ASSERT(de3 != de1);
CPPUNIT_ASSERT_EQUAL(0, std::compare<graph::DirectedEdge>()(de1, de1_));
CPPUNIT_ASSERT_EQUAL(0, std::compare<graph::DirectedEdge>()(de1, de1));
CPPUNIT_ASSERT(std::compare<graph::DirectedEdge>()(de1, de2) != 0);
CPPUNIT_ASSERT(std::compare<graph::DirectedEdge>()(de1, de3) != 0);
CPPUNIT_ASSERT(std::compare<graph::DirectedEdge>()(de1, de3_) != 0);
// UndirectedEdge
graph::UndirectedEdge ue1(n1, n2);
graph::UndirectedEdge ue1_(n1, n2);
graph::UndirectedEdge ue1_s(n2, n1);
graph::UndirectedEdge ue2(n1, n3);
graph::UndirectedEdge ue2_(n1, n3);
graph::UndirectedEdge ue3(n1, n3, "a");
graph::UndirectedEdge ue3_(n1, n3, "a");
CPPUNIT_ASSERT(ue1 == ue1);
CPPUNIT_ASSERT(ue1 == ue1_);
CPPUNIT_ASSERT(ue1 == ue1_s);
CPPUNIT_ASSERT(ue1_ == ue1_s);
CPPUNIT_ASSERT(ue2 == ue2);
CPPUNIT_ASSERT(ue2 == ue2_);
CPPUNIT_ASSERT(ue3 == ue3);
CPPUNIT_ASSERT(ue3 == ue3_);
CPPUNIT_ASSERT(ue1 != ue2);
CPPUNIT_ASSERT(ue1 != ue3);
CPPUNIT_ASSERT(ue2 != ue1);
CPPUNIT_ASSERT(ue3 != ue1);
}
#ifndef GRAPH_ELEMENTS_TEST_H_
#define GRAPH_ELEMENTS_TEST_H_
#include <cppunit/extensions/HelperMacros.h>
#include "graph/directed/DirectedGraph.h"
#include "graph/undirected/UndirectedGraph.h"
class GraphElementsTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(GraphElementsTest);
CPPUNIT_TEST(testCopyConstruct);
CPPUNIT_TEST(testEqual);
CPPUNIT_TEST_SUITE_END();
public:
void testCopyConstruct();
void testEqual();
};
#endif // GRAPH_ELEMENTS_TEST_H_
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment