| 432 | } |
| 433 | |
| 434 | bool |
| 435 | IntTest::run(void) { |
| 436 | using std::map; |
| 437 | using std::vector; |
| 438 | using std::string; |
| 439 | using std::ostream; |
| 440 | using namespace Gecode; |
| 441 | |
| 442 | // Results of tests run |
| 443 | map<int, vector<RunInfo> > results; |
| 444 | // Set up root space |
| 445 | IntTestSpace* root = new IntTestSpace(arity,dom); |
| 446 | post(*root, root->x); |
| 447 | results.clear(); |
| 448 | |
| 449 | IntArgs d(arity); |
| 450 | for (int i=arity; i--; ) |
| 451 | d[i]=i; |
| 452 | |
| 453 | for (int vara = 0; vara<n_int_var_branch; vara++) { |
| 454 | for (int varb = 1; varb<n_int_var_branch; varb++) { |
| 455 | for (int val = 0; val<n_int_val_branch; val++) { |
| 456 | Rnd r(1); |
| 457 | |
| 458 | IntValBranch ivb; |
| 459 | switch (val) { |
| 460 | case 0: ivb = INT_VAL_MIN(); break; |
| 461 | case 1: ivb = INT_VAL_MED(); break; |
| 462 | case 2: ivb = INT_VAL_MAX(); break; |
| 463 | case 3: ivb = INT_VAL_RND(r); break; |
| 464 | case 4: ivb = INT_VAL_SPLIT_MIN(); break; |
| 465 | case 5: ivb = INT_VAL_SPLIT_MAX(); break; |
| 466 | case 6: ivb = INT_VAL_RANGE_MIN(); break; |
| 467 | case 7: ivb = INT_VAL_RANGE_MAX(); break; |
| 468 | case 8: ivb = INT_VAL(&int_val); break; |
| 469 | case 9: ivb = INT_VALUES_MIN(); break; |
| 470 | case 10: ivb = INT_VALUES_MAX(); break; |
| 471 | } |
| 472 | |
| 473 | IntTestSpace* c = static_cast<IntTestSpace*>(root->clone()); |
| 474 | |
| 475 | if ((vara == 0) && (val < 11)) { |
| 476 | for (int i=0; i<c->x.size(); i++) |
| 477 | branch(*c, c->x[i], ivb); |
| 478 | } else { |
| 479 | Rnd ra(1); |
| 480 | IntVarBranch ivba; |
| 481 | IntAction iaa(*c, c->x, 0.9); |
| 482 | IntCHB ica(*c, c->x); |
| 483 | switch (vara) { |
| 484 | case 0: ivba = INT_VAR_NONE(); break; |
| 485 | case 1: ivba = INT_VAR_NONE(); break; |
| 486 | case 2: ivba = INT_VAR_RND(ra); break; |
| 487 | case 3: ivba = INT_VAR_MERIT_MIN(&int_merit); break; |
| 488 | case 4: ivba = INT_VAR_MERIT_MAX(&int_merit); break; |
| 489 | case 5: ivba = INT_VAR_DEGREE_MIN(); break; |
| 490 | case 6: ivba = INT_VAR_DEGREE_MAX(); break; |
| 491 | case 7: ivba = INT_VAR_AFC_MIN(0.5); break; |
nothing calls this directly
no test coverage detected