The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 5;

use VS::RuleEngine::Declare;
use VS::RuleEngine::Constants;

my $evaluate = 0;
my $skip_test = 0;
my $skip_test_a = 1;
my $dont_evaluate = 1;
my $output = 1;

my $engine = engine {
    rule evaluate => does {
        $evaluate = 1;
        return KV_NO_MATCH;
    };
    
    rule skip_test => does {
        $skip_test = 1;
        return KV_SKIP;
    };
    
    rule dont_evaluate => does {
        $dont_evaluate = 0;
        return KV_MATCH;
    };
    
    action skip_test_a => does {
        $skip_test_a = 0;
    };
    
    run skip_test_a => when qw(skip_test);
    
    posthook quit => does {
        return KV_ABORT;
    };
    
    output foo => does {
        $output = 0;
    }
};

$engine->run();

is($evaluate, 1, "Ran evalate rule");
is($skip_test, 1, "Ran skip_test rule");
is($dont_evaluate, 1, "Didn't run dont_evaluate rule");
is($skip_test_a, 1, "Didn't run skip_test_a rule");
is($output, 1, "Didn't run foo output");