Skip to content

Commit

Permalink
Even more refactoring of units.t
Browse files Browse the repository at this point in the history
  • Loading branch information
briandfoy committed Jun 16, 2023
1 parent b00baf4 commit 29f2471
Showing 1 changed file with 39 additions and 44 deletions.
83 changes: 39 additions & 44 deletions t/units.t 100644 → 100755
Expand Up @@ -16,53 +16,54 @@ sub run_tests {
can_ok $class, 'test'
};

calendar_test($class);
distance_test($class);
my @tables = (
calendar_table(),
distance_table(),
volume_table(),
);

run_table($class, $_) for @tables;

temp_test($class);
volume_test($class);

return;
}

done_testing();

sub calendar_test {
my($class) = @_;

subtest calendar => sub {
my @table = (
[qw(month year 12), round(1/12)]
);

inverse($class, $_) for @table;
};
sub calendar_table {
my $table = [
"calendar",
[qw(month year 12), round(1/12)]
];
}

sub distance_test {
my($class) = @_;
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 ) ],
];
}

subtest distance => sub {
my @table = (
# 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;

inverse($class, $_) for @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 inverse {
my( $class, $tuple ) = @_;
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) = @_;

Expand Down Expand Up @@ -90,20 +91,14 @@ sub temp_test {

my %got = $class->test('-17.78C','F');
ok round($got{t}) < 0.00001;

};
}

sub volume_test {
my($class) = @_;

subtest volume => sub {
my @table = (
[qw(cm3 gallons 3785.41 0.000264172)]
);

inverse($class, $_) for @table;
};
sub volume_table {
my $table = [
"volume",
[qw(cm3 gallons 3785.41 0.000264172)]
];
}

sub round {
Expand Down

0 comments on commit 29f2471

Please sign in to comment.