Lingua-Conlang-Numbers
view release on metacpan or search on metacpan
binmode $builder->failure_output, ':utf8';
binmode $builder->todo_output, ':utf8';
use ok 'Lingua::EO::Numbers', qw( :all );
are_num2eo(
# integers
[ -9, 'negativa naÅ' ],
[ 0, 'nul' ],
[ 9, 'naÅ' ],
[ 10, 'dek' ],
[ 90, 'naÅdek' ],
[ 99, 'naÅdek naÅ' ],
[ 100, 'cent' ],
[ 109, 'cent naÅ' ],
[ 110, 'cent dek' ],
[ 190, 'cent naÅdek' ],
[ 900, 'naÅcent' ],
[ 1000, 'mil' ],
[ 9000, 'naÅ mil' ],
[ 10000, 'dek mil' ],
[ 11000, 'dek unu mil' ],
[ 19000, 'dek naÅ mil' ],
[ 90000, 'naÅdek mil' ],
[ 100000, 'cent mil' ],
[ 110000, 'cent dek mil' ],
[ 190000, 'cent naÅdek mil' ],
[ 900000, 'naÅcent mil' ],
[ 999999, 'naÅcent naÅdek naÅ mil naÅcent naÅdek naÅ' ],
# floating point numbers
[ -9.0, 'negativa naÅ' ],
[ -0.9, 'negativa nul komo naÅ' ],
[ 0.0, 'nul' ],
[ 0.9, 'nul komo naÅ' ],
[ 0.09, 'nul komo nul naÅ' ],
[ 0.009, 'nul komo nul nul naÅ' ],
[ 0.99, 'nul komo naÅ naÅ' ],
[ 9.0, 'naÅ' ],
[ 9.9, 'naÅ komo naÅ' ],
# strings
[ '-9' => 'negativa naÅ' ],
[ '-9,0' => 'negativa naÅ komo nul' ],
[ ',0' => 'komo nul' ],
[ '0,' => 'nul' ],
[ '0,0' => 'nul komo nul' ],
[ ',9' => 'komo naÅ' ],
[ '9' => 'naÅ' ],
[ '9,' => 'naÅ' ],
[ '+9' => 'positiva naÅ' ],
[ '+9,0' => 'positiva naÅ komo nul' ],
[ '9,0' => 'naÅ komo nul' ],
[ '9,000' => 'naÅ komo nul nul nul' ],
[ '9.9' => 'naÅ komo naÅ' ],
# special values
[ 'inf' => 'senfineco' ],
[ '+inf' => 'positiva senfineco' ],
[ '-inf' => 'negativa senfineco' ],
[ 'NaN' => 'ne nombro' ],
# large numbers
[ 1000000, 'unu miliono' ],
[ 9000000, 'naÅ milionoj' ],
[ 9900000, 'naÅ milionoj naÅcent mil' ],
[ 1000000000, 'unu miliardo' ],
[ 1000000000000, 'unu biliono' ],
[ 999999999999999, 'naÅcent naÅdek naÅ bilionoj '
. 'naÅcent naÅdek naÅ miliardoj '
. 'naÅcent naÅdek naÅ milionoj '
. 'naÅcent naÅdek naÅ mil '
. 'naÅcent naÅdek naÅ' ],
[ '1000000000000000000', 'unu triliono' ],
);
# ordinals
are_num2eo_ordinal(
[ '+9', 'positiv-naÅa' ],
[ -9, 'negativ-naÅa' ],
[ 0, 'nula' ],
[ 9, 'naÅa' ],
[ 10, 'deka' ],
[ 90, 'naÅdeka' ],
[ 99, 'naÅdek-naÅa' ],
[ 100, 'centa' ],
[ 109, 'cent-naÅa' ],
[ 110, 'cent-deka' ],
[ 190, 'cent-naÅdeka' ],
[ 900, 'naÅcenta' ],
[ 1000, 'mila' ],
[ 9000, 'naÅ-mila' ],
[ 10000, 'dek-mila' ],
[ 11000, 'dek-unu-mila' ],
[ 19000, 'dek-naÅ-mila' ],
[ 90000, 'naÅdek-mila' ],
[ 100000, 'cent-mila' ],
[ 110000, 'cent-dek-mila' ],
[ 190000, 'cent-naÅdek-mila' ],
[ 900000, 'naÅcent-mila' ],
[ 999999, 'naÅcent-naÅdek-naÅ-mil-naÅcent-naÅdek-naÅa' ],
# large numbers
[ 1000000, 'unu-miliona' ],
[ 9000000, 'naÅ-miliona' ],
[ 9900000, 'naÅ-milion-naÅcent-mila' ],
[ 1000000000, 'unu-miliarda' ],
[ 1000000000000, 'unu-biliona' ],
[ 999999999999999, 'naÅcent-naÅdek-naÅ-bilion-'
. 'naÅcent-naÅdek-naÅ-miliard-'
. 'naÅcent-naÅdek-naÅ-milion-'
. 'naÅcent-naÅdek-naÅ-mil-'
. 'naÅcent-naÅdek-naÅa' ],
[ '1000000000000000000', 'unu-triliona' ],
);
# negative tests
ok !num2eo(undef), 'undef fails';
ok !num2eo( q{} ), 'empty string fails';
for my $test ('abc', '1a', 'a1', '1.2.3', '1,2,3') {
ok !num2eo($test), "$test fails";
( run in 0.497 second using v1.01-cache-2.11-cpan-98e64b0badf )