aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2020-09-22 19:07:16 +0200
committerAbigail <abigail@abigail.be>2020-09-22 19:07:16 +0200
commit48bce165371e39ab23aee7b7b6c1cbd4c9575dbe (patch)
treebe3ceb61eda482daec5b1152b540a79049e05879
parent97015ff86483bc3096f0e81ec93e982894e2a70d (diff)
downloadperlweeklychallenge-club-48bce165371e39ab23aee7b7b6c1cbd4c9575dbe.tar.gz
perlweeklychallenge-club-48bce165371e39ab23aee7b7b6c1cbd4c9575dbe.tar.bz2
perlweeklychallenge-club-48bce165371e39ab23aee7b7b6c1cbd4c9575dbe.zip
Allow testing bc solutions.
We're assuming that bc program contain a function called "main", which should be called with the input, and which return the answer.
-rwxr-xr-xchallenge-079/abigail/test.pl30
1 files changed, 26 insertions, 4 deletions
diff --git a/challenge-079/abigail/test.pl b/challenge-079/abigail/test.pl
index 222475a99b..10eb19dc37 100755
--- a/challenge-079/abigail/test.pl
+++ b/challenge-079/abigail/test.pl
@@ -17,24 +17,46 @@ use experimental 'signatures';
use Test::More;
+
my %languages = (
- Perl => ["/opt/perl/bin/perl" => 'pl', 'perl'],
- JavaScript => ["/usr/local/bin/node" => 'js', 'node'],
+ Perl => {
+ exe => "/opt/perl/bin/perl",
+ ext => "pl",
+ },
+ JavaScript => {
+ exe => "/usr/local/bin/node",
+ ext => "js",
+ dir => "node",
+ },
+ bc => {
+ exe => "/usr/bin/bc",
+ ext => "bc",
+ filter => 's/.*/main($&)/',
+ },
);
+my $perl_exe = $languages {Perl} {exe};
foreach my $challenge (1, 2) {
my @inputs = <input-$challenge-*> or next;
subtest "Challenge $challenge" => sub {
foreach my $language (sort keys %languages) {
- my ($exe, $ext, $dir) = @{$languages {$language}};
+ my $info = $languages {$language};
+ my $exe = $$info {exe};
+ my $ext = $$info {ext};
+ my $dir = $$info {dir} // lc $language;
+ my $filter = $$info {filter} // '';
my $solution = "$dir/ch-$challenge.$ext";
next unless -r $solution;
+
subtest $language => sub {
foreach my $input (@inputs) {
my $output_exp = ($input =~ s/input/output/r) . ".exp";
my $exp = `cat $output_exp`;
- my $got = `$exe ./$solution < $input`;
+
+ my $got = `$perl_exe -ple '$filter' $input |\
+ $exe ./$solution`;
+
s/\h+$//gm for $exp, $got;
is $got, $exp, $input;
}