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);
87 static bool in(
int i, I&
c,
bool eq=
false) {
103 :
SetTest(
"Dom::Range::"+str(srt0),1,ds_55,true), srt(srt0)
104 , is(srt == Gecode::
SRT_CMPL ? ds_33c: ds_33) {}
111 case SRT_LQ:
return (!xr()) || in(minSymDiff(x,is),dr,
true);
112 case SRT_LE:
return xr() ? in(minSymDiff(x,is),dr) : dr();
113 case SRT_GQ:
return (!dr()) || in(minSymDiff(x,is),xr,
true);
114 case SRT_GR:
return dr() ? in(minSymDiff(x,is),xr) : xr();
160 :
SetTest(
"Dom::IntRange::"+str(srt0),1,ds_55,true), srt(srt0) {}
168 case SRT_LQ:
return (!xr()) || in(minSymDiff(x,is),dr,
true);
169 case SRT_LE:
return xr() ? in(minSymDiff(x,is),dr) : dr();
170 case SRT_GQ:
return (!dr()) || in(minSymDiff(x,is),xr,
true);
171 case SRT_GR:
return dr() ? in(minSymDiff(x,is),xr) : xr();
217 :
SetTest(
"Dom::Int::"+str(srt0),1,ds_55,true), srt(srt0) {}
225 case SRT_LQ:
return (!xr()) || in(minSymDiff(x,is),dr,
true);
226 case SRT_LE:
return xr() ? in(minSymDiff(x,is),dr) : dr();
227 case SRT_GQ:
return (!dr()) || in(minSymDiff(x,is),xr,
true);
228 case SRT_GR:
return dr() ? in(minSymDiff(x,is),xr) : xr();
275 :
SetTest(
"Dom::Dom::"+str(srt0),1,d1,true), srt(srt0)
276 , is(srt == Gecode::
SRT_CMPL ? d1c: d1) {}
283 case SRT_LQ:
return (!xr()) || in(minSymDiff(x,is),dr,
true);
284 case SRT_LE:
return xr() ? in(minSymDiff(x,is),dr) : dr();
285 case SRT_GQ:
return (!dr()) || in(minSymDiff(x,is),xr,
true);
286 case SRT_GR:
return dr() ? in(minSymDiff(x,is),xr) : xr();
330 :
SetTest(
"Dom::CardRange",1,d1,false) {}
335 return card >= 2 && card <= 3;