Algorithm-CP-IZ

 view release on metacpan or  search on metacpan

t/07vs.t  view on Meta::CPAN

    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 )