Alt-IO-All-new
view release on metacpan or search on metacpan
inc/TestML/Runtime.pm view on Meta::CPAN
for (my $i = 0; $i < @$signature; $i++) {
my $arg = $args->[$i];
$arg = $self->run_expression($arg)
if ref($arg) eq 'TestML::Expression';
$function->setvar($signature->[$i], $arg);
}
}
sub run_statement {
my ($self, $statement) = @_;
my $blocks = $self->select_blocks($statement->points || []);
for my $block (@$blocks) {
$self->function->setvar('Block', $block) if $block != 1;
my $result = $self->run_expression($statement->expr);
if (my $assert = $statement->assert) {
$self->run_assertion($result, $assert);
}
}
}
sub run_assignment {
inc/TestML/Runtime.pm view on Meta::CPAN
my ($self, $name) = @_;
my $value = $self->function->getvar('Block')->{points}{$name};
defined $value or return;
if ($value =~ s/\n+\z/\n/ and $value eq "\n") {
$value = '';
}
$value =~ s/^\\//gm;
return TestML::Str->new(value => $value);
}
sub select_blocks {
my ($self, $wanted) = @_;
return [1] unless @$wanted;
my $selected = [];
OUTER: for my $block (@{$self->function->data}) {
my %points = %{$block->points};
next if exists $points{SKIP};
if (exists $points{ONLY}) {
for my $point (@$wanted) {
return [] unless exists $points{$point};
}
$selected = [$block];
last;
}
for my $point (@$wanted) {
next OUTER unless exists $points{$point};
}
push @$selected, $block;
last if exists $points{LAST};
}
return $selected;
}
sub compile_testml {
my ($self) = @_;
die "'testml' document required but not found"
unless $self->testml;
if ($self->testml !~ /\n/) {
$self->testml =~ /(?:(.*)\/)?(.*)/ or die;
$self->{testml} = $2;
( run in 0.512 second using v1.01-cache-2.11-cpan-49f99fa48dc )