Lingua-EN-Nums2Words
view release on metacpan or search on metacpan
#!/usr/local/bin/perl
# Thanks to Graham Barr <gbarr@ti.com> for contributing this test script!
use strict;
use Lingua::EN::Nums2Words;
my $DBG=0;
my $tests=9;
my $variations=3;
my $loops=2;
print "1..",$tests*$variations*$loops,"\n";
$/ = "";
my $i = 1;
my $DATA_start=tell DATA;
foreach my $case (qw(upper lower)) {
Lingua::EN::Nums2Words::set_case($case);
seek DATA, $DATA_start, 0;
while(<DATA>) {
my($num,$word,$ord,$short_ord,$dollar) = split(/\n/,$_);
my $ok;
$ok=(case($case,$word) eq &num2word($num));
if (! $ok) { print "not ";
print "$word vs " . &num2word($num) . "\n" if ($DBG);
}
printf "ok %d\n",$i++;
$ok=(case($case,$ord) eq &num2word_ordinal($num));
if (! $ok) { print "not ";
print "$ord vs " . &num2word_ordinal($num) . "\n" if ($DBG);
}
printf "ok %d\n",$i++;
if ($short_ord ne '__SKIP__') {
$ok=(case($case,$short_ord) eq &num2word_short_ordinal($num));
if (! $ok) { print "not ";
print "$ord vs " . &num2word_short_ordinal($num) . "\n" if ($DBG);
}
printf "ok %d\n",$i++;
}
$ok=(case($case,$dollar) eq &num2usdollars($num));
if (! $ok) { print "not ";
print "$dollar vs " . &num2usdollars($num) . "\n" if ($DBG);
}
printf "ok %d\n",$i++;
}
}
sub case($$) {
my $word_case=shift @_;
my $str=shift @_;
if ($word_case eq 'upper') {
return uc($str);
} elsif ($word_case eq 'lower') {
return lc($str);
} else {
retrn $str;
}
}
__DATA__
-3793.793
NEGATIVE THREE THOUSAND, SEVEN HUNDRED NINETY-THREE AND SEVEN HUNDRED NINETY-THREE THOUSANDTHS
NEGATIVE THREE THOUSAND, SEVEN HUNDRED NINETY-THIRD AND SEVEN HUNDRED NINETY-THREE THOUSANDTHS
__SKIP__
NEGATIVE THREE THOUSAND, SEVEN HUNDRED NINETY-THREE DOLLARS AND SEVENTY-NINE CENTS
3875.5798
THREE THOUSAND, EIGHT HUNDRED SEVENTY-FIVE AND FIVE THOUSAND, SEVEN HUNDRED NINETY-EIGHT TEN-THOUSANDTHS
THREE THOUSAND, EIGHT HUNDRED SEVENTY-FIFTH AND FIVE THOUSAND, SEVEN HUNDRED NINETY-EIGHT TEN-THOUSANDTHS
( run in 2.035 seconds using v1.01-cache-2.11-cpan-b301d465b3d )