40 using namespace Gecode;
42 namespace Test {
namespace Set {
53 static const int d1r[4][2] = {
54 {-4,-3},{-1,-1},{1,1},{3,5}
58 static const int d1cr[5][2] = {
67 static const int d2r[2][2] = {
70 static IntSet ds_33c(d2r,2);
86 static bool in(
int i, I&
c,
bool eq=
false) {
102 SetTest(
"Dom::Range::"+str(srt0)+
"::"+str(n),n,ds_33,(n == 1)),
103 srt(srt0), is(srt == Gecode::
SRT_CMPL ? ds_33c: ds_33) {}
106 for (
int i=x.
size();
i--; ) {
115 if (!((!xr()) || in(minSymDiff(x,i,is),dr,
true)))
119 if (!(xr() ? in(minSymDiff(x,i,is),dr) : dr()))
123 if (!((!dr()) || in(minSymDiff(x,i,is),xr,
true)))
127 if (!(dr() ? in(minSymDiff(x,i,is),xr) : xr()))
170 assert(x.
size() == 1);
182 :
SetTest(
"Dom::IntRange::"+str(srt0)+
"::"+str(n),1,ds_33,n==1),
186 for (
int i=x.
size();
i--; ) {
196 if (!((!xr()) || in(minSymDiff(x,i,is),dr,
true)))
200 if (!(xr() ? in(minSymDiff(x,i,is),dr) : dr()))
204 if (!((!dr()) || in(minSymDiff(x,i,is),xr,
true)))
208 if (!(dr() ? in(minSymDiff(x,i,is),xr) : xr()))
251 assert(x.
size() == 1);
263 SetTest(
"Dom::Int::"+str(srt0)+
"::"+str(n),n,ds_33,n==1),
268 for (
int i=x.
size();
i--; ) {
277 if (!((!xr()) || in(minSymDiff(x,i,is),dr,
true)))
281 if (!(xr() ? in(minSymDiff(x,i,is),dr) : dr()))
285 if (!((!dr()) || in(minSymDiff(x,i,is),xr,
true)))
289 if (!(dr() ? in(minSymDiff(x,i,is),xr) : xr()))
334 assert(x.
size() == 1);
347 SetTest(
"Dom::Dom::"+str(srt0)+
"::"+str(n),n,d1,(n == 1)),
348 srt(srt0), is(srt == Gecode::
SRT_CMPL ? d1c: d1) {}
351 for (
int i=x.
size();
i--; ) {
360 if (!((!xr()) || in(minSymDiff(x,i,is),dr,
true)))
364 if (!(xr() ? in(minSymDiff(x,i,is),dr) : dr()))
368 if (!((!dr()) || in(minSymDiff(x,i,is),xr,
true)))
372 if (!(dr() ? in(minSymDiff(x,i,is),xr) : xr()))
415 assert(x.
size() == 1);
425 :
SetTest(
"Dom::CardRange::"+str(n),n,d1,false) {}
428 for (
int i=x.
size();
i--; ) {
431 if ((card < 2) || (card > 3))