7 using namespace lemon;  | 
     7 using namespace lemon;  | 
     8 using namespace lemon::concept;  | 
     8 using namespace lemon::concept;  | 
     9   | 
     9   | 
    10 struct A {}; | 
    10 struct A {}; | 
    11 struct B {}; | 
    11 struct B {}; | 
    12 class F  | 
    12   | 
    13 { | 
    13 class F { | 
    14 public:  | 
    14 public:  | 
         | 
    15   typedef A argument_type;  | 
         | 
    16   typedef B result_type;  | 
         | 
    17   | 
    15   B operator()(const A &) const {return B();} | 
    18   B operator()(const A &) const {return B();} | 
    16 };  | 
    19 };  | 
    17   | 
    20   | 
    18 int func(A) {return 3;} | 
    21 int func(A) {return 3;} | 
         | 
    22   | 
         | 
    23 int binc(int, B) {return 4;} | 
    19   | 
    24   | 
    20 typedef ReadMap<A,double> DoubleMap;  | 
    25 typedef ReadMap<A,double> DoubleMap;  | 
    21   | 
    26   | 
    22 int main()  | 
    27 int main()  | 
    23 { // checking graph components | 
    28 { // checking graph components | 
    36   checkConcept<ReadMap<A,double>, ShiftMap<DoubleMap> >();  | 
    41   checkConcept<ReadMap<A,double>, ShiftMap<DoubleMap> >();  | 
    37   checkConcept<ReadMap<A,double>, ScaleMap<DoubleMap> >();  | 
    42   checkConcept<ReadMap<A,double>, ScaleMap<DoubleMap> >();  | 
    38     | 
    43     | 
    39   checkConcept<ReadMap<B,double>, ComposeMap<DoubleMap,ReadMap<B,A> > >();  | 
    44   checkConcept<ReadMap<B,double>, ComposeMap<DoubleMap,ReadMap<B,A> > >();  | 
    40   | 
    45   | 
    41   checkConcept<ReadMap<A,B>, FunctorMap<A,B,F> >();  | 
    46   checkConcept<ReadMap<A,B>, FunctorMap<F, A, B> >();  | 
    42   | 
    47   | 
    43   int a;  | 
    48   int a;  | 
    44     | 
    49     | 
    45   a=mapFunctor(constMap<A,int>(2))(A());  | 
    50   a=mapFunctor(constMap<A,int>(2))(A());  | 
    46   check(a==2,"Something is wrong with mapFunctor");  | 
    51   check(a==2,"Something is wrong with mapFunctor");  | 
    47   | 
    52   | 
    48   B b;  | 
    53   B b;  | 
    49   b=functorMap<A,B>(F())[A()];  | 
    54   b=functorMap(F())[A()];  | 
    50   | 
    55   | 
    51   a=functorMap<A,int>(&func)[A()];  | 
    56   a=functorMap(&func)[A()];  | 
    52   check(a==3,"Something is wrong with functorMap");  | 
    57   check(a==3,"Something is wrong with functorMap");  | 
         | 
    58   | 
         | 
    59   a=combineMap(constMap<B, int, 1>(), identityMap<B>(), &binc)[B()];  | 
         | 
    60   check(a==4,"Something is wrong with combineMap");  | 
         | 
    61     | 
    53   | 
    62   | 
    54   std::cout << __FILE__ ": All tests passed.\n";  | 
    63   std::cout << __FILE__ ": All tests passed.\n";  | 
    55     | 
    64     | 
    56   return 0;  | 
    65   return 0;  | 
    57 }  | 
    66 }  |