00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "test/cpltset.hh"
00038
00039 using namespace Gecode;
00040 using namespace Test::Set;
00041
00042 namespace Test { namespace CpltSet {
00043
00045 namespace Dom {
00046
00052
00053 static const int d1r[4][2] = {
00054 {-4,-3},{-1,-1},{1,1},{3,5}
00055 };
00056 static IntSet d1(d1r,4);
00057
00058 static IntSet ds_33(-3,3);
00059 static IntSet ds_4(4,4);
00060
00062 class CpltSetDomEqRange : public CpltSetTest {
00063 public:
00065 CpltSetDomEqRange(const char* t) : CpltSetTest(t,1,ds_33,false) {}
00067 virtual bool solution(const SetAssignment& x) const {
00068 CountableSetRanges xr(x.lub, x[0]);
00069 IntSetRanges dr(ds_33);
00070 return Iter::Ranges::equal(xr, dr);
00071 }
00073 virtual void post(Space* home, CpltSetVarArray& x, IntVarArray&) {
00074 Gecode::dom(home, x[0], SRT_EQ, ds_33);
00075 }
00076 };
00077 CpltSetDomEqRange _cpltsetdomeqrange("Dom::EqRange");
00078
00080 class CpltSetDomEqDom : public CpltSetTest {
00081 public:
00083 CpltSetDomEqDom(const char* t) : CpltSetTest(t,1,d1,false) {}
00085 virtual bool solution(const SetAssignment& x) const {
00086 CountableSetRanges xr(x.lub, x[0]);
00087 IntSetRanges dr(d1);
00088 return Iter::Ranges::equal(xr, dr);
00089 }
00091 virtual void post(Space* home, CpltSetVarArray& x, IntVarArray&) {
00092 Gecode::dom(home, x[0], SRT_EQ, d1);
00093 }
00094 };
00095 CpltSetDomEqDom _cpltsetdomeq("Dom::EqDom");
00096
00098 class CpltSetDomSupRange : public CpltSetTest {
00099 public:
00101 CpltSetDomSupRange(const char* t) : CpltSetTest(t,1,ds_33,false) {}
00103 virtual bool solution(const SetAssignment& x) const {
00104 CountableSetRanges xr(x.lub, x[0]);
00105 IntSetRanges dr(ds_33);
00106 return Iter::Ranges::subset(dr, xr);
00107 }
00109 virtual void post(Space* home, CpltSetVarArray& x, IntVarArray&) {
00110 Gecode::dom(home, x[0], SRT_SUP, ds_33);
00111 }
00112 };
00113 CpltSetDomSupRange _cpltsetdomsuprange("Dom::SupRange");
00114
00116 class CpltSetDomSupDom : public CpltSetTest {
00117 public:
00119 CpltSetDomSupDom(const char* t) : CpltSetTest(t,1,d1,false) {}
00121 virtual bool solution(const SetAssignment& x) const {
00122 CountableSetRanges xr(x.lub, x[0]);
00123 IntSetRanges dr(d1);
00124 return Iter::Ranges::subset(dr, xr);
00125 }
00127 virtual void post(Space* home, CpltSetVarArray& x, IntVarArray&) {
00128 Gecode::dom(home, x[0], SRT_SUP, d1);
00129 }
00130 };
00131 CpltSetDomSupDom _cpltsetdomsup("Dom::SupDom");
00132
00134
00135 }}}
00136
00137