PerlPowerTools
view release on metacpan or search on metacpan
t/units/units.t view on Meta::CPAN
#!/usr/bin/perl
# units.t - test for script units
use strict;
use warnings;
use Test::More;
run_tests();
sub run_tests {
my $class = require './bin/units';
subtest sanity => sub {
can_ok $class, 'test'
};
my @tables = (
calendar_table(),
distance_table(),
volume_table(),
);
run_table($class, $_) for @tables;
temp_test($class);
return;
}
done_testing();
sub calendar_table {
my $table = [
"calendar",
[qw(month year 12), round(1/12)]
];
}
sub distance_table {
my $table = [
"distance",
# have want p q
[ qw( m m 1 1 ) ],
[ qw( m cm 0.01 100 ) ],
[ qw( meters feet 0.3048 3.28084 ) ],
[ qw( meters/s furlongs/fortnight 0.00016631 6012.88 ) ],
[ '1|2 in', 'cm', qw( 0.787402 1.27 ) ],
];
}
sub run_table {
my( $class, $table ) = @_;
my $label = shift @$table;
subtest $label => sub {
foreach my $tuple ( @$table ) {
my( $have, $want, $expected, $inverse ) = @$tuple;
my %got = $class->test( $have, $want );
is round($got{'p'}), $expected, "$have -> $want";
is round($got{'q'}), $inverse, "$want -> $have";
}
};
}
sub temp_test {
my($class) = @_;
subtest temperature => sub {
my @table = (
[qw( K K 0 ) ],
[qw( K C -273.15 ) ],
( run in 1.456 second using v1.01-cache-2.11-cpan-39bf76dae61 )