use strictures 1;
use Test::More;
use DX::Solver;
+use DX::SetOver;
my @servers = qw(
kitty.scsys.co.uk
);
my $solver = DX::Solver->new(
- facts => { servers => \%servers, shells => \%shells }
+ facts => {
+ servers => DX::SetOver->new(
+ over => sub { $_[0]->{name} }, values => \%servers,
+ ),
+ shells => DX::SetOver->new(
+ over => sub { $_[0]->{name} }, values => \%shells,
+ ),
+ }
);
$solver->add_rule(
server => [ 'S' ] => [ member_of => S => [ value => 'servers' ] ]
);
-my $s = $solver->query([ 'S' ], [ call => server => 'S' ]);
+my $s = $solver->query([ 'S' ], [ server => 'S' ]);
-is_deeply([ map $_->{S}{name}, $s->results ], [ sort @servers ]);
+is_deeply([ map $_->{S}->bound_value->{name}, $s->results ], [ sort @servers ]);
$solver->add_rule(
shell => [ 'S' ] => [ member_of => S => [ value => 'shells' ] ])
);
is_deeply(
- [ sort map $_->{Srv}{name}, $s->results ],
+ [ sort map $_->{Srv}->bound_value->{name}, $s->results ],
[ qw(joe.example.com kitty.scsys.co.uk) ]
);