test/maps_test.cc
changeset 1435 8e85e6bbefdf
parent 1375 ebdce4f68ac4
child 1675 fa89ffb27a6d
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/test/maps_test.cc	Mon May 23 04:48:14 2005 +0000
     1.3 @@ -0,0 +1,57 @@
     1.4 +#include <lemon/concept_check.h>
     1.5 +#include <lemon/concept/maps.h>
     1.6 +#include <lemon/maps.h>
     1.7 +
     1.8 +#include "test_tools.h"
     1.9 +
    1.10 +using namespace lemon;
    1.11 +using namespace lemon::concept;
    1.12 +
    1.13 +struct A {};
    1.14 +struct B {};
    1.15 +class F
    1.16 +{
    1.17 +public:
    1.18 +  B operator()(const A &) const {return B();}
    1.19 +};
    1.20 +
    1.21 +int func(A) {return 3;}
    1.22 +
    1.23 +typedef ReadMap<A,double> DoubleMap;
    1.24 +
    1.25 +int main()
    1.26 +{ // checking graph components
    1.27 +  
    1.28 +  checkConcept<ReadMap<A,B>, ReadMap<A,B> >();
    1.29 +  checkConcept<WriteMap<A,B>, WriteMap<A,B> >();
    1.30 +  checkConcept<ReadWriteMap<A,B>, ReadWriteMap<A,B> >();
    1.31 +  checkConcept<ReferenceMap<A,B,B&,const B&>, ReferenceMap<A,B,B&,const B&> >();
    1.32 +
    1.33 +  checkConcept<ReadMap<A,double>, AddMap<DoubleMap,DoubleMap> >();
    1.34 +  checkConcept<ReadMap<A,double>, SubMap<DoubleMap,DoubleMap> >();
    1.35 +  checkConcept<ReadMap<A,double>, MulMap<DoubleMap,DoubleMap> >();
    1.36 +  checkConcept<ReadMap<A,double>, DivMap<DoubleMap,DoubleMap> >();
    1.37 +  checkConcept<ReadMap<A,double>, NegMap<DoubleMap> >();
    1.38 +  checkConcept<ReadMap<A,double>, AbsMap<DoubleMap> >();
    1.39 +  checkConcept<ReadMap<A,double>, ShiftMap<DoubleMap> >();
    1.40 +  checkConcept<ReadMap<A,double>, ScaleMap<DoubleMap> >();
    1.41 +  
    1.42 +  checkConcept<ReadMap<B,double>, ComposeMap<DoubleMap,ReadMap<B,A> > >();
    1.43 +
    1.44 +  checkConcept<ReadMap<A,B>, FunctorMap<A,B,F> >();
    1.45 +
    1.46 +  int a;
    1.47 +  
    1.48 +  a=mapFunctor(constMap<A,int>(2))(A());
    1.49 +  check(a==2,"Something is wrong with mapFunctor");
    1.50 +
    1.51 +  B b;
    1.52 +  b=functorMap<A,B>(F())[A()];
    1.53 +
    1.54 +  a=functorMap<A,int>(&func)[A()];
    1.55 +  check(a==3,"Something is wrong with functorMap");
    1.56 +
    1.57 +  std::cout << __FILE__ ": All tests passed.\n";
    1.58 +  
    1.59 +  return 0;
    1.60 +}