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