1.1 --- a/test/maps_test.cc Thu Jun 11 23:13:24 2009 +0200
1.2 +++ b/test/maps_test.cc Sat Jun 27 13:07:26 2009 +0200
1.3 @@ -349,5 +349,192 @@
1.4 check(v1[i++] == *it, "Something is wrong with LoggerBoolMap");
1.5 }
1.6
1.7 + // Iterable bool map
1.8 + {
1.9 + typedef SmartGraph Graph;
1.10 + typedef SmartGraph::Node Item;
1.11 +
1.12 + typedef IterableBoolMap<SmartGraph, SmartGraph::Node> Ibm;
1.13 + checkConcept<ReadWriteMap<Item, int>, Ibm>();
1.14 +
1.15 + const int num = 10;
1.16 + Graph g;
1.17 + std::vector<Item> items;
1.18 + for (int i = 0; i < num; ++i) {
1.19 + items.push_back(g.addNode());
1.20 + }
1.21 +
1.22 + Ibm map1(g, true);
1.23 + int n = 0;
1.24 + for (Ibm::TrueIt it(map1); it != INVALID; ++it) {
1.25 + check(map1[static_cast<Item>(it)], "Wrong TrueIt");
1.26 + ++n;
1.27 + }
1.28 + check(n == num, "Wrong number");
1.29 +
1.30 + n = 0;
1.31 + for (Ibm::ItemIt it(map1, true); it != INVALID; ++it) {
1.32 + check(map1[static_cast<Item>(it)], "Wrong ItemIt for true");
1.33 + ++n;
1.34 + }
1.35 + check(n == num, "Wrong number");
1.36 + check(Ibm::FalseIt(map1) == INVALID, "Wrong FalseIt");
1.37 + check(Ibm::ItemIt(map1, false) == INVALID, "Wrong ItemIt for false");
1.38 +
1.39 + map1[items[5]] = true;
1.40 +
1.41 + n = 0;
1.42 + for (Ibm::ItemIt it(map1, true); it != INVALID; ++it) {
1.43 + check(map1[static_cast<Item>(it)], "Wrong ItemIt for true");
1.44 + ++n;
1.45 + }
1.46 + check(n == num, "Wrong number");
1.47 +
1.48 + map1[items[num / 2]] = false;
1.49 + check(map1[items[num / 2]] == false, "Wrong map value");
1.50 +
1.51 + n = 0;
1.52 + for (Ibm::TrueIt it(map1); it != INVALID; ++it) {
1.53 + check(map1[static_cast<Item>(it)], "Wrong TrueIt for true");
1.54 + ++n;
1.55 + }
1.56 + check(n == num - 1, "Wrong number");
1.57 +
1.58 + n = 0;
1.59 + for (Ibm::FalseIt it(map1); it != INVALID; ++it) {
1.60 + check(!map1[static_cast<Item>(it)], "Wrong FalseIt for true");
1.61 + ++n;
1.62 + }
1.63 + check(n == 1, "Wrong number");
1.64 +
1.65 + map1[items[0]] = false;
1.66 + check(map1[items[0]] == false, "Wrong map value");
1.67 +
1.68 + map1[items[num - 1]] = false;
1.69 + check(map1[items[num - 1]] == false, "Wrong map value");
1.70 +
1.71 + n = 0;
1.72 + for (Ibm::TrueIt it(map1); it != INVALID; ++it) {
1.73 + check(map1[static_cast<Item>(it)], "Wrong TrueIt for true");
1.74 + ++n;
1.75 + }
1.76 + check(n == num - 3, "Wrong number");
1.77 + check(map1.trueNum() == num - 3, "Wrong number");
1.78 +
1.79 + n = 0;
1.80 + for (Ibm::FalseIt it(map1); it != INVALID; ++it) {
1.81 + check(!map1[static_cast<Item>(it)], "Wrong FalseIt for true");
1.82 + ++n;
1.83 + }
1.84 + check(n == 3, "Wrong number");
1.85 + check(map1.falseNum() == 3, "Wrong number");
1.86 + }
1.87 +
1.88 + // Iterable int map
1.89 + {
1.90 + typedef SmartGraph Graph;
1.91 + typedef SmartGraph::Node Item;
1.92 + typedef IterableIntMap<SmartGraph, SmartGraph::Node> Iim;
1.93 +
1.94 + checkConcept<ReadWriteMap<Item, int>, Iim>();
1.95 +
1.96 + const int num = 10;
1.97 + Graph g;
1.98 + std::vector<Item> items;
1.99 + for (int i = 0; i < num; ++i) {
1.100 + items.push_back(g.addNode());
1.101 + }
1.102 +
1.103 + Iim map1(g);
1.104 + check(map1.size() == 0, "Wrong size");
1.105 +
1.106 + for (int i = 0; i < num; ++i) {
1.107 + map1[items[i]] = i;
1.108 + }
1.109 + check(map1.size() == num, "Wrong size");
1.110 +
1.111 + for (int i = 0; i < num; ++i) {
1.112 + Iim::ItemIt it(map1, i);
1.113 + check(static_cast<Item>(it) == items[i], "Wrong value");
1.114 + ++it;
1.115 + check(static_cast<Item>(it) == INVALID, "Wrong value");
1.116 + }
1.117 +
1.118 + for (int i = 0; i < num; ++i) {
1.119 + map1[items[i]] = i % 2;
1.120 + }
1.121 + check(map1.size() == 2, "Wrong size");
1.122 +
1.123 + int n = 0;
1.124 + for (Iim::ItemIt it(map1, 0); it != INVALID; ++it) {
1.125 + check(map1[static_cast<Item>(it)] == 0, "Wrong Value");
1.126 + ++n;
1.127 + }
1.128 + check(n == (num + 1) / 2, "Wrong number");
1.129 +
1.130 + for (Iim::ItemIt it(map1, 1); it != INVALID; ++it) {
1.131 + check(map1[static_cast<Item>(it)] == 1, "Wrong Value");
1.132 + ++n;
1.133 + }
1.134 + check(n == num, "Wrong number");
1.135 +
1.136 + }
1.137 +
1.138 + // Iterable value map
1.139 + {
1.140 + typedef SmartGraph Graph;
1.141 + typedef SmartGraph::Node Item;
1.142 + typedef IterableValueMap<SmartGraph, SmartGraph::Node, double> Ivm;
1.143 +
1.144 + checkConcept<ReadWriteMap<Item, double>, Ivm>();
1.145 +
1.146 + const int num = 10;
1.147 + Graph g;
1.148 + std::vector<Item> items;
1.149 + for (int i = 0; i < num; ++i) {
1.150 + items.push_back(g.addNode());
1.151 + }
1.152 +
1.153 + Ivm map1(g, 0.0);
1.154 + check(distance(map1.beginValue(), map1.endValue()) == 1, "Wrong size");
1.155 + check(*map1.beginValue() == 0.0, "Wrong value");
1.156 +
1.157 + for (int i = 0; i < num; ++i) {
1.158 + map1.set(items[i], static_cast<double>(i));
1.159 + }
1.160 + check(distance(map1.beginValue(), map1.endValue()) == num, "Wrong size");
1.161 +
1.162 + for (int i = 0; i < num; ++i) {
1.163 + Ivm::ItemIt it(map1, static_cast<double>(i));
1.164 + check(static_cast<Item>(it) == items[i], "Wrong value");
1.165 + ++it;
1.166 + check(static_cast<Item>(it) == INVALID, "Wrong value");
1.167 + }
1.168 +
1.169 + for (Ivm::ValueIterator vit = map1.beginValue();
1.170 + vit != map1.endValue(); ++vit) {
1.171 + check(map1[static_cast<Item>(Ivm::ItemIt(map1, *vit))] == *vit,
1.172 + "Wrong ValueIterator");
1.173 + }
1.174 +
1.175 + for (int i = 0; i < num; ++i) {
1.176 + map1.set(items[i], static_cast<double>(i % 2));
1.177 + }
1.178 + check(distance(map1.beginValue(), map1.endValue()) == 2, "Wrong size");
1.179 +
1.180 + int n = 0;
1.181 + for (Ivm::ItemIt it(map1, 0.0); it != INVALID; ++it) {
1.182 + check(map1[static_cast<Item>(it)] == 0.0, "Wrong Value");
1.183 + ++n;
1.184 + }
1.185 + check(n == (num + 1) / 2, "Wrong number");
1.186 +
1.187 + for (Ivm::ItemIt it(map1, 1.0); it != INVALID; ++it) {
1.188 + check(map1[static_cast<Item>(it)] == 1.0, "Wrong Value");
1.189 + ++n;
1.190 + }
1.191 + check(n == num, "Wrong number");
1.192 +
1.193 + }
1.194 return 0;
1.195 }