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