/* -*- mode: C++; indent-tabs-mode: nil; -*- * * This file is a part of LEMON, a generic C++ optimization library. * * Copyright (C) 2003-2008 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport * (Egervary Research Group on Combinatorial Optimization, EGRES). * * Permission to use, modify and distribute this software is granted * provided that this copyright notice appears in all copies. For * precise terms see the accompanying LICENSE file. * * This software is provided "AS IS" with no warranty of any kind, * express or implied, and with no claim as to its suitability for any * purpose. * */ #include #include #include //#include //#include #include "test_tools.h" #include "graph_test.h" #include "graph_maps_test.h" using namespace lemon; using namespace lemon::concepts; void check_concepts() { { // Checking digraph components checkConcept(); checkConcept, IDableDigraphComponent<> >(); checkConcept, IterableDigraphComponent<> >(); checkConcept, MappableDigraphComponent<> >(); } { // Checking skeleton digraph checkConcept(); } { // Checking ListDigraph checkConcept(); checkConcept, ListDigraph>(); checkConcept, ListDigraph>(); checkConcept, ListDigraph>(); checkConcept, ListDigraph>(); checkDigraphIterators(); } { // Checking SmartDigraph checkConcept(); checkConcept, SmartDigraph>(); checkConcept, SmartDigraph>(); checkConcept, SmartDigraph>(); checkDigraphIterators(); } // { // Checking FullDigraph // checkConcept(); // checkDigraphIterators(); // } // { // Checking HyperCubeDigraph // checkConcept(); // checkDigraphIterators(); // } } template void check_graph_validity() { TEMPLATE_DIGRAPH_TYPEDEFS(Digraph); Digraph g; Node n1 = g.addNode(), n2 = g.addNode(), n3 = g.addNode(); Arc e1 = g.addArc(n1, n2), e2 = g.addArc(n2, n3); check(g.valid(n1), "Wrong validity check"); check(g.valid(e1), "Wrong validity check"); check(!g.valid(g.nodeFromId(-1)), "Wrong validity check"); check(!g.valid(g.arcFromId(-1)), "Wrong validity check"); } template void check_graph_validity_erase() { TEMPLATE_DIGRAPH_TYPEDEFS(Digraph); Digraph g; Node n1 = g.addNode(), n2 = g.addNode(), n3 = g.addNode(); Arc e1 = g.addArc(n1, n2), e2 = g.addArc(n2, n3); check(g.valid(n1), "Wrong validity check"); check(g.valid(e1), "Wrong validity check"); g.erase(n1); check(!g.valid(n1), "Wrong validity check"); check(g.valid(n2), "Wrong validity check"); check(g.valid(n3), "Wrong validity check"); check(!g.valid(e1), "Wrong validity check"); check(g.valid(e2), "Wrong validity check"); check(!g.valid(g.nodeFromId(-1)), "Wrong validity check"); check(!g.valid(g.arcFromId(-1)), "Wrong validity check"); } void check_digraphs() { { // Checking ListDigraph checkDigraph(); checkGraphNodeMap(); checkGraphArcMap(); check_graph_validity_erase(); } { // Checking SmartDigraph checkDigraph(); checkGraphNodeMap(); checkGraphArcMap(); check_graph_validity(); } } int main() { check_concepts(); check_digraphs(); return 0; }