COIN-OR::LEMON - Graph Library

source: lemon-0.x/test/map_test.h @ 1680:4f8b9cee576b

Last change on this file since 1680:4f8b9cee576b was 1675:fa89ffb27a6d, checked in by Balazs Dezso, 15 years ago

Redesign of the map adaptors.
/smart reference handling only used by functions/

Better handling of the function objects and functions.


\todo May we use operators instead of the addMap, subMap...?

File size: 2.6 KB
Line 
1/* -*- C++ -*-
2 * test/map_test.h - Part of LEMON, a generic C++ optimization library
3 *
4 * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
5 * (Egervary Research Group on Combinatorial Optimization, 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    map = constMap<Node>(12);
53    for (int i = 0; i < (int)nodes.size(); ++i) {
54      check(map[nodes[i]] == 12, "Wrong map constructor.");     
55    }   
56    graph.clear();
57    nodes.clear();
58  }
59
60  template <typename Graph>
61  void checkGraphEdgeMap() {
62    Graph graph;
63    const int num = 16;
64   
65    typedef typename Graph::Node Node;
66    typedef typename Graph::Edge Edge;
67   
68    std::vector<Node> nodes;
69    for (int i = 0; i < num; ++i) {
70      nodes.push_back(graph.addNode());
71    }
72   
73    std::vector<Edge> edges;
74    for (int i = 0; i < num; ++i) {
75      for (int j = 0; j < i; ++j) {
76        edges.push_back(graph.addEdge(nodes[i], nodes[j]));
77      }
78    }
79   
80    typedef typename Graph::template EdgeMap<int> IntEdgeMap;
81    IntEdgeMap map(graph, 42);
82   
83    for (int i = 0; i < (int)edges.size(); ++i) {
84      check(map[edges[i]] == 42, "Wrong map constructor.");     
85    }
86   
87    for (int i = 0; i < num; ++i) {
88      for (int j = i + 1; j < num; ++j) {
89        edges.push_back(graph.addEdge(nodes[i], nodes[j]));
90        map[edges.back()] = 23;
91      }
92    }
93    map = constMap<Edge>(12);
94    for (int i = 0; i < (int)edges.size(); ++i) {
95      check(map[edges[i]] == 12, "Wrong map constructor.");     
96    }   
97    graph.clear();
98    edges.clear();   
99  }
100
101}
102
103#endif
Note: See TracBrowser for help on using the repository browser.