test/graph_adaptor_test.cc
changeset 431 4b6112235fad
parent 430 05357da973ce
child 432 76287c8caa26
equal deleted inserted replaced
0:372aa3eb4d50 1:92c20458ee6d
    35 #include"test/test_tools.h"
    35 #include"test/test_tools.h"
    36 #include"test/graph_test.h"
    36 #include"test/graph_test.h"
    37 
    37 
    38 using namespace lemon;
    38 using namespace lemon;
    39 
    39 
    40 void checkDigraphAdaptor() {
       
    41   checkConcept<concepts::Digraph, DigraphAdaptor<concepts::Digraph> >();
       
    42 
       
    43   typedef ListDigraph Digraph;
       
    44   typedef DigraphAdaptor<Digraph> Adaptor;
       
    45 
       
    46   Digraph digraph;
       
    47   Adaptor adaptor(digraph);
       
    48 
       
    49   Digraph::Node n1 = digraph.addNode();
       
    50   Digraph::Node n2 = digraph.addNode();
       
    51   Digraph::Node n3 = digraph.addNode();
       
    52 
       
    53   Digraph::Arc a1 = digraph.addArc(n1, n2);
       
    54   Digraph::Arc a2 = digraph.addArc(n1, n3);
       
    55   Digraph::Arc a3 = digraph.addArc(n2, n3);
       
    56   
       
    57   checkGraphNodeList(adaptor, 3);
       
    58   checkGraphArcList(adaptor, 3);
       
    59   checkGraphConArcList(adaptor, 3);
       
    60 
       
    61   checkGraphOutArcList(adaptor, n1, 2);
       
    62   checkGraphOutArcList(adaptor, n2, 1);
       
    63   checkGraphOutArcList(adaptor, n3, 0);
       
    64 
       
    65   checkGraphInArcList(adaptor, n1, 0);
       
    66   checkGraphInArcList(adaptor, n2, 1);
       
    67   checkGraphInArcList(adaptor, n3, 2);
       
    68 
       
    69   checkNodeIds(adaptor);
       
    70   checkArcIds(adaptor);
       
    71 
       
    72   checkGraphNodeMap(adaptor);
       
    73   checkGraphArcMap(adaptor);
       
    74 }
       
    75 
       
    76 void checkRevDigraphAdaptor() {
    40 void checkRevDigraphAdaptor() {
    77   checkConcept<concepts::Digraph, RevDigraphAdaptor<concepts::Digraph> >();
    41   checkConcept<concepts::Digraph, RevDigraphAdaptor<concepts::Digraph> >();
    78 
    42 
    79   typedef ListDigraph Digraph;
    43   typedef ListDigraph Digraph;
    80   typedef RevDigraphAdaptor<Digraph> Adaptor;
    44   typedef RevDigraphAdaptor<Digraph> Adaptor;
   583       check(adaptor.target(a) == adaptor.outNode(on), "Wrong split");
   547       check(adaptor.target(a) == adaptor.outNode(on), "Wrong split");
   584     }
   548     }
   585   }
   549   }
   586 }
   550 }
   587 
   551 
   588 void checkGraphAdaptor() {
       
   589   checkConcept<concepts::Graph, GraphAdaptor<concepts::Graph> >();
       
   590 
       
   591   typedef ListGraph Graph;
       
   592   typedef GraphAdaptor<Graph> Adaptor;
       
   593 
       
   594   Graph graph;
       
   595   Adaptor adaptor(graph);
       
   596 
       
   597   Graph::Node n1 = graph.addNode();
       
   598   Graph::Node n2 = graph.addNode();
       
   599   Graph::Node n3 = graph.addNode();
       
   600   Graph::Node n4 = graph.addNode();
       
   601 
       
   602   Graph::Edge a1 = graph.addEdge(n1, n2);
       
   603   Graph::Edge a2 = graph.addEdge(n1, n3);
       
   604   Graph::Edge a3 = graph.addEdge(n2, n3);
       
   605   Graph::Edge a4 = graph.addEdge(n3, n4);
       
   606   
       
   607   checkGraphNodeList(adaptor, 4);
       
   608   checkGraphArcList(adaptor, 8);
       
   609   checkGraphEdgeList(adaptor, 4);
       
   610   checkGraphConArcList(adaptor, 8);
       
   611   checkGraphConEdgeList(adaptor, 4);
       
   612 
       
   613   checkGraphOutArcList(adaptor, n1, 2);
       
   614   checkGraphOutArcList(adaptor, n2, 2);
       
   615   checkGraphOutArcList(adaptor, n3, 3);
       
   616   checkGraphOutArcList(adaptor, n4, 1);
       
   617 
       
   618   checkGraphInArcList(adaptor, n1, 2);
       
   619   checkGraphInArcList(adaptor, n2, 2);
       
   620   checkGraphInArcList(adaptor, n3, 3);
       
   621   checkGraphInArcList(adaptor, n4, 1);
       
   622 
       
   623   checkGraphIncEdgeList(adaptor, n1, 2);
       
   624   checkGraphIncEdgeList(adaptor, n2, 2);
       
   625   checkGraphIncEdgeList(adaptor, n3, 3);
       
   626   checkGraphIncEdgeList(adaptor, n4, 1);
       
   627 
       
   628 
       
   629   checkNodeIds(adaptor);
       
   630   checkArcIds(adaptor);
       
   631   checkEdgeIds(adaptor);
       
   632 
       
   633   checkGraphNodeMap(adaptor);
       
   634   checkGraphArcMap(adaptor);
       
   635   checkGraphEdgeMap(adaptor);
       
   636 }
       
   637 
       
   638 void checkSubGraphAdaptor() {
   552 void checkSubGraphAdaptor() {
   639   checkConcept<concepts::Graph, 
   553   checkConcept<concepts::Graph, 
   640     SubGraphAdaptor<concepts::Graph, 
   554     SubGraphAdaptor<concepts::Graph, 
   641     concepts::Graph::NodeMap<bool>,
   555     concepts::Graph::NodeMap<bool>,
   642     concepts::Graph::EdgeMap<bool> > >();
   556     concepts::Graph::EdgeMap<bool> > >();
  1051 }
   965 }
  1052 
   966 
  1053 
   967 
  1054 int main(int, const char **) {
   968 int main(int, const char **) {
  1055 
   969 
  1056   checkDigraphAdaptor();
       
  1057   checkRevDigraphAdaptor();
   970   checkRevDigraphAdaptor();
  1058   checkSubDigraphAdaptor();
   971   checkSubDigraphAdaptor();
  1059   checkNodeSubDigraphAdaptor();
   972   checkNodeSubDigraphAdaptor();
  1060   checkArcSubDigraphAdaptor();
   973   checkArcSubDigraphAdaptor();
  1061   checkUndirDigraphAdaptor();
   974   checkUndirDigraphAdaptor();
  1062   checkResDigraphAdaptor();
   975   checkResDigraphAdaptor();
  1063   checkSplitDigraphAdaptor();
   976   checkSplitDigraphAdaptor();
  1064 
   977 
  1065   checkGraphAdaptor();
       
  1066   checkSubGraphAdaptor();
   978   checkSubGraphAdaptor();
  1067   checkNodeSubGraphAdaptor();
   979   checkNodeSubGraphAdaptor();
  1068   checkEdgeSubGraphAdaptor();
   980   checkEdgeSubGraphAdaptor();
  1069   checkDirGraphAdaptor();
   981   checkDirGraphAdaptor();
  1070 
   982