42 namespace Test {
namespace Set {
63 template<
class I,
class J>
65 sol(I&
i, J& j)
const {
89 :
SetTest(
"RelOp::"+str(sot0)+
"::"+str(srt0)+
"::S"+str(share0),
90 share0 == 0 ? 3 : 2,ds_22,false)
91 , sot(sot0), srt(srt0), share(share0) {}
96 case 0: a=x[0];
b=x[1];
c=x[2];
break;
97 case 1: a=x[0];
b=x[0];
c=x[0];
break;
98 case 2: a=x[0];
b=x[0];
c=x[1];
break;
99 case 3: a=x[0];
b=x[1];
c=x[0];
break;
100 case 4: a=x[0];
b=x[1];
c=x[1];
break;
146 case 0: a=x[0]; b=x[1]; c=x[2];
break;
147 case 1: a=x[0]; b=x[0]; c=x[0];
break;
148 case 2: a=x[0]; b=x[0]; c=x[1];
break;
149 case 3: a=x[0]; b=x[1]; c=x[0];
break;
150 case 4: a=x[0]; b=x[1]; c=x[1];
break;
164 for (
int i=0;
i<=4;
i++) {
165 (void)
new Rel(sots.sot(),srts.srt(),
i);
185 :
SetTest(
"RelOp::N::"+str(sot0)+
"::"+str(n0)+
"::S"+str(shared0)+
186 "::C"+str(withConst0 ? 1 : 0),
187 shared0 == 0 ? n0+1 : (shared0 <= 2 ? 3 : 2),ds_12,false)
188 , sot(sot0), n(n0), shared(shared0), withConst(withConst0)
192 int realN = shared == 0 ? n : 3;
198 for (
int i=realN;
i--; )
199 isrs[
i].init(x.
lub, x[
i]);
220 int result = shared == 0 ? x.
size() - 1 : (shared <= 2 ? 2 : 0);
226 if (shared == 1 && (isrs[0]() || isrs[1]())) {
227 delete[] isrs;
return false;
229 if (shared == 3 && (isrs[0]() || isrs[2]())) {
230 delete[] isrs;
return false;
232 unsigned int cardSum = 0;
233 if (shared == 1 || shared == 3) {
237 for (
int i=0;
i<realN;
i++) {
246 delete[] isrs;
return false;
315 int size = shared == 0 ? x.
size()-1 : 3;
320 for (
int i=x.
size()-1;
i--;)
325 xs[0] = x[0]; xs[1] = x[0]; xs[2] = x[1]; xn = x[2];
328 xs[0] = x[0]; xs[1] = x[1]; xs[2] = x[2]; xn = x[2];
331 xs[0] = x[0]; xs[1] = x[1]; xs[2] = x[0]; xn = x[0];
349 for (
int wc=0; wc<=1; wc++) {
350 for (
int i=0;
i<=3;
i++) {
377 :
SetTest(
"RelOp::IntN::"+str(sot0)+
"::"+str(n0)+
378 "::C"+str(withConst0 ? 1 : 0),
380 , sot(sot0), n(n0), withConst(withConst0)
384 int* isrs =
new int[
n];
385 for (
int i=0;
i<
n;
i++)
396 if (cardSum != static_cast<unsigned int>(n)) {
427 bool allEqual =
true;
428 for (
int i=1;
i<
n;
i++) {
429 if (isrs[
i] != isrs[0]) {
488 for (
int wc=0; wc<=1; wc++) {
489 for (
int i=0;
i<=3;
i++) {
Test for n-ary partition constraint
Create(void)
Perform creation and registration.
Iterator for Boolean operation types.
SetRelType
Common relation types for sets.
int size(void) const
Return arity.
Iterator for set relation types.
void post(Space &home, SetVarArray &x, IntVarArray &)
Post constraint on x.
Range iterator for singleton range.
Range iterator for integer sets.
void post(Space &home, SetVarArray &x, IntVarArray &y)
Post constraint on x.
Fake space for creation of regions.
CreateIntN(void)
Perform creation and registration.
bool equal(I &i, J &j)
Check whether range iterators i and j are equal.
Test for ternary relation constraint
SetOpType
Common operations for sets.
const unsigned int card
Maximum cardinality of an integer set.
Test for n-ary partition constraint
bool solution(const SetAssignment &x) const
Test whether x is solution
void init(const Gecode::IntSet &d, int cur)
Initialize with set d0 and bit-pattern cur0.
CreateN(void)
Perform creation and registration.
void post(Space &home, SetVarArray &x, IntVarArray &)
Post constraint on x.
Help class to create and register tests.
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
Range iterator for computing intersection (binary)
const Test::Int::Assignment & ints(void) const
Return assignment for integer variables.
Range iterator for union of iterators.
A complement iterator spezialized for the BndSet limits.
unsigned int size(I &i)
Size of all ranges of range iterator i.
Gecode::IntSet lub
The common superset for all domains.
RelIntN(Gecode::SetOpType sot0, int n0, bool withConst0)
Create and register test.
Range iterator for computing union (binary)
SetExpr inter(const SetVarArgs &x)
Intersection of set variables.
union Gecode::@518::NNF::@57 u
Union depending on nodetype t.
Rel(Gecode::SetOpType sot0, Gecode::SetRelType srt0, int share0=0)
Create and register test.
Node * x
Pointer to corresponding Boolean expression node.
Help class to create and register tests.
Range iterator for intersection of iterators.
Base class for tests with set constraints
Generate all set assignments.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Range iterator producing subsets of an IntSet.
bool subset(I &i, J &j)
Check whether range iterator i is subset of range iterator j.
bool shared(const ConstView< ViewA > &, const ConstView< ViewB > &)
Test whether views share same variable.
RelN(Gecode::SetOpType sot0, int n0, int shared0, bool withConst0)
Create and register test.
struct Gecode::@518::NNF::@57::@58 b
For binary nodes (and, or, eqv)
bool solution(const SetAssignment &x) const
Test whether x is solution
Gecode toplevel namespace
Range iterator for computing set difference.
int size(void) const
Return size of array (number of elements)
#define GECODE_NEVER
Assert that this command is never executed.
bool solution(const SetAssignment &x) const
Test whether x is solution
struct Gecode::@518::NNF::@57::@59 a
For atomic nodes.
Help class to create and register tests.