Changeset 1037:d3dcc49e6403 in lemon-main for test
- Timestamp:
- 02/28/13 17:13:14 (12 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
test/tsp_test.cc
r1035 r1037 62 62 63 63 // Checks tour validity 64 bool checkTour(const FullGraph &gr, const std::vector<FullGraph::Node> &p) { 64 template <typename Container> 65 bool checkTour(const FullGraph &gr, const Container &p) { 65 66 FullGraph::NodeMap<bool> used(gr, false); 66 67 67 int nodes = 0; 68 for (int i = 0; i < int(p.size()); ++i) { 69 if (used[p[i]]) return false; 70 used[p[i]] = true; 71 ++nodes; 68 int node_cnt = 0; 69 for (typename Container::const_iterator it = p.begin(); it != p.end(); ++it) { 70 FullGraph::Node node = *it; 71 if (used[node]) return false; 72 used[node] = true; 73 ++node_cnt; 72 74 } 73 75 74 return (node s== gr.nodeNum());76 return (node_cnt == gr.nodeNum()); 75 77 } 76 78 77 79 // Checks tour validity 78 bool checkTour (const FullGraph &gr, const Path<FullGraph> &p) {80 bool checkTourPath(const FullGraph &gr, const Path<FullGraph> &p) { 79 81 FullGraph::NodeMap<bool> used(gr, false); 80 82 … … 135 137 check(alg.tourCost() == esize, alg_name + ": Wrong total cost"); 136 138 137 std::list<Node> list; 138 std::vector<Node> vec; 139 alg.tourNodes(list); 140 alg.tourNodes(vec); 141 check(list.size() == nsize, alg_name + ": Wrong node sequence"); 142 check(vec.size() == nsize, alg_name + ": Wrong node sequence"); 143 check(alg.tourNodes().size() == nsize, alg_name + ": Wrong node sequence"); 144 check(checkTour(g, vec), alg_name + ": Wrong node sequence"); 145 check(checkCost(g, vec, constMap<Edge, int>(1), esize), 139 std::list<Node> list1(nsize), list2; 140 std::vector<Node> vec1(nsize), vec2; 141 alg.tourNodes(list1.begin()); 142 alg.tourNodes(vec1.begin()); 143 alg.tourNodes(std::front_inserter(list2)); 144 alg.tourNodes(std::back_inserter(vec2)); 145 check(checkTour(g, alg.tourNodes()), alg_name + ": Wrong node sequence"); 146 check(checkTour(g, list1), alg_name + ": Wrong node sequence"); 147 check(checkTour(g, vec1), alg_name + ": Wrong node sequence"); 148 check(checkTour(g, list2), alg_name + ": Wrong node sequence"); 149 check(checkTour(g, vec2), alg_name + ": Wrong node sequence"); 150 check(checkCost(g, vec1, constMap<Edge, int>(1), esize), 146 151 alg_name + ": Wrong tour cost"); 147 152 … … 149 154 alg.tour(path); 150 155 check(path.length() == esize, alg_name + ": Wrong tour"); 151 check(checkTour (g, path), alg_name + ": Wrong tour");156 check(checkTourPath(g, path), alg_name + ": Wrong tour"); 152 157 check(checkCost(g, path, constMap<Edge, int>(1), esize), 153 158 alg_name + ": Wrong tour cost"); … … 181 186 182 187 std::vector<Node> vec; 183 alg.tourNodes( vec);188 alg.tourNodes(std::back_inserter(vec)); 184 189 check(checkTour(g, vec), alg_name + ": Wrong node sequence"); 185 190 check(checkCost(g, vec, cost, alg.tourCost()), … … 188 193 SimplePath<FullGraph> path; 189 194 alg.tour(path); 190 check(checkTour (g, path), alg_name + ": Wrong tour");195 check(checkTourPath(g, path), alg_name + ": Wrong tour"); 191 196 check(checkCost(g, path, cost, alg.tourCost()), 192 197 alg_name + ": Wrong tour cost");
Note: See TracChangeset
for help on using the changeset viewer.