alpar@1041: #include alpar@1041: #include alpar@1041: #include alpar@1041: alpar@1041: #include "test_tools.h" alpar@1041: alpar@1041: using namespace lemon; alpar@1041: using namespace lemon::concept; alpar@1041: alpar@1041: struct A {}; alpar@1041: struct B {}; deba@1675: deba@1675: class F { alpar@1076: public: deba@1675: typedef A argument_type; deba@1675: typedef B result_type; deba@1675: alpar@1375: B operator()(const A &) const {return B();} alpar@1076: }; alpar@1076: alpar@1375: int func(A) {return 3;} alpar@1041: deba@1675: int binc(int, B) {return 4;} deba@1675: alpar@1041: typedef ReadMap DoubleMap; alpar@1041: alpar@1041: int main() alpar@1041: { // checking graph components alpar@1041: alpar@1041: checkConcept, ReadMap >(); alpar@1041: checkConcept, WriteMap >(); alpar@1041: checkConcept, ReadWriteMap >(); alpar@1041: checkConcept, ReferenceMap >(); alpar@1041: alpar@1041: checkConcept, AddMap >(); alpar@1041: checkConcept, SubMap >(); alpar@1041: checkConcept, MulMap >(); alpar@1041: checkConcept, DivMap >(); alpar@1041: checkConcept, NegMap >(); alpar@1041: checkConcept, AbsMap >(); alpar@1070: checkConcept, ShiftMap >(); alpar@1070: checkConcept, ScaleMap >(); alpar@1041: alpar@1041: checkConcept, ComposeMap > >(); alpar@1041: deba@1675: checkConcept, FunctorMap >(); alpar@1076: alpar@1076: int a; alpar@1076: alpar@1076: a=mapFunctor(constMap(2))(A()); alpar@1076: check(a==2,"Something is wrong with mapFunctor"); alpar@1076: alpar@1076: B b; deba@1675: b=functorMap(F())[A()]; alpar@1076: deba@1675: a=functorMap(&func)[A()]; alpar@1076: check(a==3,"Something is wrong with functorMap"); alpar@1076: deba@1675: a=combineMap(constMap(), identityMap(), &binc)[B()]; deba@1675: check(a==4,"Something is wrong with combineMap"); deba@1675: deba@1675: alpar@1041: std::cout << __FILE__ ": All tests passed.\n"; alpar@1041: alpar@1041: return 0; alpar@1041: }