summaryrefslogtreecommitdiff
path: root/lib/Kratos/DFADriver/Model.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Kratos/DFADriver/Model.pm')
-rw-r--r--lib/Kratos/DFADriver/Model.pm24
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/Kratos/DFADriver/Model.pm b/lib/Kratos/DFADriver/Model.pm
index ba3855f..63d4dde 100644
--- a/lib/Kratos/DFADriver/Model.pm
+++ b/lib/Kratos/DFADriver/Model.pm
@@ -72,6 +72,7 @@ sub new_from_repo {
my $class_base = $repo->{class}{$class_name};
for my $function ( values %{ $class_base->{function} } ) {
+ my %param_values;
for my $attrib ( @{ $function->{attributes} // [] } ) {
if ( $attrib =~ s{ ^ src _ }{}x ) {
push( @states, $attrib );
@@ -92,6 +93,11 @@ sub new_from_repo {
elsif ( $attrib =~ m{ ^ epilogue $ }x ) {
$transition{ $function->{name} }{level} = 'epilogue';
}
+ elsif ( $attrib
+ =~ m{ ^ testarg _ (?<index> [^_]+ ) _ (?<value> [^_]+) $ }x )
+ {
+ push( @{ $param_values{ $+{index} } }, $+{value} );
+ }
else {
say "wat $attrib";
}
@@ -104,7 +110,7 @@ sub new_from_repo {
@{ $transition{ $function->{name} }{parameters} },
{
name => $param_name,
- values => [],
+ values => $param_values{$i},
}
);
$self->{parameter}{$param_name} = {
@@ -116,6 +122,22 @@ sub new_from_repo {
}
}
+ if ( exists $repo->{class}{DriverEvalThread} ) {
+ for my $var ( keys %{ $repo->{class}{DriverEvalThread}{variable} } ) {
+ if ( $var
+ =~ m{ ^ testVal __ (?<fun> [^_]+ ) __ arg (?<index> \d+ ) __ (?<descr> [^_]+ ) $ }x
+ )
+ {
+ push(
+ @{
+ $transition{ $+{fun} }{parameters}[ $+{index} ]{values}
+ },
+ $var
+ );
+ }
+ }
+ }
+
@states = uniq @states;
@states = sort @states;