test/path_test.cc
changeset 2335 27aa03cd3121
parent 2260 4274224f8a7d
child 2391 14a343be7a5a
equal deleted inserted replaced
5:cb5c950d49df 6:e7ff43702f1f
    29 
    29 
    30 using namespace std;
    30 using namespace std;
    31 using namespace lemon;
    31 using namespace lemon;
    32 
    32 
    33 void check_concepts() {
    33 void check_concepts() {
    34   checkConcept<concepts::Path<concepts::Graph>, 
    34   checkConcept<concepts::Path<ListGraph>, concepts::Path<ListGraph> >();
    35     concepts::Path<concepts::Graph> >();
       
    36   checkConcept<concepts::Path<concepts::Graph>, 
       
    37     Path<concepts::Graph> >();
       
    38   checkConcept<concepts::Path<ListGraph>, Path<ListGraph> >();
    35   checkConcept<concepts::Path<ListGraph>, Path<ListGraph> >();
       
    36   checkConcept<concepts::Path<ListGraph>, SimplePath<ListGraph> >();
       
    37   checkConcept<concepts::Path<ListGraph>, StaticPath<ListGraph> >();
       
    38   checkConcept<concepts::Path<ListGraph>, ListPath<ListGraph> >();
    39 }
    39 }
    40 
    40 
    41 int main() {
    41 int main() {
    42   check_concepts();
    42   check_concepts();  
    43   
       
    44   ListGraph g;
       
    45   
       
    46   ListGraph::Node n1 = g.addNode();
       
    47   ListGraph::Node n2 = g.addNode();
       
    48   ListGraph::Node n3 = g.addNode();
       
    49   ListGraph::Node n4 = g.addNode();
       
    50   ListGraph::Node n5 = g.addNode();
       
    51  
       
    52   ListGraph::Edge e1 = g.addEdge(n1, n2);
       
    53   ListGraph::Edge e2 = g.addEdge(n2, n3);
       
    54   ListGraph::Edge e3 = g.addEdge(n3, n4);
       
    55   ListGraph::Edge e4 = g.addEdge(n4, n5);
       
    56   ListGraph::Edge e5 = g.addEdge(n5, n1);
       
    57 
       
    58   {
       
    59     Path<ListGraph> p(g);
       
    60 
       
    61     check(p.empty(), "Wrong Path");
       
    62     check(p.length() == 0, "Wrong Path");
       
    63     
       
    64     {
       
    65       Path<ListGraph>::Builder b(p);
       
    66       b.setStartNode(n3);
       
    67       b.commit();
       
    68     }
       
    69 
       
    70     check(!p.empty(), "Wrong Path");
       
    71     check(p.length() == 0, "Wrong Path");
       
    72     check(p.source() == n3, "Wrong Path");
       
    73     check(p.target() == n3, "Wrong Path");
       
    74 
       
    75     {
       
    76       Path<ListGraph>::Builder b(p);
       
    77       b.pushBack(e3);
       
    78       b.pushBack(e4);
       
    79       b.pushFront(e2);
       
    80       b.commit();
       
    81     }
       
    82 
       
    83     check(!p.empty(), "Wrong Path");
       
    84     check(p.length() == 3, "Wrong Path");
       
    85     check(p.source() == n2, "Wrong Path");
       
    86     check(p.target() == n5, "Wrong Path");
       
    87     
       
    88     {
       
    89       Path<ListGraph>::NodeIt it(p);
       
    90       check((ListGraph::Node)it == n2, "Wrong Path"); ++it;
       
    91       check((ListGraph::Node)it == n3, "Wrong Path"); ++it;
       
    92       check((ListGraph::Node)it == n4, "Wrong Path"); ++it;
       
    93       check((ListGraph::Node)it == n5, "Wrong Path"); ++it;
       
    94       check((ListGraph::Node)it == INVALID, "Wrong Path");
       
    95     }
       
    96 
       
    97     {
       
    98       Path<ListGraph>::EdgeIt it(p);
       
    99       check((ListGraph::Edge)it == e2, "Wrong Path"); ++it;
       
   100       check((ListGraph::Edge)it == e3, "Wrong Path"); ++it;
       
   101       check((ListGraph::Edge)it == e4, "Wrong Path"); ++it;
       
   102       check((ListGraph::Edge)it == INVALID, "Wrong Path");
       
   103     }
       
   104     
       
   105   }
       
   106   
       
   107   return 0;
    43   return 0;
   108 }
    44 }