Algorithm-CP-IZ
view release on metacpan or search on metacpan
my $rc = $iz->search([$v1, $v2],
{ ValueSelectors
=> [$vs, $vs], }
);
is($rc, 1);
is($v1->value, 0);
is($v2->value, 1);
}
# bad value 1
SKIP: {
my $iz = Algorithm::CP::IZ->new;
skip "old iZ", 0
unless (defined($iz->get_version)
&& $iz->IZ_VERSION_MAJOR >= 3
&& $iz->IZ_VERSION_MINOR >= 6);
package TestVS2;
sub new {
my $class = shift;
my ($v, $index) = @_;
my $self = {
_pos => 0,
};
bless $self, $class;
}
sub next {
my $self = shift;
my ($v, $index) = @_;
my $pos = $self->{_pos};
my $domain = $v->domain;
return if ($pos >= @$domain);
my @ret = (Algorithm::CP::IZ::CS_VALUE_SELECTION_EQ, undef);
$self->{_pos} = ++$pos;
return @ret;
}
sub DESTROY {
}
package main;
my $v1 = $iz->create_int(0, 10);
my $v2 = $iz->create_int(0, 5);
my $vs = $iz->create_value_selector_simple("TestVS");
eval {
my $rc = $iz->search([$v1, $v2],
{ ValueSelectors
=> [$vs, $vs], }
);
};
# error
ok($@);
}
# bad value 2
SKIP: {
my $iz = Algorithm::CP::IZ->new;
skip "old iZ", 0
unless (defined($iz->get_version)
&& $iz->IZ_VERSION_MAJOR >= 3
&& $iz->IZ_VERSION_MINOR >= 6);
package TestVS3;
sub new {
my $class = shift;
my ($v, $index) = @_;
my $self = {
_pos => 0,
};
bless $self, $class;
}
sub next {
my $self = shift;
my ($v, $index) = @_;
my $pos = $self->{_pos};
my $domain = $v->domain;
return if ($pos >= @$domain);
my @ret = ("*", 3);
$self->{_pos} = ++$pos;
return @ret;
}
sub DESTROY {
}
package main;
my $v1 = $iz->create_int(0, 10);
my $v2 = $iz->create_int(0, 5);
my $vs = $iz->create_value_selector_simple("TestVS");
eval {
my $rc = $iz->search([$v1, $v2],
{ ValueSelectors
=> [$vs, $vs], }
);
};
# error
ok($@);
}
( run in 1.450 second using v1.01-cache-2.11-cpan-2398b32b56e )