PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/bundle/ruby/1.9.1/gems/i18n-0.6.0/test/locale/tag/rfc4646_test.rb

https://bitbucket.org/mulligan/extractext
Ruby | 142 lines | 104 code | 29 blank | 9 comment | 1 complexity | d8a9a8030f7219149727ca20ed71edd0 MD5 | raw file
Possible License(s): Apache-2.0, MIT, GPL-3.0, GPL-2.0, BSD-3-Clause, MPL-2.0-no-copyleft-exception, BSD-2-Clause, JSON
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class I18nLocaleTagRfc4646ParserTest < Test::Unit::TestCase
  4. include I18n::Locale
  5. test "Rfc4646::Parser given a valid tag 'de' returns an array of subtags" do
  6. assert_equal ['de', nil, nil, nil, nil, nil, nil], Tag::Rfc4646::Parser.match('de')
  7. end
  8. test "Rfc4646::Parser given a valid tag 'de-DE' returns an array of subtags" do
  9. assert_equal ['de', nil, 'DE', nil, nil, nil, nil], Tag::Rfc4646::Parser.match('de-DE')
  10. end
  11. test "Rfc4646::Parser given a valid lowercase tag 'de-latn-de-variant-x-phonebk' returns an array of subtags" do
  12. assert_equal ['de', 'latn', 'de', 'variant', nil, 'x-phonebk', nil], Tag::Rfc4646::Parser.match('de-latn-de-variant-x-phonebk')
  13. end
  14. test "Rfc4646::Parser given a valid uppercase tag 'DE-LATN-DE-VARIANT-X-PHONEBK' returns an array of subtags" do
  15. assert_equal ['DE', 'LATN', 'DE', 'VARIANT', nil, 'X-PHONEBK', nil], Tag::Rfc4646::Parser.match('DE-LATN-DE-VARIANT-X-PHONEBK')
  16. end
  17. test "Rfc4646::Parser given an invalid tag 'a-DE' it returns false" do
  18. assert_equal false, Tag::Rfc4646::Parser.match('a-DE')
  19. end
  20. test "Rfc4646::Parser given an invalid tag 'de-419-DE' it returns false" do
  21. assert_equal false, Tag::Rfc4646::Parser.match('de-419-DE')
  22. end
  23. end
  24. # Tag for the locale 'de-Latn-DE-Variant-a-ext-x-phonebk-i-klingon'
  25. class I18nLocaleTagSubtagsTest < Test::Unit::TestCase
  26. include I18n::Locale
  27. def setup
  28. subtags = %w(de Latn DE variant a-ext x-phonebk i-klingon)
  29. @tag = Tag::Rfc4646.new(*subtags)
  30. end
  31. test "returns 'de' as the language subtag in lowercase" do
  32. assert_equal 'de', @tag.language
  33. end
  34. test "returns 'Latn' as the script subtag in titlecase" do
  35. assert_equal 'Latn', @tag.script
  36. end
  37. test "returns 'DE' as the region subtag in uppercase" do
  38. assert_equal 'DE', @tag.region
  39. end
  40. test "returns 'variant' as the variant subtag in lowercase" do
  41. assert_equal 'variant', @tag.variant
  42. end
  43. test "returns 'a-ext' as the extension subtag" do
  44. assert_equal 'a-ext', @tag.extension
  45. end
  46. test "returns 'x-phonebk' as the privateuse subtag" do
  47. assert_equal 'x-phonebk', @tag.privateuse
  48. end
  49. test "returns 'i-klingon' as the grandfathered subtag" do
  50. assert_equal 'i-klingon', @tag.grandfathered
  51. end
  52. test "returns a formatted tag string from #to_s" do
  53. assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon', @tag.to_s
  54. end
  55. test "returns an array containing the formatted subtags from #to_a" do
  56. assert_equal %w(de Latn DE variant a-ext x-phonebk i-klingon), @tag.to_a
  57. end
  58. end
  59. # Tag inheritance
  60. class I18nLocaleTagSubtagsTest < Test::Unit::TestCase
  61. test "#parent returns 'de-Latn-DE-variant-a-ext-x-phonebk' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do
  62. tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk i-klingon))
  63. assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk', tag.parent.to_s
  64. end
  65. test "#parent returns 'de-Latn-DE-variant-a-ext' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk'" do
  66. tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk))
  67. assert_equal 'de-Latn-DE-variant-a-ext', tag.parent.to_s
  68. end
  69. test "#parent returns 'de-Latn-DE-variant' as the parent of 'de-Latn-DE-variant-a-ext'" do
  70. tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext))
  71. assert_equal 'de-Latn-DE-variant', tag.parent.to_s
  72. end
  73. test "#parent returns 'de-Latn-DE' as the parent of 'de-Latn-DE-variant'" do
  74. tag = Tag::Rfc4646.new(*%w(de Latn DE variant))
  75. assert_equal 'de-Latn-DE', tag.parent.to_s
  76. end
  77. test "#parent returns 'de-Latn' as the parent of 'de-Latn-DE'" do
  78. tag = Tag::Rfc4646.new(*%w(de Latn DE))
  79. assert_equal 'de-Latn', tag.parent.to_s
  80. end
  81. test "#parent returns 'de' as the parent of 'de-Latn'" do
  82. tag = Tag::Rfc4646.new(*%w(de Latn))
  83. assert_equal 'de', tag.parent.to_s
  84. end
  85. # TODO RFC4647 says: "If no language tag matches the request, the "default" value is returned."
  86. # where should we set the default language?
  87. # test "#parent returns '' as the parent of 'de'" do
  88. # tag = Tag::Rfc4646.new *%w(de)
  89. # assert_equal '', tag.parent.to_s
  90. # end
  91. test "#parent returns an array of 5 parents for 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do
  92. parents = %w(de-Latn-DE-variant-a-ext-x-phonebk-i-klingon
  93. de-Latn-DE-variant-a-ext-x-phonebk
  94. de-Latn-DE-variant-a-ext
  95. de-Latn-DE-variant
  96. de-Latn-DE
  97. de-Latn
  98. de)
  99. tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk i-klingon))
  100. assert_equal parents, tag.self_and_parents.map(&:to_s)
  101. end
  102. test "returns an array of 5 parents for 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do
  103. parents = %w(de-Latn-DE-variant-a-ext-x-phonebk-i-klingon
  104. de-Latn-DE-variant-a-ext-x-phonebk
  105. de-Latn-DE-variant-a-ext
  106. de-Latn-DE-variant
  107. de-Latn-DE
  108. de-Latn
  109. de)
  110. tag = Tag::Rfc4646.new(*%w(de Latn DE variant a-ext x-phonebk i-klingon))
  111. assert_equal parents, tag.self_and_parents.map(&:to_s)
  112. end
  113. end