test/maps_test.cc
changeset 1091 9eac00ea588f
parent 1067 8a3fb3155dca
parent 1084 8b2d4e5d96e4
child 1092 dceba191c00d
equal deleted inserted replaced
27:5331caee1857 30:dcb5e00a9ea6
   101   // NullMap
   101   // NullMap
   102   {
   102   {
   103     checkConcept<ReadWriteMap<A,B>, NullMap<A,B> >();
   103     checkConcept<ReadWriteMap<A,B>, NullMap<A,B> >();
   104     NullMap<A,B> map1;
   104     NullMap<A,B> map1;
   105     NullMap<A,B> map2 = map1;
   105     NullMap<A,B> map2 = map1;
   106     ignore_unused_variable_warning(map2);
   106     ::lemon::ignore_unused_variable_warning(map2);
   107     map1 = nullMap<A,B>();
   107     map1 = nullMap<A,B>();
   108   }
   108   }
   109 
   109 
   110   // ConstMap
   110   // ConstMap
   111   {
   111   {
   112     checkConcept<ReadWriteMap<A,B>, ConstMap<A,B> >();
   112     checkConcept<ReadWriteMap<A,B>, ConstMap<A,B> >();
   113     checkConcept<ReadWriteMap<A,C>, ConstMap<A,C> >();
   113     checkConcept<ReadWriteMap<A,C>, ConstMap<A,C> >();
   114     ConstMap<A,B> map1;
   114     ConstMap<A,B> map1;
   115     ConstMap<A,B> map2 = B();
   115     ConstMap<A,B> map2 = B();
   116     ConstMap<A,B> map3 = map1;
   116     ConstMap<A,B> map3 = map1;
   117     ignore_unused_variable_warning(map2,map3);
   117     ::lemon::ignore_unused_variable_warning(map2,map3);
   118 
   118 
   119     map1 = constMap<A>(B());
   119     map1 = constMap<A>(B());
   120     map1 = constMap<A,B>();
   120     map1 = constMap<A,B>();
   121     map1.setAll(B());
   121     map1.setAll(B());
   122     ConstMap<A,C> map4(C(1));
   122     ConstMap<A,C> map4(C(1));
   123     ConstMap<A,C> map5 = map4;
   123     ConstMap<A,C> map5 = map4;
   124     ignore_unused_variable_warning(map5);
   124     ::lemon::ignore_unused_variable_warning(map5);
   125 
   125 
   126     map4 = constMap<A>(C(2));
   126     map4 = constMap<A>(C(2));
   127     map4.setAll(C(3));
   127     map4.setAll(C(3));
   128 
   128 
   129     checkConcept<ReadWriteMap<A,int>, ConstMap<A,int> >();
   129     checkConcept<ReadWriteMap<A,int>, ConstMap<A,int> >();
   141   // IdentityMap
   141   // IdentityMap
   142   {
   142   {
   143     checkConcept<ReadMap<A,A>, IdentityMap<A> >();
   143     checkConcept<ReadMap<A,A>, IdentityMap<A> >();
   144     IdentityMap<A> map1;
   144     IdentityMap<A> map1;
   145     IdentityMap<A> map2 = map1;
   145     IdentityMap<A> map2 = map1;
   146     ignore_unused_variable_warning(map2);
   146     ::lemon::ignore_unused_variable_warning(map2);
   147 
   147 
   148     map1 = identityMap<A>();
   148     map1 = identityMap<A>();
   149 
   149 
   150     checkConcept<ReadMap<double,double>, IdentityMap<double> >();
   150     checkConcept<ReadMap<double,double>, IdentityMap<double> >();
   151     check(identityMap<double>()[1.0] == 1.0 &&
   151     check(identityMap<double>()[1.0] == 1.0 &&
   202   // ComposeMap
   202   // ComposeMap
   203   {
   203   {
   204     typedef ComposeMap<DoubleMap, ReadMap<B,A> > CompMap;
   204     typedef ComposeMap<DoubleMap, ReadMap<B,A> > CompMap;
   205     checkConcept<ReadMap<B,double>, CompMap>();
   205     checkConcept<ReadMap<B,double>, CompMap>();
   206     CompMap map1 = CompMap(DoubleMap(),ReadMap<B,A>());
   206     CompMap map1 = CompMap(DoubleMap(),ReadMap<B,A>());
   207     ignore_unused_variable_warning(map1);
   207     ::lemon::ignore_unused_variable_warning(map1);
   208     CompMap map2 = composeMap(DoubleMap(), ReadMap<B,A>());
   208     CompMap map2 = composeMap(DoubleMap(), ReadMap<B,A>());
   209     ignore_unused_variable_warning(map2);
   209     ::lemon::ignore_unused_variable_warning(map2);
   210 
   210 
   211     SparseMap<double, bool> m1(false); m1[3.14] = true;
   211     SparseMap<double, bool> m1(false); m1[3.14] = true;
   212     RangeMap<double> m2(2); m2[0] = 3.0; m2[1] = 3.14;
   212     RangeMap<double> m2(2); m2[0] = 3.0; m2[1] = 3.14;
   213     check(!composeMap(m1,m2)[0] && composeMap(m1,m2)[1],
   213     check(!composeMap(m1,m2)[0] && composeMap(m1,m2)[1],
   214           "Something is wrong with ComposeMap")
   214           "Something is wrong with ComposeMap")
   217   // CombineMap
   217   // CombineMap
   218   {
   218   {
   219     typedef CombineMap<DoubleMap, DoubleMap, std::plus<double> > CombMap;
   219     typedef CombineMap<DoubleMap, DoubleMap, std::plus<double> > CombMap;
   220     checkConcept<ReadMap<A,double>, CombMap>();
   220     checkConcept<ReadMap<A,double>, CombMap>();
   221     CombMap map1 = CombMap(DoubleMap(), DoubleMap());
   221     CombMap map1 = CombMap(DoubleMap(), DoubleMap());
   222     ignore_unused_variable_warning(map1);
   222     ::lemon::ignore_unused_variable_warning(map1);
   223     CombMap map2 = combineMap(DoubleMap(), DoubleMap(), std::plus<double>());
   223     CombMap map2 = combineMap(DoubleMap(), DoubleMap(), std::plus<double>());
   224     ignore_unused_variable_warning(map2);
   224     ::lemon::ignore_unused_variable_warning(map2);
   225 
   225 
   226     check(combineMap(constMap<B,int,2>(), identityMap<B>(), &binc)[B()] == 3,
   226     check(combineMap(constMap<B,int,2>(), identityMap<B>(), &binc)[B()] == 3,
   227           "Something is wrong with CombineMap");
   227           "Something is wrong with CombineMap");
   228   }
   228   }
   229 
   229 
   231   {
   231   {
   232     checkConcept<ReadMap<A,B>, FunctorToMap<F,A,B> >();
   232     checkConcept<ReadMap<A,B>, FunctorToMap<F,A,B> >();
   233     checkConcept<ReadMap<A,B>, FunctorToMap<F> >();
   233     checkConcept<ReadMap<A,B>, FunctorToMap<F> >();
   234     FunctorToMap<F> map1;
   234     FunctorToMap<F> map1;
   235     FunctorToMap<F> map2 = FunctorToMap<F>(F());
   235     FunctorToMap<F> map2 = FunctorToMap<F>(F());
   236     ignore_unused_variable_warning(map2);
   236     ::lemon::ignore_unused_variable_warning(map2);
   237 
   237 
   238     B b = functorToMap(F())[A()];
   238     B b = functorToMap(F())[A()];
   239     ignore_unused_variable_warning(b);
   239     ::lemon::ignore_unused_variable_warning(b);
   240 
   240 
   241     checkConcept<ReadMap<A,B>, MapToFunctor<ReadMap<A,B> > >();
   241     checkConcept<ReadMap<A,B>, MapToFunctor<ReadMap<A,B> > >();
   242     MapToFunctor<ReadMap<A,B> > map =
   242     MapToFunctor<ReadMap<A,B> > map =
   243       MapToFunctor<ReadMap<A,B> >(ReadMap<A,B>());
   243       MapToFunctor<ReadMap<A,B> >(ReadMap<A,B>());
   244     ignore_unused_variable_warning(map);
   244     ::lemon::ignore_unused_variable_warning(map);
   245 
   245 
   246     check(functorToMap(&func)[A()] == 3,
   246     check(functorToMap(&func)[A()] == 3,
   247           "Something is wrong with FunctorToMap");
   247           "Something is wrong with FunctorToMap");
   248     check(mapToFunctor(constMap<A,int>(2))(A()) == 2,
   248     check(mapToFunctor(constMap<A,int>(2))(A()) == 2,
   249           "Something is wrong with MapToFunctor");
   249           "Something is wrong with MapToFunctor");
   257   // ConvertMap
   257   // ConvertMap
   258   {
   258   {
   259     checkConcept<ReadMap<double,double>,
   259     checkConcept<ReadMap<double,double>,
   260       ConvertMap<ReadMap<double, int>, double> >();
   260       ConvertMap<ReadMap<double, int>, double> >();
   261     ConvertMap<RangeMap<bool>, int> map1(rangeMap(1, true));
   261     ConvertMap<RangeMap<bool>, int> map1(rangeMap(1, true));
   262     ignore_unused_variable_warning(map1);
   262     ::lemon::ignore_unused_variable_warning(map1);
   263     ConvertMap<RangeMap<bool>, int> map2 = convertMap<int>(rangeMap(2, false));
   263     ConvertMap<RangeMap<bool>, int> map2 = convertMap<int>(rangeMap(2, false));
   264     ignore_unused_variable_warning(map2);
   264     ::lemon::ignore_unused_variable_warning(map2);
   265 
   265 
   266   }
   266   }
   267 
   267 
   268   // ForkMap
   268   // ForkMap
   269   {
   269   {