162 CHECK (idx.isValid());
163 CHECK (0 == idx.size());
165 idx.addRequest (_entry (1,
"cat"));
166 idx.addRequest (_entry (2,
"cat"));
167 idx.addRequest (_entry (3,
"dog"));
168 CHECK (3 == idx.size());
169 CHECK (3 == idx.request_count());
170 CHECK (0 == idx.provision_count());
172 idx.addProvision (_entry (4,
"dog"));
173 CHECK (4 == idx.size());
174 CHECK (3 == idx.request_count());
175 CHECK (1 == idx.provision_count());
177 CHECK (_hasDefault (1));
178 CHECK (_hasDefault (2));
179 CHECK (_hasSolution (3,4));
180 CHECK (idx.isValid());
187 CHECK (idx.isValid());
188 uint req_cnt = idx.request_count();
190 idx.addRequest (_entry (5,
"dog"));
191 idx.addRequest (_entry (6,
"cat"));
193 CHECK (idx.hasRequest (_entry (5,
"dog")));
194 CHECK (idx.hasRequest (_entry (6,
"cat")));
196 CHECK (_hasDefault (6));
197 CHECK (_hasSolution (5,4));
198 CHECK (idx.isValid());
199 CHECK (2 + req_cnt == idx.request_count());
206 CHECK (idx.isValid());
207 uint r_cnt = idx.request_count();
208 uint p_cnt = idx.provision_count();
210 CHECK (_hasDefault (1));
211 CHECK (_hasDefault (2));
212 CHECK (_hasDefault (6));
213 CHECK (_hasSolution (3,4));
214 CHECK (_hasSolution (5,4));
216 idx.addProvision (_entry (7,
"cat"));
217 CHECK (idx.hasProvision (_entry (7,
"cat")));
219 CHECK (_hasSolution (1,7));
220 CHECK (_hasSolution (2,7));
221 CHECK (_hasSolution (6,7));
222 CHECK (_hasSolution (3,4));
223 CHECK (_hasSolution (5,4));
224 CHECK (idx.isValid());
225 CHECK (1 + p_cnt == idx.provision_count());
226 CHECK (0 + r_cnt == idx.request_count());
228 idx.addProvision (_entry (8,
"dog"));
230 CHECK (_hasSolution (1,7));
231 CHECK (_hasSolution (2,7));
232 CHECK (_hasSolution (6,7));
233 CHECK (_hasSolution (3,8));
234 CHECK (_hasSolution (5,8));
235 CHECK (idx.isValid());
236 CHECK (2 + p_cnt == idx.provision_count());
237 CHECK (0 + r_cnt == idx.request_count());
244 CHECK (idx.isValid());
245 uint r_cnt = idx.request_count();
246 uint p_cnt = idx.provision_count();
247 CHECK (_hasSolution (1,7));
248 CHECK (_hasSolution (2,7));
249 CHECK (_hasSolution (6,7));
250 CHECK (_hasSolution (3,8));
251 CHECK (_hasSolution (5,8));
253 CHECK ( idx.hasRequest (_entry (2,
"cat")));
255 idx.removeRequest (_entry (2,
"cat"));
257 CHECK (!idx.hasRequest (_entry (2,
"cat")));
258 CHECK (p_cnt == idx.provision_count());
259 CHECK (r_cnt-1 == idx.request_count());
261 CHECK (_hasSolution (1,7));
262 CHECK (_hasSolution (6,7));
263 CHECK (_hasSolution (3,8));
264 CHECK (_hasSolution (5,8));
266 idx.removeRequest (_entry (2,
"cat"));
267 CHECK (!idx.hasRequest (_entry (2,
"cat")));
268 CHECK (p_cnt == idx.provision_count());
269 CHECK (r_cnt-1 == idx.request_count());
270 CHECK (idx.isValid());
277 CHECK (idx.isValid());
278 uint r_cnt = idx.request_count();
279 uint p_cnt = idx.provision_count();
280 CHECK (_hasSolution (1,7));
281 CHECK (_hasSolution (6,7));
282 CHECK (_hasSolution (3,8));
283 CHECK (_hasSolution (5,8));
285 CHECK ( idx.hasProvision (_entry (4,
"dog")));
287 idx.removeProvision (_entry (4,
"dog"));
289 CHECK (!idx.hasProvision (_entry (4,
"dog")));
290 CHECK (p_cnt-1 == idx.provision_count());
291 CHECK (r_cnt == idx.request_count());
293 CHECK (_hasSolution (1,7));
294 CHECK (_hasSolution (6,7));
295 CHECK (_hasSolution (3,8));
296 CHECK (_hasSolution (5,8));
298 CHECK ( idx.hasProvision (_entry (8,
"dog")));
300 idx.removeProvision (_entry (8,
"dog"));
302 CHECK (!idx.hasProvision (_entry (8,
"dog")));
303 CHECK (p_cnt-2 == idx.provision_count());
304 CHECK (r_cnt == idx.request_count());
306 CHECK (_hasSolution (1,7));
307 CHECK (_hasSolution (6,7));
308 CHECK (!_hasSolution (3,8));
309 CHECK (!_hasSolution (5,8));
310 CHECK (_hasDefault (3));
311 CHECK (_hasDefault (5));
313 idx.removeProvision (_entry (8,
"dog"));
314 CHECK (!idx.hasProvision (_entry (8,
"dog")));
315 CHECK (p_cnt-2 == idx.provision_count());
316 CHECK (r_cnt == idx.request_count());
317 CHECK (idx.isValid());
324 CHECK (idx.isValid());
325 uint r_cnt = idx.request_count();
326 uint p_cnt = idx.provision_count();
327 CHECK (_hasSolution (1,7));
328 CHECK (_hasSolution (6,7));
329 CHECK (_hasDefault (3));
330 CHECK (_hasDefault (5));
332 HashVal dogHash (
hash_value (_entry (5,
"dog")));
334 CHECK ( idx.hasRequest (_entry (5,
"dog")));
336 CHECK (_hasDefault (5));
337 CHECK (!idx.hasRequest (_entry (5,
"cat")));
339 idx.modifyRequest (dogHash, _entry (5,
"cat"));
341 CHECK ( idx.hasRequest (_entry (5,
"cat")));
342 CHECK (p_cnt == idx.provision_count());
343 CHECK (r_cnt == idx.request_count());
344 CHECK (_hasSolution (1,7));
345 CHECK (_hasSolution (6,7));
346 CHECK (_hasDefault (3));
347 CHECK (_hasSolution (5,7));
354 CHECK (idx.isValid());
355 uint r_cnt = idx.request_count();
356 uint p_cnt = idx.provision_count();
357 CHECK (_hasSolution (1,7));
358 CHECK (_hasSolution (5,7));
359 CHECK (_hasSolution (6,7));
360 CHECK (_hasDefault (3));
362 CHECK ( idx.hasProvision (_entry (7,
"cat")));
363 CHECK (!idx.hasProvision (_entry (8,
"dog")));
365 idx.modifyProvision (_entry (7,
"cat"), _entry (8,
"dog"));
366 CHECK (!idx.hasProvision (_entry (7,
"cat")));
367 CHECK ( idx.hasProvision (_entry (8,
"dog")));
368 CHECK (p_cnt == idx.provision_count());
369 CHECK (r_cnt == idx.request_count());
370 CHECK (_hasDefault (1));
371 CHECK (_hasDefault (5));
372 CHECK (_hasDefault (6));
373 CHECK (_hasSolution (3,8));
375 idx.addProvision (_entry (7,
"cat"));
376 idx.addProvision (_entry (9,
"cat"));
377 CHECK (p_cnt+2 == idx.provision_count());
378 CHECK (idx.hasProvision (_entry (7,
"cat")));
379 CHECK (idx.hasProvision (_entry (9,
"cat")));
380 CHECK (_hasSolution (1,9));
381 CHECK (_hasSolution (5,9));
382 CHECK (_hasSolution (6,9));
383 CHECK (_hasSolution (3,8));
385 CHECK ( idx.hasProvision (_entry (7,
"cat")));
386 CHECK (!idx.hasProvision (_entry (4,
"dog")));
388 idx.modifyProvision (_entry (7,
"cat"), _entry (4,
"dog"));
390 CHECK (!idx.hasProvision (_entry (7,
"cat")));
391 CHECK ( idx.hasProvision (_entry (4,
"dog")));
392 CHECK (_hasSolution (1,9));
393 CHECK (_hasSolution (5,9));
394 CHECK (_hasSolution (6,9));
395 CHECK (_hasSolution (3,4));
399 idx.modifyProvision (_entry (9,
"cat"), _entry (7,
"cat"));
400 CHECK (!idx.hasProvision (_entry (9,
"cat")));
401 CHECK ( idx.hasProvision (_entry (7,
"cat")));
402 CHECK ( idx.hasProvision (_entry (4,
"dog")));
403 CHECK (_hasSolution (1,7));
404 CHECK (_hasSolution (5,7));
405 CHECK (_hasSolution (6,7));
406 CHECK (_hasSolution (3,4));
408 CHECK (p_cnt+2 == idx.provision_count());
409 CHECK (r_cnt == idx.request_count());
410 CHECK (idx.isValid());