def test_currency_display_code(self): # Outputs here were determined by comparing with Javascrpt # Intl.NumberFormat in Firefox. cur_pos_code = fluent_number(self.cur_pos, currencyDisplay="code") cur_neg_code = fluent_number(self.cur_neg, currencyDisplay="code") self.assertEqual(cur_pos_code.format(self.locale), "USD123,456.78") self.assertEqual(cur_neg_code.format(self.locale), "-USD123,456.78")
def setUp(self): self.cur_pos = fluent_number(123456.78123, currency='USD', style='currency') self.cur_neg = fluent_number(-123456.78123, currency='USD', style='currency')
def test_maximum_significant_digits(self): f1 = fluent_number(123456, maximumSignificantDigits=3) self.assertEqual(f1.format(self.locale), "123,000") f2 = fluent_number(12.3456, maximumSignificantDigits=3) self.assertEqual(f2.format(self.locale), "12.3") f3 = fluent_number(12, maximumSignificantDigits=5) self.assertEqual(f3.format(self.locale), "12")
def test_use_grouping(self): f1 = fluent_number(123456.78, useGrouping=True) f2 = fluent_number(123456.78, useGrouping=False) self.assertEqual(f1.format(self.locale), "123,456.78") self.assertEqual(f2.format(self.locale), "123456.78") # ensure we didn't mutate anything when we created the new # NumberPattern: self.assertEqual(f1.format(self.locale), "123,456.78")
def test_currency_display_name(self): cur_pos_name = fluent_number(self.cur_pos, currencyDisplay="name") cur_neg_name = fluent_number(self.cur_neg, currencyDisplay="name") self.assertEqual(cur_pos_name.format(self.locale), "123,456.78 US dollars") self.assertEqual(cur_neg_name.format(self.locale), "-123,456.78 US dollars") # Some others locales: hr_BA = Locale.parse('hr_BA') self.assertEqual(cur_pos_name.format(hr_BA), "123.456,78 američkih dolara") es_GT = Locale.parse('es_GT') self.assertEqual(cur_pos_name.format(es_GT), "dólares estadounidenses 123,456.78")
def test_copy_attributes(self): f1 = fluent_number(123456.78, useGrouping=False) self.assertEqual(f1.options.useGrouping, False) # Check we didn't mutate anything self.assertIs(FluentNumber.default_number_format_options.useGrouping, True) f2 = fluent_number(f1, style="percent") self.assertEqual(f2.options.style, "percent") # Check we copied self.assertEqual(f2.options.useGrouping, False) # and didn't mutate anything self.assertEqual(f1.options.style, "decimal") self.assertEqual(FluentNumber.default_number_format_options.style, "decimal")
def test_currency_display(self): val, errs = self.bundle.format( 'currency-name', {'arg': fluent_number(1234.56, style="currency", currency="USD")}) self.assertEqual(val, "1,234.56 US dollars") self.assertEqual(errs, []) # Check we can use other options val, errs = self.bundle.format( 'currency-name', { 'arg': fluent_number( 1234.56, style="currency", currency="USD", useGrouping=False, ) }) self.assertEqual(val, "1234.56 US dollars")
def test_percent_style(self): val, errs = self.bundle.format( 'from-arg', {'arg': fluent_number(1.234, style="percent")}) self.assertEqual(val, "123%") self.assertEqual(errs, [])
def test_use_grouping_decimal(self): d = Decimal('123456.78') f1 = fluent_number(d, useGrouping=True) f2 = fluent_number(d, useGrouping=False) self.assertEqual(f1.format(self.locale), "123,456.78") self.assertEqual(f2.format(self.locale), "123456.78")
def test_partial_application(self): number = fluent_number(123456.78, currency="USD", style="currency") val, errs = self.bundle.format('from-arg', {'arg': number}) self.assertEqual(val, "$123,456.78") self.assertEqual(errs, [])
def test_merge_params(self): number = fluent_number(123456.78, currency="USD", style="currency") val, errs = self.bundle.format('merge-params', {'arg': number}) self.assertEqual(val, "$123456.78") self.assertEqual(errs, [])
def test_args_passed_as_numbers(self): val, errs = self.bundle.format('pass-arg', {'arg': 1}) self.assertEqual(val, "1") self.assertEqual(errs, []) self.assertEqual(self.args_passed, [1]) self.assertEqual(self.args_passed, [fluent_number(1)])
def test_literals_passed_as_numbers(self): val, errs = self.bundle.format('pass-number', {}) self.assertEqual(val, "1") self.assertEqual(errs, []) self.assertEqual(self.args_passed, [1]) self.assertEqual(self.args_passed, [fluent_number(1)])
def test_maximum_fraction_digits(self): f1 = fluent_number(1.23456) self.assertEqual(f1.format(self.locale), "1.235") f2 = fluent_number(1.23456123, maximumFractionDigits=5) self.assertEqual(f2.format(self.locale), "1.23456")
def test_minimum_significant_digits(self): f1 = fluent_number(123, minimumSignificantDigits=5) self.assertEqual(f1.format(self.locale), "123.00") f2 = fluent_number(12.3, minimumSignificantDigits=5) self.assertEqual(f2.format(self.locale), "12.300")
def test_minimum_integer_digits_decimal(self): f = fluent_number(Decimal('1.23'), minimumIntegerDigits=3) self.assertEqual(f.format(self.locale), "001.23")
def test_minimum_fraction_digits(self): f = fluent_number(1.2, minimumFractionDigits=3) self.assertEqual(f.format(self.locale), "1.200")
def test_currency_display_symbol(self): cur_pos_sym = fluent_number(self.cur_pos, currencyDisplay="symbol") cur_neg_sym = fluent_number(self.cur_neg, currencyDisplay="symbol") self.assertEqual(cur_pos_sym.format(self.locale), "$123,456.78") self.assertEqual(cur_neg_sym.format(self.locale), "-$123,456.78")
def currency(amount, *args, **kwargs): return fluent_number(amount, *args, currency='USD', style='currency', **kwargs)
def test_decimal(self): d = Decimal('1.1') self.assertTrue(isinstance(fluent_number(d), Decimal)) self.assertTrue(isinstance(fluent_number(d), FluentNumber)) self.assertEqual(d + 1, Decimal('2.1'))
def test_float(self): f = fluent_number(1.1) self.assertTrue(isinstance(f, float)) self.assertTrue(isinstance(f, FluentNumber)) self.assertEqual(f + 1, 2.1)
def test_int(self): i = fluent_number(1) self.assertTrue(isinstance(i, int)) self.assertTrue(isinstance(i, FluentNumber)) self.assertEqual(i + 1, 2)