#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 15;
use VS::RuleEngine::Declare;
use lib 't/lib';
use Test::VS::RuleEngine::Input;
my $input_obj = Test::VS::RuleEngine::Input->new();
my $engine = engine {
input "input1" => instanceof "Test::VS::RuleEngine::Input";
input "input2" => instanceof "Test::VS::RuleEngine::Input" => with_args {
start => 10
};
input "input3" => does {
1;
};
input "input4" => $input_obj;
};
ok($engine->has_input("input1"));
my $input = $engine->_get_input("input1");
ok(defined $input);
is($input->_pkg, "Test::VS::RuleEngine::Input");
is_deeply($input->_args, []);
ok($engine->has_input("input2"));
$input = $engine->_get_input("input2");
ok(defined $input);
is($input->_pkg, "Test::VS::RuleEngine::Input");
is_deeply($input->_args, [start => 10]);
ok($engine->has_input("input3"));
$input = $engine->_get_input("input3");
ok(defined $input);
is($input->_pkg, "VS::RuleEngine::Input::Perl");
is($input->_args->[0]->(), 1);
ok($engine->has_input("input4"));
$input = $engine->_get_input("input4");
ok(defined $input);
ok($input->_pkg == $input_obj);