deba@57: /* -*- C++ -*- deba@57: * deba@57: * This file is a part of LEMON, a generic C++ optimization library deba@57: * alpar@107: * Copyright (C) 2003-2008 deba@57: * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport deba@57: * (Egervary Research Group on Combinatorial Optimization, EGRES). deba@57: * deba@57: * Permission to use, modify and distribute this software is granted deba@57: * provided that this copyright notice appears in all copies. For deba@57: * precise terms see the accompanying LICENSE file. deba@57: * deba@57: * This software is provided "AS IS" with no warranty of any kind, deba@57: * express or implied, and with no claim as to its suitability for any deba@57: * purpose. deba@57: * deba@57: */ deba@57: deba@57: #ifndef LEMON_TEST_MAP_TEST_H deba@57: #define LEMON_TEST_MAP_TEST_H deba@57: deba@57: deba@57: #include deba@57: #include deba@57: deba@57: #include "test_tools.h" deba@57: deba@57: deba@57: //! \ingroup misc deba@57: //! \file deba@57: //! \brief Some utilities to test map classes. deba@57: deba@57: namespace lemon { deba@57: deba@57: deba@57: deba@57: template deba@57: void checkGraphNodeMap() { deba@57: Graph graph; deba@57: const int num = 16; deba@57: deba@57: typedef typename Graph::Node Node; deba@57: deba@57: std::vector nodes; deba@57: for (int i = 0; i < num; ++i) { deba@57: nodes.push_back(graph.addNode()); deba@57: } deba@57: typedef typename Graph::template NodeMap IntNodeMap; deba@57: IntNodeMap map(graph, 42); deba@57: for (int i = 0; i < int(nodes.size()); ++i) { deba@57: check(map[nodes[i]] == 42, "Wrong map constructor."); deba@57: } deba@57: for (int i = 0; i < num; ++i) { deba@57: nodes.push_back(graph.addNode()); deba@57: map[nodes.back()] = 23; deba@57: } deba@57: map = constMap(12); deba@57: for (int i = 0; i < int(nodes.size()); ++i) { deba@57: check(map[nodes[i]] == 12, "Wrong map constructor."); deba@57: } deba@57: graph.clear(); deba@57: nodes.clear(); deba@57: } deba@57: deba@57: template deba@57: void checkGraphArcMap() { deba@57: Graph graph; deba@57: const int num = 16; deba@57: deba@57: typedef typename Graph::Node Node; deba@57: typedef typename Graph::Arc Arc; deba@57: deba@57: std::vector nodes; deba@57: for (int i = 0; i < num; ++i) { deba@57: nodes.push_back(graph.addNode()); deba@57: } deba@57: deba@57: std::vector edges; deba@57: for (int i = 0; i < num; ++i) { deba@57: for (int j = 0; j < i; ++j) { deba@57: edges.push_back(graph.addArc(nodes[i], nodes[j])); deba@57: } deba@57: } deba@57: deba@57: typedef typename Graph::template ArcMap IntArcMap; deba@57: IntArcMap map(graph, 42); deba@57: deba@57: for (int i = 0; i < int(edges.size()); ++i) { deba@57: check(map[edges[i]] == 42, "Wrong map constructor."); deba@57: } deba@57: deba@57: for (int i = 0; i < num; ++i) { deba@57: for (int j = i + 1; j < num; ++j) { deba@57: edges.push_back(graph.addArc(nodes[i], nodes[j])); deba@57: map[edges.back()] = 23; deba@57: } deba@57: } deba@57: map = constMap(12); deba@57: for (int i = 0; i < int(edges.size()); ++i) { deba@57: check(map[edges[i]] == 12, "Wrong map constructor."); deba@57: } deba@57: graph.clear(); deba@57: edges.clear(); deba@57: } deba@57: deba@57: template deba@57: void checkGraphEdgeMap() { deba@57: Graph graph; deba@57: const int num = 16; deba@57: deba@57: typedef typename Graph::Node Node; deba@57: typedef typename Graph::Edge Edge; deba@57: deba@57: std::vector nodes; deba@57: for (int i = 0; i < num; ++i) { deba@57: nodes.push_back(graph.addNode()); deba@57: } deba@57: deba@57: std::vector edges; deba@57: for (int i = 0; i < num; ++i) { deba@57: for (int j = 0; j < i; ++j) { deba@57: edges.push_back(graph.addEdge(nodes[i], nodes[j])); deba@57: } deba@57: } deba@57: deba@57: typedef typename Graph::template EdgeMap IntEdgeMap; deba@57: IntEdgeMap map(graph, 42); deba@57: deba@57: for (int i = 0; i < int(edges.size()); ++i) { deba@57: check(map[edges[i]] == 42, "Wrong map constructor."); deba@57: } deba@57: deba@57: for (int i = 0; i < num; ++i) { deba@57: for (int j = i + 1; j < num; ++j) { deba@57: edges.push_back(graph.addEdge(nodes[i], nodes[j])); deba@57: map[edges.back()] = 23; deba@57: } deba@57: } deba@57: map = constMap(12); deba@57: for (int i = 0; i < int(edges.size()); ++i) { deba@57: check(map[edges[i]] == 12, "Wrong map constructor."); deba@57: } deba@57: graph.clear(); deba@57: edges.clear(); deba@57: } deba@57: deba@57: } deba@57: deba@57: #endif