COIN-OR::LEMON - Graph Library

Changeset 377:a12eef1f82b2 in lemon for test


Ignore:
Timestamp:
11/06/08 15:16:37 (16 years ago)
Author:
Peter Kovacs <kpeter@…>
Branch:
default
Phase:
public
Message:

Rework hypercube graph implementation to be undirected (#57)

Location:
test
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • test/digraph_test.cc

    r376 r377  
    2121#include <lemon/smart_graph.h>
    2222#include <lemon/full_graph.h>
    23 #include <lemon/hypercube_graph.h>
    2423
    2524#include "test_tools.h"
     
    113112}
    114113
    115 void checkHypercubeDigraph(int dim) {
    116   DIGRAPH_TYPEDEFS(HypercubeDigraph);
    117 
    118   HypercubeDigraph G(dim);
    119   checkGraphNodeList(G, 1 << dim);
    120   checkGraphArcList(G, (1 << dim) * dim);
    121 
    122   Node n = G.nodeFromId(dim);
    123 
    124   checkGraphOutArcList(G, n, dim);
    125   for (OutArcIt a(G, n); a != INVALID; ++a)
    126     check(G.source(a) == n &&
    127           G.id(G.target(a)) == G.id(n) ^ (1 << G.dimension(a)),
    128           "Wrong arc");
    129 
    130   checkGraphInArcList(G, n, dim);
    131   for (InArcIt a(G, n); a != INVALID; ++a)
    132     check(G.target(a) == n &&
    133           G.id(G.source(a)) == G.id(n) ^ (1 << G.dimension(a)),
    134           "Wrong arc");
    135 
    136   checkGraphConArcList(G, (1 << dim) * dim);
    137 
    138   checkNodeIds(G);
    139   checkArcIds(G);
    140   checkGraphNodeMap(G);
    141   checkGraphArcMap(G);
    142 }
    143 
    144 
    145114void checkConcepts() {
    146115  { // Checking digraph components
     
    175144    checkConcept<Digraph, FullDigraph>();
    176145  }
    177   { // Checking HypercubeDigraph
    178     checkConcept<Digraph, HypercubeDigraph>();
    179   }
    180146}
    181147
     
    242208    checkFullDigraph(8);
    243209  }
    244   { // Checking HypercubeDigraph
    245     checkHypercubeDigraph(1);
    246     checkHypercubeDigraph(2);
    247     checkHypercubeDigraph(3);
    248     checkHypercubeDigraph(4);
    249   }
    250210}
    251211
  • test/graph_test.cc

    r368 r377  
    2222#include <lemon/full_graph.h>
    2323#include <lemon/grid_graph.h>
     24#include <lemon/hypercube_graph.h>
    2425
    2526#include "test_tools.h"
     
    105106
    106107  for (NodeIt n(G); n != INVALID; ++n) {
    107     checkGraphOutArcList(G, n, num - 1);   
    108     checkGraphInArcList(G, n, num - 1);   
    109     checkGraphIncEdgeList(G, n, num - 1);   
     108    checkGraphOutArcList(G, n, num - 1);
     109    checkGraphInArcList(G, n, num - 1);
     110    checkGraphIncEdgeList(G, n, num - 1);
    110111  }
    111112
     
    122123  checkGraphEdgeMap(G);
    123124
    124  
     125
    125126  for (int i = 0; i < G.nodeNum(); ++i) {
    126127    check(G.index(G(i)) == i, "Wrong index");
     
    178179    checkConcept<Graph, GridGraph>();
    179180  }
     181  { // Checking HypercubeGraph
     182    checkConcept<Graph, HypercubeGraph>();
     183  }
    180184}
    181185
     
    313317}
    314318
     319void checkHypercubeGraph(int dim) {
     320  GRAPH_TYPEDEFS(HypercubeGraph);
     321
     322  HypercubeGraph G(dim);
     323  checkGraphNodeList(G, 1 << dim);
     324  checkGraphEdgeList(G, dim * (1 << dim-1));
     325  checkGraphArcList(G, dim * (1 << dim));
     326
     327  Node n = G.nodeFromId(dim);
     328
     329  for (NodeIt n(G); n != INVALID; ++n) {
     330    checkGraphIncEdgeList(G, n, dim);
     331    for (IncEdgeIt e(G, n); e != INVALID; ++e) {
     332      check( (G.u(e) == n &&
     333              G.id(G.v(e)) == G.id(n) ^ (1 << G.dimension(e))) ||
     334             (G.v(e) == n &&
     335              G.id(G.u(e)) == G.id(n) ^ (1 << G.dimension(e))),
     336             "Wrong edge or wrong dimension");
     337    }
     338
     339    checkGraphOutArcList(G, n, dim);
     340    for (OutArcIt a(G, n); a != INVALID; ++a) {
     341      check(G.source(a) == n &&
     342            G.id(G.target(a)) == G.id(n) ^ (1 << G.dimension(a)),
     343            "Wrong arc or wrong dimension");
     344    }
     345
     346    checkGraphInArcList(G, n, dim);
     347    for (InArcIt a(G, n); a != INVALID; ++a) {
     348      check(G.target(a) == n &&
     349            G.id(G.source(a)) == G.id(n) ^ (1 << G.dimension(a)),
     350            "Wrong arc or wrong dimension");
     351    }
     352  }
     353
     354  checkGraphConArcList(G, (1 << dim) * dim);
     355  checkGraphConEdgeList(G, dim * (1 << dim-1));
     356
     357  checkArcDirections(G);
     358
     359  checkNodeIds(G);
     360  checkArcIds(G);
     361  checkEdgeIds(G);
     362  checkGraphNodeMap(G);
     363  checkGraphArcMap(G);
     364  checkGraphEdgeMap(G);
     365}
     366
    315367void checkGraphs() {
    316368  { // Checking ListGraph
     
    322374    checkGraphValidity<SmartGraph>();
    323375  }
    324   { // Checking FullGraph   
     376  { // Checking FullGraph
    325377    checkFullGraph(7);
    326378    checkFullGraph(8);
     
    333385    checkGridGraph(1, 1);
    334386  }
     387  { // Checking HypercubeGraph
     388    checkHypercubeGraph(1);
     389    checkHypercubeGraph(2);
     390    checkHypercubeGraph(3);
     391    checkHypercubeGraph(4);
     392  }
    335393}
    336394
Note: See TracChangeset for help on using the changeset viewer.