COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/test/map_test.h @ 1041:9d503ce002db

Last change on this file since 1041:9d503ce002db was 1041:9d503ce002db, checked in by Alpar Juttner, 19 years ago
  • Several convenience maps added to maps.h
  • Improvements in doc
File size: 2.3 KB
Line 
1/* -*- C++ -*-
2 * src/test/map_test.h - Part of LEMON, a generic C++ optimization library
3 *
4 * Copyright (C) 2004 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
5 * (Egervary Combinatorial Optimization Research Group, EGRES).
6 *
7 * Permission to use, modify and distribute this software is granted
8 * provided that this copyright notice appears in all copies. For
9 * precise terms see the accompanying LICENSE file.
10 *
11 * This software is provided "AS IS" with no warranty of any kind,
12 * express or implied, and with no claim as to its suitability for any
13 * purpose.
14 *
15 */
16#ifndef LEMON_TEST_MAP_TEST_H
17#define LEMON_TEST_MAP_TEST_H
18
19
20#include <vector>
21
22#include "test_tools.h"
23
24
25//! \ingroup misc
26//! \file
27//! \brief Some utilities to test map classes.
28
29namespace lemon {
30
31
32  template <typename Graph>
33  void checkGraphNodeMap() {
34    Graph graph;
35    const int num = 16;
36   
37    typedef typename Graph::Node Node;
38
39    std::vector<Node> nodes;
40    for (int i = 0; i < num; ++i) {
41      nodes.push_back(graph.addNode());     
42    }
43    typedef typename Graph::template NodeMap<int> IntNodeMap;
44    IntNodeMap map(graph, 42);
45    for (int i = 0; i < (int)nodes.size(); ++i) {
46      check(map[nodes[i]] == 42, "Wrong map constructor.");     
47    }
48    for (int i = 0; i < num; ++i) {
49      nodes.push_back(graph.addNode());
50      map[nodes.back()] = 23;
51    }
52    graph.clear();
53    nodes.clear();
54  }
55
56  template <typename Graph>
57  void checkGraphEdgeMap() {
58    Graph graph;
59    const int num = 16;
60   
61    typedef typename Graph::Node Node;
62    typedef typename Graph::Edge Edge;
63   
64    std::vector<Node> nodes;
65    for (int i = 0; i < num; ++i) {
66      nodes.push_back(graph.addNode());
67    }
68   
69    std::vector<Edge> edges;
70    for (int i = 0; i < num; ++i) {
71      for (int j = 0; j < i; ++j) {
72        edges.push_back(graph.addEdge(nodes[i], nodes[j]));
73      }
74    }
75   
76    typedef typename Graph::template EdgeMap<int> IntEdgeMap;
77    IntEdgeMap map(graph, 42);
78   
79    for (int i = 0; i < (int)edges.size(); ++i) {
80      check(map[edges[i]] == 42, "Wrong map constructor.");     
81    }
82   
83    for (int i = 0; i < num; ++i) {
84      for (int j = i + 1; j < num; ++j) {
85        edges.push_back(graph.addEdge(nodes[i], nodes[j]));
86        map[edges.back()] = 23;
87      }
88    }
89    graph.clear();
90    edges.clear();   
91  }
92
93}
94
95#endif
Note: See TracBrowser for help on using the repository browser.