test/maps_test.cc
changeset 740 7bda7860e0a8
parent 554 e6ae4999cf22
child 741 71939d63ae77
equal deleted inserted replaced
13:7c1e8eb00d0c 15:3f19aa22b36c
   347     for ( LoggerBoolMap<vec::iterator>::Iterator it = map2.begin();
   347     for ( LoggerBoolMap<vec::iterator>::Iterator it = map2.begin();
   348           it != map2.end(); ++it )
   348           it != map2.end(); ++it )
   349       check(v1[i++] == *it, "Something is wrong with LoggerBoolMap");
   349       check(v1[i++] == *it, "Something is wrong with LoggerBoolMap");
   350   }
   350   }
   351 
   351 
       
   352   // Iterable bool map
       
   353   {
       
   354     typedef SmartGraph Graph;
       
   355     typedef SmartGraph::Node Item;
       
   356 
       
   357     typedef IterableBoolMap<SmartGraph, SmartGraph::Node> Ibm;
       
   358     checkConcept<ReadWriteMap<Item, int>, Ibm>();
       
   359 
       
   360     const int num = 10;
       
   361     Graph g;
       
   362     std::vector<Item> items;
       
   363     for (int i = 0; i < num; ++i) {
       
   364       items.push_back(g.addNode());
       
   365     }
       
   366 
       
   367     Ibm map1(g, true);
       
   368     int n = 0;
       
   369     for (Ibm::TrueIt it(map1); it != INVALID; ++it) {
       
   370       check(map1[static_cast<Item>(it)], "Wrong TrueIt");
       
   371       ++n;
       
   372     }
       
   373     check(n == num, "Wrong number");
       
   374 
       
   375     n = 0;
       
   376     for (Ibm::ItemIt it(map1, true); it != INVALID; ++it) {
       
   377         check(map1[static_cast<Item>(it)], "Wrong ItemIt for true");
       
   378         ++n;
       
   379     }
       
   380     check(n == num, "Wrong number");
       
   381     check(Ibm::FalseIt(map1) == INVALID, "Wrong FalseIt");
       
   382     check(Ibm::ItemIt(map1, false) == INVALID, "Wrong ItemIt for false");
       
   383 
       
   384     map1[items[5]] = true;
       
   385 
       
   386     n = 0;
       
   387     for (Ibm::ItemIt it(map1, true); it != INVALID; ++it) {
       
   388         check(map1[static_cast<Item>(it)], "Wrong ItemIt for true");
       
   389         ++n;
       
   390     }
       
   391     check(n == num, "Wrong number");
       
   392 
       
   393     map1[items[num / 2]] = false;
       
   394     check(map1[items[num / 2]] == false, "Wrong map value");
       
   395 
       
   396     n = 0;
       
   397     for (Ibm::TrueIt it(map1); it != INVALID; ++it) {
       
   398         check(map1[static_cast<Item>(it)], "Wrong TrueIt for true");
       
   399         ++n;
       
   400     }
       
   401     check(n == num - 1, "Wrong number");
       
   402 
       
   403     n = 0;
       
   404     for (Ibm::FalseIt it(map1); it != INVALID; ++it) {
       
   405         check(!map1[static_cast<Item>(it)], "Wrong FalseIt for true");
       
   406         ++n;
       
   407     }
       
   408     check(n == 1, "Wrong number");
       
   409 
       
   410     map1[items[0]] = false;
       
   411     check(map1[items[0]] == false, "Wrong map value");
       
   412 
       
   413     map1[items[num - 1]] = false;
       
   414     check(map1[items[num - 1]] == false, "Wrong map value");
       
   415 
       
   416     n = 0;
       
   417     for (Ibm::TrueIt it(map1); it != INVALID; ++it) {
       
   418         check(map1[static_cast<Item>(it)], "Wrong TrueIt for true");
       
   419         ++n;
       
   420     }
       
   421     check(n == num - 3, "Wrong number");
       
   422     check(map1.trueNum() == num - 3, "Wrong number");
       
   423 
       
   424     n = 0;
       
   425     for (Ibm::FalseIt it(map1); it != INVALID; ++it) {
       
   426         check(!map1[static_cast<Item>(it)], "Wrong FalseIt for true");
       
   427         ++n;
       
   428     }
       
   429     check(n == 3, "Wrong number");
       
   430     check(map1.falseNum() == 3, "Wrong number");
       
   431   }
       
   432 
       
   433   // Iterable int map
       
   434   {
       
   435     typedef SmartGraph Graph;
       
   436     typedef SmartGraph::Node Item;
       
   437     typedef IterableIntMap<SmartGraph, SmartGraph::Node> Iim;
       
   438 
       
   439     checkConcept<ReadWriteMap<Item, int>, Iim>();
       
   440 
       
   441     const int num = 10;
       
   442     Graph g;
       
   443     std::vector<Item> items;
       
   444     for (int i = 0; i < num; ++i) {
       
   445       items.push_back(g.addNode());
       
   446     }
       
   447 
       
   448     Iim map1(g);
       
   449     check(map1.size() == 0, "Wrong size");
       
   450 
       
   451     for (int i = 0; i < num; ++i) {
       
   452       map1[items[i]] = i;
       
   453     }
       
   454     check(map1.size() == num, "Wrong size");
       
   455 
       
   456     for (int i = 0; i < num; ++i) {
       
   457       Iim::ItemIt it(map1, i);
       
   458       check(static_cast<Item>(it) == items[i], "Wrong value");
       
   459       ++it;
       
   460       check(static_cast<Item>(it) == INVALID, "Wrong value");
       
   461     }
       
   462 
       
   463     for (int i = 0; i < num; ++i) {
       
   464       map1[items[i]] = i % 2;
       
   465     }
       
   466     check(map1.size() == 2, "Wrong size");
       
   467 
       
   468     int n = 0;
       
   469     for (Iim::ItemIt it(map1, 0); it != INVALID; ++it) {
       
   470       check(map1[static_cast<Item>(it)] == 0, "Wrong Value");
       
   471       ++n;
       
   472     }
       
   473     check(n == (num + 1) / 2, "Wrong number");
       
   474 
       
   475     for (Iim::ItemIt it(map1, 1); it != INVALID; ++it) {
       
   476       check(map1[static_cast<Item>(it)] == 1, "Wrong Value");
       
   477       ++n;
       
   478     }
       
   479     check(n == num, "Wrong number");
       
   480 
       
   481   }
       
   482 
       
   483   // Iterable value map
       
   484   {
       
   485     typedef SmartGraph Graph;
       
   486     typedef SmartGraph::Node Item;
       
   487     typedef IterableValueMap<SmartGraph, SmartGraph::Node, double> Ivm;
       
   488 
       
   489     checkConcept<ReadWriteMap<Item, double>, Ivm>();
       
   490 
       
   491     const int num = 10;
       
   492     Graph g;
       
   493     std::vector<Item> items;
       
   494     for (int i = 0; i < num; ++i) {
       
   495       items.push_back(g.addNode());
       
   496     }
       
   497 
       
   498     Ivm map1(g, 0.0);
       
   499     check(distance(map1.beginValue(), map1.endValue()) == 1, "Wrong size");
       
   500     check(*map1.beginValue() == 0.0, "Wrong value");
       
   501 
       
   502     for (int i = 0; i < num; ++i) {
       
   503       map1.set(items[i], static_cast<double>(i));
       
   504     }
       
   505     check(distance(map1.beginValue(), map1.endValue()) == num, "Wrong size");
       
   506 
       
   507     for (int i = 0; i < num; ++i) {
       
   508       Ivm::ItemIt it(map1, static_cast<double>(i));
       
   509       check(static_cast<Item>(it) == items[i], "Wrong value");
       
   510       ++it;
       
   511       check(static_cast<Item>(it) == INVALID, "Wrong value");
       
   512     }
       
   513 
       
   514     for (Ivm::ValueIterator vit = map1.beginValue();
       
   515          vit != map1.endValue(); ++vit) {
       
   516       check(map1[static_cast<Item>(Ivm::ItemIt(map1, *vit))] == *vit,
       
   517             "Wrong ValueIterator");
       
   518     }
       
   519 
       
   520     for (int i = 0; i < num; ++i) {
       
   521       map1.set(items[i], static_cast<double>(i % 2));
       
   522     }
       
   523     check(distance(map1.beginValue(), map1.endValue()) == 2, "Wrong size");
       
   524 
       
   525     int n = 0;
       
   526     for (Ivm::ItemIt it(map1, 0.0); it != INVALID; ++it) {
       
   527       check(map1[static_cast<Item>(it)] == 0.0, "Wrong Value");
       
   528       ++n;
       
   529     }
       
   530     check(n == (num + 1) / 2, "Wrong number");
       
   531 
       
   532     for (Ivm::ItemIt it(map1, 1.0); it != INVALID; ++it) {
       
   533       check(map1[static_cast<Item>(it)] == 1.0, "Wrong Value");
       
   534       ++n;
       
   535     }
       
   536     check(n == num, "Wrong number");
       
   537 
       
   538   }
   352   return 0;
   539   return 0;
   353 }
   540 }