src/test/map_test.h
author marci
Tue, 16 Nov 2004 13:03:47 +0000
changeset 998 89969b303727
child 1041 9d503ce002db
permissions -rw-r--r--
ErasingFirstGraphWrapper
     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 utility to test map classes.
    28 
    29 namespace 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