src/work/marci/graph_wrapper_test.cc
author marci
Thu, 16 Sep 2004 13:54:46 +0000
changeset 865 2f3f87afb1d2
parent 849 cc3867a7d380
child 870 9bde6cd8e3da
permissions -rw-r--r--
Sorry, the name chosen was a mistake.
     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 }