not and action infrastructure
[scpubgit/DKit.git] / t / basic_rule.t
index 6c78c96..72b9621 100644 (file)
@@ -1,6 +1,7 @@
 use strictures 1;
 use Test::More;
 use DX::Solver;
+use DX::SetOver;
 
 my @servers = qw(
   kitty.scsys.co.uk
@@ -30,16 +31,26 @@ my %shells = (
 );
 
 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 => qw(S servers) ]);
+$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 => qw(S shells) ])
+$solver->add_rule(
+  shell => [ 'S' ] => [ member_of => S => [ value => 'shells' ] ])
        ->add_rule(name => [ qw(T N) ],
                     [ constrain => [ qw(T N) ],
                       sub { $_[0]->{name} eq $_[1] } ]
@@ -58,7 +69,7 @@ $s = $solver->query(
      );
 
 is_deeply(
-  [ sort map $_->{Srv}{name}, $s->results ],
+  [ sort map $_->{Srv}->bound_value->{name}, $s->results ],
   [ qw(joe.example.com kitty.scsys.co.uk) ]
 );