use utf8;
use strict;
use warnings;
use open qw( :encoding(UTF-8) :std );
use Test::More tests => 23;
use CLDR::Number;
my $cldr = CLDR::Number->new;
my $decf = $cldr->decimal_formatter;
is $decf->minimum_integer_digits, 1, 'default (root) min integer digits';
is $decf->minimum_fraction_digits, 0, 'default (root) min fraction digits';
is $decf->maximum_fraction_digits, 3, 'default (root) max fraction digits';
is $decf->format(7.7777), '7.778', 'fraction greater than max';
$decf->minimum_fraction_digits(2);
is $decf->minimum_fraction_digits, 2, 'updated min fraction digits';
is $decf->maximum_fraction_digits, 3, 'max fraction digits remains same';
is $decf->format(5), '5.00', 'fraction less than min';
$decf->maximum_fraction_digits(1);
is $decf->maximum_fraction_digits, 1, 'updated max fraction digits';
is $decf->minimum_fraction_digits, 1, 'min fraction becomes max if max < min';
is $decf->format(5), '5.0', 'fraction less than min';
is $decf->format(7.77), '7.8', 'fraction greater than max';
$decf->minimum_fraction_digits(3);
is $decf->minimum_fraction_digits, 3, 'updated min fraction digits';
is $decf->maximum_fraction_digits, 3, 'max fraction becomes min if min > max';
is $decf->format(5), '5.000', 'fraction less than min';
is $decf->format(7.7777), '7.778', 'fraction greater than max';
$decf = $cldr->decimal_formatter(
minimum_integer_digits => 2,
minimum_fraction_digits => 1,
maximum_fraction_digits => 2,
);
is $decf->minimum_integer_digits, 2, 'set min integer digits on create';
is $decf->minimum_fraction_digits, 1, 'set min fraction digits on create';
is $decf->maximum_fraction_digits, 2, 'set max fraction digits on create';
is $decf->format(5), '05.0', 'integer less than min';
my $curf = $cldr->currency_formatter(locale => 'en', currency_code => 'USD');
is $curf->minimum_fraction_digits, 2, 'default currency min fraction digits';
is $curf->maximum_fraction_digits, 2, 'default currency max fraction digits';
is $curf->format(5), '$5.00', 'fraction less than min';
is $curf->format(7.777), '$7.78', 'fraction greater than max';