test/min_mean_cycle_test.cc
changeset 864 d3ea191c3412
parent 769 e746fb14e680
child 877 141f9c0db4a3
     1.1 --- a/test/min_mean_cycle_test.cc	Mon Mar 08 08:33:41 2010 +0100
     1.2 +++ b/test/min_mean_cycle_test.cc	Sat Mar 13 22:01:38 2010 +0100
     1.3 @@ -25,9 +25,9 @@
     1.4  #include <lemon/concepts/digraph.h>
     1.5  #include <lemon/concept_check.h>
     1.6  
     1.7 -#include <lemon/karp.h>
     1.8 -#include <lemon/hartmann_orlin.h>
     1.9 -#include <lemon/howard.h>
    1.10 +#include <lemon/karp_mmc.h>
    1.11 +#include <lemon/hartmann_orlin_mmc.h>
    1.12 +#include <lemon/howard_mmc.h>
    1.13  
    1.14  #include "test_tools.h"
    1.15  
    1.16 @@ -63,7 +63,7 @@
    1.17  
    1.18                          
    1.19  // Check the interface of an MMC algorithm
    1.20 -template <typename GR, typename Value>
    1.21 +template <typename GR, typename Cost>
    1.22  struct MmcClassConcept
    1.23  {
    1.24    template <typename MMC>
    1.25 @@ -73,30 +73,30 @@
    1.26  
    1.27        typedef typename MMC
    1.28          ::template SetPath<ListPath<GR> >
    1.29 -        ::template SetLargeValue<Value>
    1.30 +        ::template SetLargeCost<Cost>
    1.31          ::Create MmcAlg;
    1.32 -      MmcAlg mmc(me.g, me.length);
    1.33 +      MmcAlg mmc(me.g, me.cost);
    1.34        const MmcAlg& const_mmc = mmc;
    1.35        
    1.36        typename MmcAlg::Tolerance tol = const_mmc.tolerance();
    1.37        mmc.tolerance(tol);
    1.38        
    1.39        b = mmc.cycle(p).run();
    1.40 -      b = mmc.findMinMean();
    1.41 +      b = mmc.findCycleMean();
    1.42        b = mmc.findCycle();
    1.43  
    1.44 -      v = const_mmc.cycleLength();
    1.45 -      i = const_mmc.cycleArcNum();
    1.46 +      v = const_mmc.cycleCost();
    1.47 +      i = const_mmc.cycleSize();
    1.48        d = const_mmc.cycleMean();
    1.49        p = const_mmc.cycle();
    1.50      }
    1.51  
    1.52 -    typedef concepts::ReadMap<typename GR::Arc, Value> LM;
    1.53 +    typedef concepts::ReadMap<typename GR::Arc, Cost> CM;
    1.54    
    1.55      GR g;
    1.56 -    LM length;
    1.57 +    CM cost;
    1.58      ListPath<GR> p;
    1.59 -    Value v;
    1.60 +    Cost v;
    1.61      int i;
    1.62      double d;
    1.63      bool b;
    1.64 @@ -108,13 +108,13 @@
    1.65  void checkMmcAlg(const SmartDigraph& gr,
    1.66                   const SmartDigraph::ArcMap<int>& lm,
    1.67                   const SmartDigraph::ArcMap<int>& cm,
    1.68 -                 int length, int size) {
    1.69 +                 int cost, int size) {
    1.70    MMC alg(gr, lm);
    1.71 -  alg.findMinMean();
    1.72 -  check(alg.cycleMean() == static_cast<double>(length) / size,
    1.73 +  alg.findCycleMean();
    1.74 +  check(alg.cycleMean() == static_cast<double>(cost) / size,
    1.75          "Wrong cycle mean");
    1.76    alg.findCycle();
    1.77 -  check(alg.cycleLength() == length && alg.cycleArcNum() == size,
    1.78 +  check(alg.cycleCost() == cost && alg.cycleSize() == size,
    1.79          "Wrong path");
    1.80    SmartDigraph::ArcMap<int> cycle(gr, 0);
    1.81    for (typename MMC::Path::ArcIt a(alg.cycle()); a != INVALID; ++a) {
    1.82 @@ -148,28 +148,28 @@
    1.83    {
    1.84      typedef concepts::Digraph GR;
    1.85  
    1.86 -    // Karp
    1.87 +    // KarpMmc
    1.88      checkConcept< MmcClassConcept<GR, int>,
    1.89 -                  Karp<GR, concepts::ReadMap<GR::Arc, int> > >();
    1.90 +                  KarpMmc<GR, concepts::ReadMap<GR::Arc, int> > >();
    1.91      checkConcept< MmcClassConcept<GR, float>,
    1.92 -                  Karp<GR, concepts::ReadMap<GR::Arc, float> > >();
    1.93 +                  KarpMmc<GR, concepts::ReadMap<GR::Arc, float> > >();
    1.94      
    1.95 -    // HartmannOrlin
    1.96 +    // HartmannOrlinMmc
    1.97      checkConcept< MmcClassConcept<GR, int>,
    1.98 -                  HartmannOrlin<GR, concepts::ReadMap<GR::Arc, int> > >();
    1.99 +                  HartmannOrlinMmc<GR, concepts::ReadMap<GR::Arc, int> > >();
   1.100      checkConcept< MmcClassConcept<GR, float>,
   1.101 -                  HartmannOrlin<GR, concepts::ReadMap<GR::Arc, float> > >();
   1.102 +                  HartmannOrlinMmc<GR, concepts::ReadMap<GR::Arc, float> > >();
   1.103      
   1.104 -    // Howard
   1.105 +    // HowardMmc
   1.106      checkConcept< MmcClassConcept<GR, int>,
   1.107 -                  Howard<GR, concepts::ReadMap<GR::Arc, int> > >();
   1.108 +                  HowardMmc<GR, concepts::ReadMap<GR::Arc, int> > >();
   1.109      checkConcept< MmcClassConcept<GR, float>,
   1.110 -                  Howard<GR, concepts::ReadMap<GR::Arc, float> > >();
   1.111 +                  HowardMmc<GR, concepts::ReadMap<GR::Arc, float> > >();
   1.112  
   1.113 -    if (IsSameType<Howard<GR, concepts::ReadMap<GR::Arc, int> >::LargeValue,
   1.114 -          long_int>::result == 0) check(false, "Wrong LargeValue type");
   1.115 -    if (IsSameType<Howard<GR, concepts::ReadMap<GR::Arc, float> >::LargeValue,
   1.116 -          double>::result == 0) check(false, "Wrong LargeValue type");
   1.117 +    check((IsSameType<HowardMmc<GR, concepts::ReadMap<GR::Arc, int> >
   1.118 +           ::LargeCost, long_int>::result == 1), "Wrong LargeCost type");
   1.119 +    check((IsSameType<HowardMmc<GR, concepts::ReadMap<GR::Arc, float> >
   1.120 +           ::LargeCost, double>::result == 1), "Wrong LargeCost type");
   1.121    }
   1.122  
   1.123    // Run various tests
   1.124 @@ -194,22 +194,22 @@
   1.125        run();
   1.126  
   1.127      // Karp
   1.128 -    checkMmcAlg<Karp<GR, IntArcMap> >(gr, l1, c1,  6, 3);
   1.129 -    checkMmcAlg<Karp<GR, IntArcMap> >(gr, l2, c2,  5, 2);
   1.130 -    checkMmcAlg<Karp<GR, IntArcMap> >(gr, l3, c3,  0, 1);
   1.131 -    checkMmcAlg<Karp<GR, IntArcMap> >(gr, l4, c4, -1, 1);
   1.132 +    checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l1, c1,  6, 3);
   1.133 +    checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l2, c2,  5, 2);
   1.134 +    checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l3, c3,  0, 1);
   1.135 +    checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1);
   1.136  
   1.137      // HartmannOrlin
   1.138 -    checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l1, c1,  6, 3);
   1.139 -    checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l2, c2,  5, 2);
   1.140 -    checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l3, c3,  0, 1);
   1.141 -    checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l4, c4, -1, 1);
   1.142 +    checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l1, c1,  6, 3);
   1.143 +    checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l2, c2,  5, 2);
   1.144 +    checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l3, c3,  0, 1);
   1.145 +    checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1);
   1.146  
   1.147      // Howard
   1.148 -    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l1, c1,  6, 3);
   1.149 -    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l2, c2,  5, 2);
   1.150 -    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l3, c3,  0, 1);
   1.151 -    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l4, c4, -1, 1);
   1.152 +    checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l1, c1,  6, 3);
   1.153 +    checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l2, c2,  5, 2);
   1.154 +    checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l3, c3,  0, 1);
   1.155 +    checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1);
   1.156    }
   1.157  
   1.158    return 0;