diff -r 9bd0d6e0c279 -r c1acf0018c0a test/map_test.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/map_test.h Sun Jan 20 20:43:48 2008 +0100 @@ -0,0 +1,149 @@ +/* -*- C++ -*- + * + * This file is a part of LEMON, a generic C++ optimization library + * + * Copyright (C) 2003-2007 + * 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. + * + */ + +#ifndef LEMON_TEST_MAP_TEST_H +#define LEMON_TEST_MAP_TEST_H + + +#include +#include + +#include "test_tools.h" + + +//! \ingroup misc +//! \file +//! \brief Some utilities to test map classes. + +namespace lemon { + + + + template + void checkGraphNodeMap() { + Graph graph; + const int num = 16; + + typedef typename Graph::Node Node; + + std::vector nodes; + for (int i = 0; i < num; ++i) { + nodes.push_back(graph.addNode()); + } + typedef typename Graph::template NodeMap IntNodeMap; + IntNodeMap map(graph, 42); + for (int i = 0; i < int(nodes.size()); ++i) { + check(map[nodes[i]] == 42, "Wrong map constructor."); + } + for (int i = 0; i < num; ++i) { + nodes.push_back(graph.addNode()); + map[nodes.back()] = 23; + } + map = constMap(12); + for (int i = 0; i < int(nodes.size()); ++i) { + check(map[nodes[i]] == 12, "Wrong map constructor."); + } + graph.clear(); + nodes.clear(); + } + + template + void checkGraphArcMap() { + Graph graph; + const int num = 16; + + typedef typename Graph::Node Node; + typedef typename Graph::Arc Arc; + + std::vector nodes; + for (int i = 0; i < num; ++i) { + nodes.push_back(graph.addNode()); + } + + std::vector edges; + for (int i = 0; i < num; ++i) { + for (int j = 0; j < i; ++j) { + edges.push_back(graph.addArc(nodes[i], nodes[j])); + } + } + + typedef typename Graph::template ArcMap IntArcMap; + IntArcMap map(graph, 42); + + for (int i = 0; i < int(edges.size()); ++i) { + check(map[edges[i]] == 42, "Wrong map constructor."); + } + + for (int i = 0; i < num; ++i) { + for (int j = i + 1; j < num; ++j) { + edges.push_back(graph.addArc(nodes[i], nodes[j])); + map[edges.back()] = 23; + } + } + map = constMap(12); + for (int i = 0; i < int(edges.size()); ++i) { + check(map[edges[i]] == 12, "Wrong map constructor."); + } + graph.clear(); + edges.clear(); + } + + template + void checkGraphEdgeMap() { + Graph graph; + const int num = 16; + + typedef typename Graph::Node Node; + typedef typename Graph::Edge Edge; + + std::vector nodes; + for (int i = 0; i < num; ++i) { + nodes.push_back(graph.addNode()); + } + + std::vector edges; + for (int i = 0; i < num; ++i) { + for (int j = 0; j < i; ++j) { + edges.push_back(graph.addEdge(nodes[i], nodes[j])); + } + } + + typedef typename Graph::template EdgeMap IntEdgeMap; + IntEdgeMap map(graph, 42); + + for (int i = 0; i < int(edges.size()); ++i) { + check(map[edges[i]] == 42, "Wrong map constructor."); + } + + for (int i = 0; i < num; ++i) { + for (int j = i + 1; j < num; ++j) { + edges.push_back(graph.addEdge(nodes[i], nodes[j])); + map[edges.back()] = 23; + } + } + map = constMap(12); + for (int i = 0; i < int(edges.size()); ++i) { + check(map[edges[i]] == 12, "Wrong map constructor."); + } + graph.clear(); + edges.clear(); + } + +} + +#endif