test/max_clique_test.cc
changeset 918 8583fb74238c
parent 904 c279b19abc62
child 1092 dceba191c00d
     1.1 --- a/test/max_clique_test.cc	Tue Nov 16 07:46:01 2010 +0100
     1.2 +++ b/test/max_clique_test.cc	Sat Jan 08 15:52:07 2011 +0100
     1.3 @@ -58,7 +58,7 @@
     1.4  
     1.5  // Check with general graphs
     1.6  template <typename Param>
     1.7 -void checkMaxCliqueGeneral(int max_sel, Param rule) {
     1.8 +void checkMaxCliqueGeneral(Param rule) {
     1.9    typedef ListGraph GR;
    1.10    typedef GrossoLocatelliPullanMc<GR> McAlg;
    1.11    typedef McAlg::CliqueNodeIt CliqueIt;
    1.12 @@ -68,12 +68,13 @@
    1.13      GR g;
    1.14      GR::NodeMap<bool> map(g);
    1.15      McAlg mc(g);
    1.16 -    check(mc.run(max_sel, rule) == 0, "Wrong clique size");
    1.17 +    mc.iterationLimit(50);
    1.18 +    check(mc.run(rule) == McAlg::SIZE_LIMIT, "Wrong termination cause");
    1.19      check(mc.cliqueSize() == 0, "Wrong clique size");
    1.20      check(CliqueIt(mc) == INVALID, "Wrong CliqueNodeIt");
    1.21  
    1.22      GR::Node u = g.addNode();
    1.23 -    check(mc.run(max_sel, rule) == 1, "Wrong clique size");
    1.24 +    check(mc.run(rule) == McAlg::SIZE_LIMIT, "Wrong termination cause");
    1.25      check(mc.cliqueSize() == 1, "Wrong clique size");
    1.26      mc.cliqueMap(map);
    1.27      check(map[u], "Wrong clique map");
    1.28 @@ -82,7 +83,7 @@
    1.29            "Wrong CliqueNodeIt");
    1.30      
    1.31      GR::Node v = g.addNode();
    1.32 -    check(mc.run(max_sel, rule) == 1, "Wrong clique size");
    1.33 +    check(mc.run(rule) == McAlg::ITERATION_LIMIT, "Wrong termination cause");
    1.34      check(mc.cliqueSize() == 1, "Wrong clique size");
    1.35      mc.cliqueMap(map);
    1.36      check((map[u] && !map[v]) || (map[v] && !map[u]), "Wrong clique map");
    1.37 @@ -90,7 +91,7 @@
    1.38      check(it2 != INVALID && ++it2 == INVALID, "Wrong CliqueNodeIt");
    1.39  
    1.40      g.addEdge(u, v);
    1.41 -    check(mc.run(max_sel, rule) == 2, "Wrong clique size");
    1.42 +    check(mc.run(rule) == McAlg::SIZE_LIMIT, "Wrong termination cause");
    1.43      check(mc.cliqueSize() == 2, "Wrong clique size");
    1.44      mc.cliqueMap(map);
    1.45      check(map[u] && map[v], "Wrong clique map");
    1.46 @@ -110,7 +111,8 @@
    1.47        .run();
    1.48      
    1.49      McAlg mc(g);
    1.50 -    check(mc.run(max_sel, rule) == 4, "Wrong clique size");
    1.51 +    mc.iterationLimit(50);
    1.52 +    check(mc.run(rule) == McAlg::ITERATION_LIMIT, "Wrong termination cause");
    1.53      check(mc.cliqueSize() == 4, "Wrong clique size");
    1.54      mc.cliqueMap(map);
    1.55      for (GR::NodeIt n(g); n != INVALID; ++n) {
    1.56 @@ -127,7 +129,7 @@
    1.57  
    1.58  // Check with full graphs
    1.59  template <typename Param>
    1.60 -void checkMaxCliqueFullGraph(int max_sel, Param rule) {
    1.61 +void checkMaxCliqueFullGraph(Param rule) {
    1.62    typedef FullGraph GR;
    1.63    typedef GrossoLocatelliPullanMc<FullGraph> McAlg;
    1.64    typedef McAlg::CliqueNodeIt CliqueIt;
    1.65 @@ -136,7 +138,7 @@
    1.66      GR g(size);
    1.67      GR::NodeMap<bool> map(g);
    1.68      McAlg mc(g);
    1.69 -    check(mc.run(max_sel, rule) == size, "Wrong clique size");
    1.70 +    check(mc.run(rule) == McAlg::SIZE_LIMIT, "Wrong termination cause");
    1.71      check(mc.cliqueSize() == size, "Wrong clique size");
    1.72      mc.cliqueMap(map);
    1.73      for (GR::NodeIt n(g); n != INVALID; ++n) {
    1.74 @@ -150,27 +152,37 @@
    1.75  
    1.76  // Check with grid graphs
    1.77  template <typename Param>
    1.78 -void checkMaxCliqueGridGraph(int max_sel, Param rule) {
    1.79 +void checkMaxCliqueGridGraph(Param rule) {
    1.80    GridGraph g(5, 7);
    1.81    GridGraph::NodeMap<char> map(g);
    1.82    GrossoLocatelliPullanMc<GridGraph> mc(g);
    1.83 -  check(mc.run(max_sel, rule) == 2, "Wrong clique size");
    1.84 +  
    1.85 +  mc.iterationLimit(100);
    1.86 +  check(mc.run(rule) == mc.ITERATION_LIMIT, "Wrong termination cause");
    1.87 +  check(mc.cliqueSize() == 2, "Wrong clique size");
    1.88 +
    1.89 +  mc.stepLimit(100);
    1.90 +  check(mc.run(rule) == mc.STEP_LIMIT, "Wrong termination cause");
    1.91 +  check(mc.cliqueSize() == 2, "Wrong clique size");
    1.92 +
    1.93 +  mc.sizeLimit(2);
    1.94 +  check(mc.run(rule) == mc.SIZE_LIMIT, "Wrong termination cause");
    1.95    check(mc.cliqueSize() == 2, "Wrong clique size");
    1.96  }
    1.97  
    1.98  
    1.99  int main() {
   1.100 -  checkMaxCliqueGeneral(50, GrossoLocatelliPullanMc<ListGraph>::RANDOM);
   1.101 -  checkMaxCliqueGeneral(50, GrossoLocatelliPullanMc<ListGraph>::DEGREE_BASED);
   1.102 -  checkMaxCliqueGeneral(50, GrossoLocatelliPullanMc<ListGraph>::PENALTY_BASED);
   1.103 +  checkMaxCliqueGeneral(GrossoLocatelliPullanMc<ListGraph>::RANDOM);
   1.104 +  checkMaxCliqueGeneral(GrossoLocatelliPullanMc<ListGraph>::DEGREE_BASED);
   1.105 +  checkMaxCliqueGeneral(GrossoLocatelliPullanMc<ListGraph>::PENALTY_BASED);
   1.106  
   1.107 -  checkMaxCliqueFullGraph(50, GrossoLocatelliPullanMc<FullGraph>::RANDOM);
   1.108 -  checkMaxCliqueFullGraph(50, GrossoLocatelliPullanMc<FullGraph>::DEGREE_BASED);
   1.109 -  checkMaxCliqueFullGraph(50, GrossoLocatelliPullanMc<FullGraph>::PENALTY_BASED);
   1.110 +  checkMaxCliqueFullGraph(GrossoLocatelliPullanMc<FullGraph>::RANDOM);
   1.111 +  checkMaxCliqueFullGraph(GrossoLocatelliPullanMc<FullGraph>::DEGREE_BASED);
   1.112 +  checkMaxCliqueFullGraph(GrossoLocatelliPullanMc<FullGraph>::PENALTY_BASED);
   1.113                         
   1.114 -  checkMaxCliqueGridGraph(50, GrossoLocatelliPullanMc<GridGraph>::RANDOM);
   1.115 -  checkMaxCliqueGridGraph(50, GrossoLocatelliPullanMc<GridGraph>::DEGREE_BASED);
   1.116 -  checkMaxCliqueGridGraph(50, GrossoLocatelliPullanMc<GridGraph>::PENALTY_BASED);
   1.117 +  checkMaxCliqueGridGraph(GrossoLocatelliPullanMc<GridGraph>::RANDOM);
   1.118 +  checkMaxCliqueGridGraph(GrossoLocatelliPullanMc<GridGraph>::DEGREE_BASED);
   1.119 +  checkMaxCliqueGridGraph(GrossoLocatelliPullanMc<GridGraph>::PENALTY_BASED);
   1.120                         
   1.121    return 0;
   1.122  }