Lingua-Conlang-Numbers

 view release on metacpan or  search on metacpan

t/eo.t  view on Meta::CPAN

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 )