# source:lemon-0.x/test/graph_utils_test.h@2229:4dbb6dd2dd4b

Last change on this file since 2229:4dbb6dd2dd4b was 2229:4dbb6dd2dd4b, checked in by Balazs Dezso, 14 years ago

Mersenne Twister random number generator

The code is based on the official MT19937 implementation
It is fully rewritten:

File size: 2.5 KB
Line
1/* -*- C++ -*-
2 *
3 * This file is a part of LEMON, a generic C++ optimization library
4 *
6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 *
9 * Permission to use, modify and distribute this software is granted
10 * provided that this copyright notice appears in all copies. For
11 * precise terms see the accompanying LICENSE file.
12 *
13 * This software is provided "AS IS" with no warranty of any kind,
14 * express or implied, and with no claim as to its suitability for any
15 * purpose.
16 *
17 */
18
19#ifndef LEMON_TEST_GRAPH_UTILS_TEST_H
20#define LEMON_TEST_GRAPH_UTILS_TEST_H
21
22
23#include "test_tools.h"
24#include <cstdlib>
25#include <ctime>
26
27//! \ingroup misc
28//! \file
29//! \brief Test cases for graph utils.
30namespace lemon {
31
32  template <typename Graph>
33  void checkGraphCounters() {
34    const int num = 5;
35    Graph graph;
37    bidirGraph(graph);
38    check(countNodes(graph) == 2*num, "Wrong node number.");
39    check(countEdges(graph) == 6*num, "Wrong edge number.");
40    for (typename Graph::NodeIt it(graph); it != INVALID; ++it) {
41      check(countOutEdges(graph, it) == 3, "Wrong out degree number.");
42      check(countInEdges(graph, it) == 3, "Wrong in degree number.");
43    }
44  }
45
46  template <typename Graph>
47  void checkFindEdge() {
48    typedef typename Graph::Node Node;
49    typedef typename Graph::Edge Edge;
50    typedef typename Graph::NodeIt NodeIt;
51    typedef typename Graph::EdgeIt EdgeIt;
52    Graph graph;
53    for (int i = 0; i < 10; ++i) {
55    }
56    DescriptorMap<Graph, Node> nodes(graph);
57    typename DescriptorMap<Graph, Node>::InverseMap invNodes(nodes);
58    for (int i = 0; i < 100; ++i) {
59      int src = rnd.getInt(invNodes.size());
60      int trg = rnd.getInt(invNodes.size());
62    }
63    typename Graph::template EdgeMap<bool> found(graph, false);
64    DescriptorMap<Graph, Edge> edges(graph);
65    for (NodeIt src(graph); src != INVALID; ++src) {
66      for (NodeIt trg(graph); trg != INVALID; ++trg) {
67        for (ConEdgeIt<Graph> con(graph, src, trg); con != INVALID; ++con) {
68          check(graph.source(con) == src, "Wrong source.");
69          check(graph.target(con) == trg, "Wrong target.");
70          check(found[con] == false, "The edge found already.");
71          found[con] = true;
72        }
73      }
74    }
75    for (EdgeIt it(graph); it != INVALID; ++it) {