src/test/graph_wrapper_test.cc
changeset 849 cc3867a7d380
equal deleted inserted replaced
-1:000000000000 0:98c4dfd1cc2c
       
     1 #include<iostream>
       
     2 #include<hugo/smart_graph.h>
       
     3 #include<hugo/skeletons/graph.h>
       
     4 #include<hugo/list_graph.h>
       
     5 #include<hugo/full_graph.h>
       
     6 #include<hugo/graph_wrapper.h>
       
     7 
       
     8 #include"test_tools.h"
       
     9 #include"graph_test.h"
       
    10 
       
    11 /**
       
    12 \file
       
    13 This test makes consistency checks of list graph structures.
       
    14 
       
    15 G.addNode(), G.addEdge(), G.tail(), G.head()
       
    16 
       
    17 \todo Checks for empty graphs and isolated points.
       
    18 conversion.
       
    19 */
       
    20 
       
    21 using namespace hugo;
       
    22 
       
    23 template<class Graph> void bidirPetersen(Graph &G)
       
    24 {
       
    25   typedef typename Graph::Edge Edge;
       
    26   typedef typename Graph::EdgeIt EdgeIt;
       
    27   
       
    28   checkGraphEdgeList(G,15);
       
    29   
       
    30   std::vector<Edge> ee;
       
    31   
       
    32   for(EdgeIt e(G);e!=INVALID;++e) ee.push_back(e);
       
    33 
       
    34   for(typename std::vector<Edge>::iterator p=ee.begin();p!=ee.end();p++)
       
    35     G.addEdge(G.head(*p),G.tail(*p));
       
    36 }
       
    37 
       
    38 template<class Graph> void checkPetersen(Graph &G)
       
    39 {
       
    40   typedef typename Graph::Node Node;
       
    41 
       
    42   typedef typename Graph::EdgeIt EdgeIt;
       
    43   typedef typename Graph::NodeIt NodeIt;
       
    44 
       
    45   checkGraphNodeList(G,10);
       
    46   checkGraphEdgeList(G,30);
       
    47 
       
    48   for(NodeIt n(G);n!=INVALID;++n) {
       
    49     checkGraphInEdgeList(G,n,3);
       
    50     checkGraphOutEdgeList(G,n,3);
       
    51     ++n;
       
    52   }  
       
    53 }
       
    54 
       
    55 //Compile GraphSkeleton
       
    56 template void checkCompileStaticGraph<skeleton::StaticGraphSkeleton>
       
    57 (skeleton::StaticGraphSkeleton &);
       
    58 
       
    59 template void checkCompileGraph<skeleton::GraphSkeleton>
       
    60 (skeleton::GraphSkeleton &);
       
    61 
       
    62 template void checkCompileErasableGraph<skeleton::ErasableGraphSkeleton>
       
    63 (skeleton::ErasableGraphSkeleton &);
       
    64 
       
    65 //Compile SmartGraph
       
    66 typedef SmartGraph Graph;
       
    67 typedef GraphWrapper<Graph> GW;
       
    68 template void checkCompileStaticGraph<GW>(GW &);
       
    69 //template void checkCompileGraphFindEdge<SmartGraph>(SmartGraph &);
       
    70 
       
    71 //Compile SymSmartGraph
       
    72 typedef RevGraphWrapper<Graph> RevGW;
       
    73 template void checkCompileStaticGraph<RevGW>(RevGW &);
       
    74 //template void checkCompileGraphFindEdge<SymSmartGraph>(SymSmartGraph &);
       
    75 
       
    76 // //Compile ListGraph
       
    77 // template void checkCompileGraph<ListGraph>(ListGraph &);
       
    78 // template void checkCompileErasableGraph<ListGraph>(ListGraph &);
       
    79 // template void checkCompileGraphFindEdge<ListGraph>(ListGraph &);
       
    80 
       
    81 
       
    82 // //Compile SymListGraph
       
    83 // template void checkCompileGraph<SymListGraph>(SymListGraph &);
       
    84 // template void checkCompileErasableGraph<SymListGraph>(SymListGraph &);
       
    85 // template void checkCompileGraphFindEdge<SymListGraph>(SymListGraph &);
       
    86 
       
    87 // //Compile FullGraph
       
    88 // template void checkCompileStaticGraph<FullGraph>(FullGraph &);
       
    89 // template void checkCompileGraphFindEdge<FullGraph>(FullGraph &);
       
    90 
       
    91 // //Compile EdgeSet <ListGraph>
       
    92 // template void checkCompileGraph<EdgeSet <ListGraph> >(EdgeSet <ListGraph> &);
       
    93 // template void checkCompileGraphEraseEdge<EdgeSet <ListGraph> >
       
    94 // (EdgeSet <ListGraph> &);
       
    95 // template void checkCompileGraphFindEdge<EdgeSet <ListGraph> >
       
    96 // (EdgeSet <ListGraph> &);
       
    97 
       
    98 // //Compile EdgeSet <NodeSet>
       
    99 // template void checkCompileGraph<EdgeSet <NodeSet> >(EdgeSet <NodeSet> &);
       
   100 // template void checkCompileGraphEraseEdge<EdgeSet <NodeSet> >
       
   101 // (EdgeSet <NodeSet> &);
       
   102 // template void checkCompileGraphFindEdge<EdgeSet <NodeSet> >
       
   103 // (EdgeSet <NodeSet> &);
       
   104 
       
   105 
       
   106 int main() 
       
   107 {
       
   108  //  {
       
   109 //     SmartGraph G;
       
   110 //     addPetersen(G);
       
   111 //     bidirPetersen(G);
       
   112 //     checkPetersen(G);
       
   113 //   }
       
   114 //   {
       
   115 //     ListGraph G;
       
   116 //     addPetersen(G);
       
   117 //     bidirPetersen(G);
       
   118 //     checkPetersen(G);
       
   119 //   }
       
   120 //   {
       
   121 //     SymSmartGraph G;
       
   122 //     addPetersen(G);
       
   123 //     checkPetersen(G);
       
   124 //   }
       
   125 //   {
       
   126 //     SymListGraph G;
       
   127 //     addPetersen(G);
       
   128 //     checkPetersen(G);
       
   129 //   }
       
   130 
       
   131   ///\file
       
   132   ///\todo map tests.
       
   133   ///\todo copy constr tests.
       
   134 
       
   135   std::cout << __FILE__ ": All tests passed.\n";
       
   136 
       
   137   return 0;
       
   138 }