class ActiveSupport::NumberHelperI18nTest

Public Instance Methods

setup() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 11
def setup
  I18n.backend.store_translations "ts",
    number: {
    format: { precision: 3, delimiter: ",", separator: ".", significant: false, strip_insignificant_zeros: false },
    currency: { format: { unit: "&$", format: "%u - %n", negative_format: "(%u - %n)", precision: 2 } },
    human: {
      format: {
        precision: 2,
        significant: true,
        strip_insignificant_zeros: true
      },
      storage_units: {
        format: "%n %u",
        units: {
          byte: "b",
          kb: "k"
        }
      },
      decimal_units: {
        format: "%n %u",
        units: {
          deci: { one: "Tenth", other: "Tenths" },
          unit: "u",
          ten: { one: "Ten", other: "Tens" },
          thousand: "t",
          million: "m",
          billion: "b",
          trillion: "t" ,
          quadrillion: "q"
        }
      }
    },
    percentage: { format: { delimiter: "", precision: 2, strip_insignificant_zeros: true } },
    precision: { format: { delimiter: "", significant: true } }
  },
  custom_units_for_number_to_human: { mili: "mm", centi: "cm", deci: "dm", unit: "m", ten: "dam", hundred: "hm", thousand: "km" }
end
teardown() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 49
def teardown
  I18n.backend.reload!
end
test_locale_default_format_has_precedence_over_helper_defaults() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 64
def test_locale_default_format_has_precedence_over_helper_defaults
  I18n.backend.store_translations "ts",
    number: { format: { separator: ";" } }

  assert_equal("&$ - 10;00", number_to_currency(10, locale: "ts"))
end
test_number_to_currency_with_empty_i18n_store() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 59
def test_number_to_currency_with_empty_i18n_store
  assert_equal("$10.00", number_to_currency(10, locale: "empty"))
  assert_equal("-$10.00", number_to_currency(-10, locale: "empty"))
end
test_number_to_currency_without_currency_negative_format() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 71
def test_number_to_currency_without_currency_negative_format
  I18n.backend.store_translations "no_negative_format", number: {
    currency: { format: { unit: "@", format: "%n %u" } }
  }

  assert_equal("-10.00 @", number_to_currency(-10, locale: "no_negative_format"))
end
test_number_to_human_with_custom_translation_scope() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 146
def test_number_to_human_with_custom_translation_scope
  #Significant was set to true with precision 2, with custom translated units
  assert_equal "4.3 cm", number_to_human(0.0432, locale: "ts", units: :custom_units_for_number_to_human)
end
test_number_to_human_with_default_translation_scope() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 127
def test_number_to_human_with_default_translation_scope
  #Using t for thousand
  assert_equal "2 t", number_to_human(2000, locale: "ts")
  #Significant was set to true with precision 2, using b for billion
  assert_equal "1.2 b", number_to_human(1234567890, locale: "ts")
  #Using pluralization (Ten/Tens and Tenth/Tenths)
  assert_equal "1 Tenth", number_to_human(0.1, locale: "ts")
  assert_equal "1.3 Tenth", number_to_human(0.134, locale: "ts")
  assert_equal "2 Tenths", number_to_human(0.2, locale: "ts")
  assert_equal "1 Ten", number_to_human(10, locale: "ts")
  assert_equal "1.2 Ten", number_to_human(12, locale: "ts")
  assert_equal "2 Tens", number_to_human(20, locale: "ts")
end
test_number_to_human_with_empty_i18n_store() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 141
def test_number_to_human_with_empty_i18n_store
  assert_equal "2 Thousand", number_to_human(2000, locale: "empty")
  assert_equal "1.23 Billion", number_to_human(1234567890, locale: "empty")
end
test_number_to_i18n_currency() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 53
def test_number_to_i18n_currency
  assert_equal("&$ - 10.00", number_to_currency(10, locale: "ts"))
  assert_equal("(&$ - 10.00)", number_to_currency(-10, locale: "ts"))
  assert_equal("-10.00 - &$", number_to_currency(-10, locale: "ts", format: "%n - %u"))
end
test_number_to_i18n_human_size() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 116
def test_number_to_i18n_human_size
  #b for bytes and k for kbytes
  assert_equal("2 k", number_to_human_size(2048, locale: "ts"))
  assert_equal("42 b", number_to_human_size(42, locale: "ts"))
end
test_number_to_i18n_human_size_with_empty_i18n_store() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 122
def test_number_to_i18n_human_size_with_empty_i18n_store
  assert_equal("2 KB", number_to_human_size(2048, locale: "empty"))
  assert_equal("42 Bytes", number_to_human_size(42, locale: "empty"))
end
test_number_to_i18n_percentage() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 101
def test_number_to_i18n_percentage
  # to see if strip_insignificant_zeros is true
  assert_equal("1%", number_to_percentage(1, locale: "ts"))
  # precision is 2, significant should be inherited
  assert_equal("1.24%", number_to_percentage(1.2434, locale: "ts"))
  # no delimiter
  assert_equal("12434%", number_to_percentage(12434, locale: "ts"))
end
test_number_to_i18n_percentage_and_empty_i18n_store() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 110
def test_number_to_i18n_percentage_and_empty_i18n_store
  assert_equal("1.000%", number_to_percentage(1, locale: "empty"))
  assert_equal("1.243%", number_to_percentage(1.2434, locale: "empty"))
  assert_equal("12434.000%", number_to_percentage(12434, locale: "empty"))
end
test_number_with_i18n_delimiter() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 92
def test_number_with_i18n_delimiter
  #Delimiter "," and separator "."
  assert_equal("1,000,000.234", number_to_delimited(1000000.234, locale: "ts"))
end
test_number_with_i18n_delimiter_and_empty_i18n_store() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 97
def test_number_with_i18n_delimiter_and_empty_i18n_store
  assert_equal("1,000,000.234", number_to_delimited(1000000.234, locale: "empty"))
end
test_number_with_i18n_precision() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 79
def test_number_with_i18n_precision
  #Delimiter was set to ""
  assert_equal("10000", number_to_rounded(10000, locale: "ts"))

  #Precision inherited and significant was set
  assert_equal("1.00", number_to_rounded(1.0, locale: "ts"))
end
test_number_with_i18n_precision_and_empty_i18n_store() click to toggle source
# File activesupport/test/number_helper_i18n_test.rb, line 87
def test_number_with_i18n_precision_and_empty_i18n_store
  assert_equal("123456789.123", number_to_rounded(123456789.123456789, locale: "empty"))
  assert_equal("1.000", number_to_rounded(1.0000, locale: "empty"))
end