Magic triangle is READY.
8 #include <lemon/concept_check.h>
10 #include <lemon/smart_graph.h>
12 #include <lemon/graph_reader.h>
14 #include <lemon/bin_heap.h>
15 #include <lemon/fib_heap.h>
16 #include <lemon/radix_heap.h>
18 #include "test_tools.h"
20 #include "heap_test.h"
23 using namespace lemon;
25 template <typename Item, typename Prio, typename ItemIntMap>
29 template <typename _Heap>
37 ignore_unused_variable_warning(item);
38 ignore_unused_variable_warning(prio);
40 typedef typename _Heap::state_enum state_enum;
43 ignore_unused_variable_warning(state);
45 _Heap heap1 = _Heap(map);
47 ignore_unused_variable_warning(heap1);
49 heap.push(item, prio);
57 heap.decrease(item, prio);
58 heap.increase(item, prio);
63 state = heap.state(item);
65 state = _Heap::PRE_HEAP;
66 state = _Heap::IN_HEAP;
67 state = _Heap::POST_HEAP;
79 typedef IntIntMap ItemIntMap;
81 typedef ListGraph Graph;
83 typedef Graph::Edge Edge;
84 typedef Graph::Node Node;
85 typedef Graph::EdgeIt EdgeIt;
86 typedef Graph::NodeIt NodeIt;
87 typedef Graph::EdgeMap<int> LengthMap;
90 LengthMap length(graph);
93 /// \todo create own test graph
96 if( getenv("srcdir") )
97 f_name = std::string(getenv("srcdir"));
99 f_name += "/dijkstra_test.lgf";
101 std::ifstream input(f_name.c_str());
102 check(input, "Input file '" << f_name << "' not found.");
103 readGraph(input, graph, length, start);
106 std::cerr << "Checking Bin Heap" << std::endl;
108 typedef BinHeap<Item, Prio, ItemIntMap> IntHeap;
109 checkConcept<HeapConcept<Item, Prio, ItemIntMap>, IntHeap>();
110 heapSortTest<IntHeap>(100);
111 heapIncreaseTest<IntHeap>(100);
113 typedef FibHeap<Node, Prio, Graph::NodeMap<int> > NodeHeap;
114 checkConcept<HeapConcept<Node, Prio, Graph::NodeMap<int> >, NodeHeap>();
115 dijkstraHeapTest<Graph, LengthMap, NodeHeap>(graph, length, start);
118 std::cerr << "Checking Fib Heap" << std::endl;
120 typedef FibHeap<Item, Prio, ItemIntMap> IntHeap;
121 checkConcept<HeapConcept<Item, Prio, ItemIntMap>, IntHeap>();
122 heapSortTest<IntHeap>(100);
123 heapIncreaseTest<IntHeap>(100);
125 typedef FibHeap<Node, Prio, Graph::NodeMap<int> > NodeHeap;
126 checkConcept<HeapConcept<Node, Prio, Graph::NodeMap<int> >, NodeHeap>();
127 dijkstraHeapTest<Graph, LengthMap, NodeHeap>(graph, length, start);
130 std::cerr << "Checking Radix Heap" << std::endl;
132 typedef RadixHeap<Item, ItemIntMap> IntHeap;
133 checkConcept<HeapConcept<Item, Prio, ItemIntMap>, IntHeap>();
134 heapSortTest<IntHeap>(100);
135 heapIncreaseTest<IntHeap>(100);
137 typedef RadixHeap<Node, Graph::NodeMap<int> > NodeHeap;
138 checkConcept<HeapConcept<Node, Prio, Graph::NodeMap<int> >, NodeHeap>();
139 dijkstraHeapTest<Graph, LengthMap, NodeHeap>(graph, length, start);
142 std::cout << __FILE__ ": All tests passed.\n";