/* -*- C++ -*-
 * src/test/graph_utils_test.h - Part of LEMON, a generic C++ optimization library
 *
 * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
 * (Egervary Combinatorial Optimization Research Group, EGRES).
 *
 * Permission to use, modify and distribute this software is granted
 * provided that this copyright notice appears in all copies. For
 * precise terms see the accompanying LICENSE file.
 *
 * This software is provided "AS IS" with no warranty of any kind,
 * express or implied, and with no claim as to its suitability for any
 * purpose.
 *
 */
#ifndef LEMON_TEST_GRAPH_UTILS_TEST_H
#define LEMON_TEST_GRAPH_UTILS_TEST_H


#include "test_tools.h"

//! \ingroup misc
//! \file
//! \brief Test cases for graph utils.
namespace lemon {
  
  template <typename Graph>
  void checkGraphCounters() {
    const int num = 5;
    Graph graph;
    addPetersen(graph, num);
    bidirGraph(graph);
    check(countNodes(graph) == 2*num, "Wrong node number.");
    check(countEdges(graph) == 6*num, "Wrong edge number.");    
    for (typename Graph::NodeIt it(graph); it != INVALID; ++it) {
      check(countOutEdges(graph, it) == 3, "Wrong out degree number.");
      check(countInEdges(graph, it) == 3, "Wrong in degree number.");
    }
  }
  
} //namespace lemon


#endif
