diff -r d8475431bbbb -r 8e85e6bbefdf src/test/dijkstra_test.cc --- a/src/test/dijkstra_test.cc Sat May 21 21:04:57 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,155 +0,0 @@ -/* -*- C++ -*- - * src/test/dijkstra_test.cc - Part of LEMON, a generic C++ optimization library - * - * Copyright (C) 2005 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 "test_tools.h" -#include -#include -#include -#include -#include -#include -using namespace lemon; - -const int PET_SIZE =5; - - -void check_Dijkstra_BinHeap_Compile() -{ - typedef int VType; - typedef concept::StaticGraph Graph; - - typedef Graph::Edge Edge; - typedef Graph::Node Node; - typedef Graph::EdgeIt EdgeIt; - typedef Graph::NodeIt NodeIt; - typedef concept::ReadMap LengthMap; - - typedef Dijkstra DType; - - Graph G; - Node n; - Edge e; - VType l; - bool b; - DType::DistMap d(G); - DType::PredMap p(G); - // DType::PredNodeMap pn(G); - LengthMap cap; - - DType dijkstra_test(G,cap); - - dijkstra_test.run(n); - - l = dijkstra_test.dist(n); - e = dijkstra_test.pred(n); - n = dijkstra_test.predNode(n); - d = dijkstra_test.distMap(); - p = dijkstra_test.predMap(); - // pn = dijkstra_test.predNodeMap(); - b = dijkstra_test.reached(n); - - DirPath pp(G); - dijkstra_test.getPath(pp,n); -} - -void check_Dijkstra_Function_Compile() -{ - typedef int VType; - typedef concept::StaticGraph Graph; - - typedef Graph::Edge Edge; - typedef Graph::Node Node; - typedef Graph::EdgeIt EdgeIt; - typedef Graph::NodeIt NodeIt; - typedef concept::ReadMap LengthMap; - - dijkstra(Graph(),LengthMap(),Node()).run(); - dijkstra(Graph(),LengthMap()).source(Node()).run(); - dijkstra(Graph(),LengthMap()) - .predMap(concept::WriteMap()) - .distMap(concept::WriteMap()) - .run(Node()); - -} - - -int main() -{ - - typedef SmartGraph Graph; - - typedef Graph::Edge Edge; - typedef Graph::Node Node; - typedef Graph::EdgeIt EdgeIt; - typedef Graph::NodeIt NodeIt; - typedef Graph::EdgeMap LengthMap; - - Graph G; - Node s, t; - LengthMap cap(G); - PetStruct ps = addPetersen(G,PET_SIZE); - - for(int i=0;i - dijkstra_test(G, cap); - dijkstra_test.run(s); - - check(dijkstra_test.dist(t)==13,"Dijkstra found a wrong path."); - - - DirPath p(G); - check(dijkstra_test.getPath(p,t),"getPath() failed to set the path."); - check(p.length()==4,"getPath() found a wrong path."); - - - for(EdgeIt e(G); e!=INVALID; ++e) { - Node u=G.source(e); - Node v=G.target(e); - check( !dijkstra_test.reached(u) || - (dijkstra_test.dist(v) - dijkstra_test.dist(u) <= cap[e]), - "dist(target)-dist(source)- edge_length= " - << dijkstra_test.dist(v) - dijkstra_test.dist(u) - - cap[e]); - } - - ///\bug This works only for integer lengths - for(NodeIt v(G); v!=INVALID; ++v){ - check(dijkstra_test.reached(v),"Each node should be reached."); - if ( dijkstra_test.pred(v)!=INVALID ) { - Edge e=dijkstra_test.pred(v); - Node u=G.source(e); - check(u==dijkstra_test.predNode(v),"Wrong tree."); - check(dijkstra_test.dist(v) - dijkstra_test.dist(u) == cap[e], - "Wrong distance! Difference: " - << std::abs(dijkstra_test.dist(v) - dijkstra_test.dist(u) - - cap[e])); - } - } - - - { - NullMap myPredMap; - dijkstra(G,cap).predMap(myPredMap).run(s); - } - return 0; -}