locale 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. data/ChangeLog +6 -0
  2. data/Rakefile +82 -80
  3. data/lib/locale/driver/jruby.rb +4 -10
  4. data/lib/locale/driver/win32.rb +25 -6
  5. data/lib/locale/tag/irregular.rb +1 -1
  6. data/lib/locale/version.rb +1 -1
  7. data/test/test_driver_jruby.rb +43 -0
  8. data/test/test_driver_win32.rb +65 -0
  9. data/test/test_tag.rb +181 -120
  10. metadata +4 -76
  11. data/benchmark/benchmark.rb +0 -34
  12. data/benchmark/benchmark_2.0.1.txt +0 -7
  13. data/doc/classes/Locale.html +0 -1244
  14. data/doc/classes/Locale/Driver.html +0 -374
  15. data/doc/classes/Locale/Driver/CGI.html +0 -536
  16. data/doc/classes/Locale/Driver/Env.html +0 -439
  17. data/doc/classes/Locale/Driver/JRuby.html +0 -389
  18. data/doc/classes/Locale/Driver/Posix.html +0 -430
  19. data/doc/classes/Locale/Driver/Win32.html +0 -398
  20. data/doc/classes/Locale/Driver/Win32Table.html +0 -355
  21. data/doc/classes/Locale/Info.html +0 -585
  22. data/doc/classes/Locale/Info/Language.html +0 -763
  23. data/doc/classes/Locale/Info/Region.html +0 -470
  24. data/doc/classes/Locale/Tag.html +0 -433
  25. data/doc/classes/Locale/Tag/Cldr.html +0 -523
  26. data/doc/classes/Locale/Tag/Common.html +0 -624
  27. data/doc/classes/Locale/Tag/Irregular.html +0 -423
  28. data/doc/classes/Locale/Tag/Posix.html +0 -612
  29. data/doc/classes/Locale/Tag/Rfc.html +0 -581
  30. data/doc/classes/Locale/Tag/Simple.html +0 -721
  31. data/doc/classes/Locale/TagList.html +0 -826
  32. data/doc/classes/Locale/Util.html +0 -506
  33. data/doc/classes/Locale/Util/Memoizable.html +0 -355
  34. data/doc/created.rid +0 -1
  35. data/doc/files/ChangeLog.html +0 -537
  36. data/doc/files/README_rdoc.html +0 -565
  37. data/doc/files/lib/locale/driver/cgi_rb.html +0 -341
  38. data/doc/files/lib/locale/driver/env_rb.html +0 -353
  39. data/doc/files/lib/locale/driver/jruby_rb.html +0 -353
  40. data/doc/files/lib/locale/driver/posix_rb.html +0 -341
  41. data/doc/files/lib/locale/driver/win32_rb.html +0 -348
  42. data/doc/files/lib/locale/driver/win32_table_rb.html +0 -341
  43. data/doc/files/lib/locale/info/language_rb.html +0 -352
  44. data/doc/files/lib/locale/info/region_rb.html +0 -352
  45. data/doc/files/lib/locale/info_rb.html +0 -353
  46. data/doc/files/lib/locale/tag/cldr_rb.html +0 -348
  47. data/doc/files/lib/locale/tag/common_rb.html +0 -348
  48. data/doc/files/lib/locale/tag/irregular_rb.html +0 -348
  49. data/doc/files/lib/locale/tag/posix_rb.html +0 -341
  50. data/doc/files/lib/locale/tag/rfc_rb.html +0 -348
  51. data/doc/files/lib/locale/tag/simple_rb.html +0 -348
  52. data/doc/files/lib/locale/tag_rb.html +0 -378
  53. data/doc/files/lib/locale/taglist_rb.html +0 -348
  54. data/doc/files/lib/locale/util/memoizable_rb.html +0 -359
  55. data/doc/files/lib/locale/version_rb.html +0 -341
  56. data/doc/files/lib/locale_rb.html +0 -363
  57. data/doc/fr_class_index.html +0 -22
  58. data/doc/fr_file_index.html +0 -23
  59. data/doc/fr_method_index.html +0 -99
  60. data/doc/index.html +0 -1
  61. data/doc/rdoc-style.css +0 -320
  62. data/lib/locale/util/memoizable.rb.20090328 +0 -96
  63. data/lib/locale/util/memoizable.rb.old +0 -91
  64. data/replace.rb +0 -21
  65. data/test.rb +0 -28
  66. data/test/test.rb +0 -7
  67. data/test/tmp.txt +0 -20
  68. data/test2.rb +0 -14
  69. data/test3.rb +0 -12
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ = locale-2.0.4 (2009-05-22)
2
+ * Enhance Win32 support. [Reported by Dice]
3
+ * Enhance JRuby support
4
+ * Fixed a waring with ruby -d option.
5
+ * Update version.
6
+
1
7
  = locale-2.0.3 (2009-05-09)
2
8
  * Update version.
3
9
 
data/Rakefile CHANGED
@@ -1,80 +1,82 @@
1
- $:.unshift "./lib"
2
-
3
- require 'rake'
4
- require 'rake/testtask'
5
- require 'rake/rdoctask'
6
- require 'rake/packagetask'
7
- require 'rake/gempackagetask'
8
-
9
- require 'locale/version'
10
-
11
- #desc "Default Task"
12
- #task :default => [ :test ]
13
-
14
- PKG_VERSION = Locale::VERSION
15
-
16
- # Run the unit tests
17
- task :test do
18
- Dir.glob("test/test_*.rb").each do |v|
19
- ruby "-Ilib #{v}"
20
- end
21
- end
22
-
23
- Rake::RDocTask.new { |rdoc|
24
- begin
25
- allison = `allison --path`.chop
26
- rescue Exception
27
- allison = ""
28
- end
29
- rdoc.rdoc_dir = 'doc'
30
- rdoc.title = "Ruby-Locale library"
31
- rdoc.options << "--line-numbers" << "--inline-source" <<
32
- "--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
33
- rdoc.rdoc_files.include('README.rdoc')
34
- rdoc.rdoc_files.include('ChangeLog')
35
- rdoc.rdoc_files.add('lib')
36
- rdoc.template = allison if allison.size > 0
37
- }
38
-
39
- desc "Create gem and tar.gz"
40
- spec = Gem::Specification.new do |s|
41
- s.name = 'locale'
42
- s.version = PKG_VERSION
43
- s.summary = 'Ruby-Locale is the pure ruby library which provides basic APIs for localization.'
44
- s.author = 'Masao Mutoh'
45
- s.email = 'mutomasa at gmail.com'
46
- s.homepage = 'http://locale.rubyforge.org/'
47
- s.rubyforge_project = "locale"
48
- s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
49
- s.require_path = 'lib'
50
- s.bindir = 'bin'
51
- s.has_rdoc = true
52
- s.description = <<-EOF
53
- Ruby-Locale is the pure ruby library which provides basic APIs for localization.
54
- EOF
55
- end
56
-
57
- Rake::PackageTask.new("ruby-locale", PKG_VERSION) do |o|
58
- o.package_files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
59
- o.need_tar_gz = true
60
- o.need_zip = false
61
- end
62
-
63
- Rake::GemPackageTask.new(spec) do |p|
64
- p.gem_spec = spec
65
- p.need_tar_gz = false
66
- p.need_zip = false
67
- end
68
-
69
- desc "Publish the release files to RubyForge."
70
- task :release => [ :package ] do
71
- require 'rubyforge'
72
-
73
- rubyforge = RubyForge.new
74
- rubyforge.configure
75
- rubyforge.login
76
- rubyforge.add_release("locale", "locale",
77
- PKG_VERSION,
78
- "pkg/locale-#{PKG_VERSION}.gem",
79
- "pkg/ruby-locale-#{PKG_VERSION}.tar.gz")
80
- end
1
+ $:.unshift "./lib"
2
+
3
+ require 'rake'
4
+ require 'rake/testtask'
5
+ require 'rake/rdoctask'
6
+ require 'rake/packagetask'
7
+ require 'rake/gempackagetask'
8
+
9
+ require 'locale/version'
10
+
11
+ #desc "Default Task"
12
+ #task :default => [ :test ]
13
+
14
+ PKG_VERSION = Locale::VERSION
15
+
16
+ # Run the unit tests
17
+ task :test do
18
+ Dir.glob("test/test_*.rb").each do |v|
19
+ ruby "-Ilib #{v}"
20
+ end
21
+ end
22
+
23
+ Rake::RDocTask.new { |rdoc|
24
+ begin
25
+ allison = `allison --path`.chop
26
+ rescue Exception
27
+ allison = ""
28
+ end
29
+ rdoc.rdoc_dir = 'doc'
30
+ rdoc.title = "Ruby-Locale library"
31
+ rdoc.options << "--line-numbers" << "--inline-source" <<
32
+ "--accessor" << "cattr_accessor=object" << "--charset" << "utf-8"
33
+ rdoc.rdoc_files.include('README.rdoc')
34
+ rdoc.rdoc_files.include('ChangeLog')
35
+ rdoc.rdoc_files.add('lib')
36
+ rdoc.template = allison if allison.size > 0
37
+ }
38
+
39
+ desc "Create gem and tar.gz"
40
+ spec = Gem::Specification.new do |s|
41
+ s.name = 'locale'
42
+ s.version = PKG_VERSION
43
+ s.summary = 'Ruby-Locale is the pure ruby library which provides basic APIs for localization.'
44
+ s.author = 'Masao Mutoh'
45
+ s.email = 'mutomasa at gmail.com'
46
+ s.homepage = 'http://locale.rubyforge.org/'
47
+ s.rubyforge_project = "locale"
48
+ s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
49
+ s.require_path = 'lib'
50
+ s.bindir = 'bin'
51
+ s.has_rdoc = true
52
+ s.description = <<-EOF
53
+ Ruby-Locale is the pure ruby library which provides basic APIs for localization.
54
+ EOF
55
+ end
56
+
57
+ unless RUBY_PLATFORM =~ /win32/
58
+ Rake::PackageTask.new("ruby-locale", PKG_VERSION) do |o|
59
+ o.package_files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
60
+ o.need_tar_gz = true
61
+ o.need_zip = false
62
+ end
63
+ end
64
+
65
+ Rake::GemPackageTask.new(spec) do |p|
66
+ p.gem_spec = spec
67
+ p.need_tar_gz = false
68
+ p.need_zip = false
69
+ end
70
+
71
+ desc "Publish the release files to RubyForge."
72
+ task :release => [ :package ] do
73
+ require 'rubyforge'
74
+
75
+ rubyforge = RubyForge.new
76
+ rubyforge.configure
77
+ rubyforge.login
78
+ rubyforge.add_release("locale", "locale",
79
+ PKG_VERSION,
80
+ "pkg/locale-#{PKG_VERSION}.gem",
81
+ "pkg/ruby-locale-#{PKG_VERSION}.tar.gz")
82
+ end
@@ -22,21 +22,15 @@ module Locale
22
22
  module JRuby
23
23
  $stderr.puts self.name + " is loaded." if $DEBUG
24
24
 
25
- if java.lang.System.getProperties['os.name'].downcase =~ /windows/
26
- require 'locale/driver/win32_table'
27
-
28
- extend ::Locale::Driver::Win32Table
29
- end
30
-
31
25
  module_function
32
26
  def locales #:nodoc:
33
27
  locales = ::Locale::Driver::Env.locales
34
28
  unless locales
35
29
  locale = java.util.Locale.getDefault
36
- variant = Locale.getVariant
30
+ variant = locale.getVariant
37
31
  variants = []
38
- if valiant != nil and variant.size > 0
39
- valiants = [valiant]
32
+ if variant != nil and variant.size > 0
33
+ variants = [variant]
40
34
  end
41
35
  locales = TagList.new([Locale::Tag::Common.new(locale.getLanguage, nil,
42
36
  locale.getCountry,
@@ -45,7 +39,7 @@ module Locale
45
39
  locales
46
40
  end
47
41
 
48
- def charset
42
+ def charset #:nodoc:
49
43
  charset = ::Locale::Driver::Env.charset
50
44
  unless charset
51
45
  charset = java.nio.charset.Charset.defaultCharset.name
@@ -26,7 +26,8 @@ module Locale
26
26
 
27
27
  $stderr.puts self.name + " is loaded." if $DEBUG
28
28
 
29
- @@win32 = Win32API.new("kernel32.dll", "GetUserDefaultLangID", nil, "i")
29
+ @@win32 = nil
30
+ @@current_locale_id = nil
30
31
 
31
32
  module_function
32
33
 
@@ -34,18 +35,36 @@ module Locale
34
35
  def charset
35
36
  charset = ::Locale::Driver::Env.charset
36
37
  unless charset
37
- locale = locales[0]
38
- loc = LocaleTable.find{|v| v[1] =locale.to_rfc}
39
- loc = LocaleTable.find{|v| v[1] =~ /^#{locale.language}-/} unless loc
40
- charset = loc ? loc[2] : nil
38
+ if locales
39
+ tag = locales[0].to_rfc.to_s
40
+ loc = LocaleTable.find{|v| v[1] == tag}
41
+ loc = LocaleTable.find{|v| v[1] =~ /^#{locales[0].language}/} unless loc
42
+ charset = loc ? loc[2] : nil
43
+ else
44
+ charset = "CP1252"
45
+ end
41
46
  end
42
47
  charset
43
48
  end
44
49
 
50
+ def thread_locale_id #:nodoc:
51
+ if @@current_locale_id
52
+ @@current_locale_id
53
+ else
54
+ @@win32 ||= Win32API.new("kernel32.dll", "GetThreadLocale", nil, "i")
55
+ @@win32.call
56
+ end
57
+ end
58
+
59
+ def set_thread_locale_id(lcid) #:nodoc:
60
+ # for testing.
61
+ @@current_locale_id = lcid
62
+ end
63
+
45
64
  def locales #:nodoc:
46
65
  locales = ::Locale::Driver::Env.locales
47
66
  unless locales
48
- lang = LocaleTable.assoc(@@win32.call)
67
+ lang = LocaleTable.assoc(thread_locale_id)
49
68
  if lang
50
69
  ret = Locale::Tag::Common.parse(lang[1])
51
70
  locales = Locale::TagList.new([ret])
@@ -19,7 +19,7 @@ module Locale
19
19
 
20
20
  def initialize(tag)
21
21
  tag = "en" if tag == nil or tag == ""
22
- @language = tag
22
+ super(tag.to_s)
23
23
  @tag = tag
24
24
  end
25
25
 
@@ -7,6 +7,6 @@
7
7
  license terms as Ruby.
8
8
  =end
9
9
  module Locale
10
- VERSION = "2.0.3"
10
+ VERSION = "2.0.4"
11
11
  end
12
12
 
@@ -0,0 +1,43 @@
1
+
2
+ begin
3
+ require 'locale/driver/jruby'
4
+ require 'test/unit'
5
+ class TestDiverJRuby < Test::Unit::TestCase
6
+
7
+ def setup
8
+ ENV["LC_ALL"] = nil
9
+ ENV["LC_MESSAGES"] = nil
10
+ ENV["LANG"] = nil
11
+ ENV["LANGUAGE"] = nil
12
+ end
13
+
14
+ def set_locale(tag)
15
+ java.util.Locale.setDefault(java.util.Locale.new(tag.language, tag.region, tag.variants.to_s))
16
+ end
17
+
18
+ def test_charset
19
+ # Depends on system value when jvm is started.
20
+ end
21
+
22
+ def test_locales
23
+ tag = Locale::Tag::Common.parse("ja-JP")
24
+ set_locale(tag)
25
+ assert_equal [tag], Locale::Driver::JRuby.locales
26
+ end
27
+
28
+ def test_locales_with_env
29
+ ENV["LC_ALL"] = "ja_JP.EUC-JP"
30
+ assert_equal Locale::Tag::Posix.parse("ja_JP.EUC-JP"), Locale::Driver::JRuby.locales[0]
31
+ assert_equal "EUC-JP", Locale::Driver::JRuby.charset
32
+
33
+ ENV["LC_ALL"] = "ja_JP"
34
+ assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale::Driver::JRuby.locales[0]
35
+
36
+ ENV["LC_ALL"] = "C"
37
+ assert_equal Locale::Tag::Posix.parse("C"), Locale::Driver::JRuby.locales[0]
38
+ end
39
+ end
40
+
41
+ rescue LoadError
42
+ puts "jruby test was skipped."
43
+ end
@@ -0,0 +1,65 @@
1
+ begin
2
+ require 'locale/driver/win32'
3
+ require 'test/unit'
4
+
5
+ class TestDiverWin32 < Test::Unit::TestCase
6
+
7
+ def setup
8
+ ENV["LC_ALL"] = nil
9
+ ENV["LC_MESSAGES"] = nil
10
+ ENV["LANG"] = nil
11
+ ENV["LANGUAGE"] = nil
12
+ Locale::Driver::Win32.set_thread_locale_id(nil)
13
+ end
14
+
15
+ def test_charset
16
+ Locale::Driver::Win32.set_thread_locale_id(0x0404)
17
+ assert_equal "CP950", Locale::Driver::Win32.charset
18
+
19
+ Locale::Driver::Win32.set_thread_locale_id(0x0411)
20
+ assert_equal "CP932", Locale::Driver::Win32.charset
21
+
22
+ Locale::Driver::Win32.set_thread_locale_id(0x201A)
23
+ assert_equal "CP1251", Locale::Driver::Win32.charset
24
+
25
+ Locale::Driver::Win32.set_thread_locale_id(0x0465)
26
+ assert_equal "UNICODE", Locale::Driver::Win32.charset
27
+
28
+ Locale::Driver::Win32.set_thread_locale_id(0x2222) # invalid
29
+ assert_equal "CP1252", Locale::Driver::Win32.charset
30
+ end
31
+
32
+ def test_locales
33
+ Locale::Driver::Win32.set_thread_locale_id(0x0404)
34
+ assert_equal Locale::Tag::Common.parse("zh-TW"), Locale::Driver::Win32.locales[0]
35
+
36
+ Locale::Driver::Win32.set_thread_locale_id(0x0411)
37
+ assert_equal Locale::Tag::Common.parse("ja-JP"), Locale::Driver::Win32.locales[0]
38
+
39
+ Locale::Driver::Win32.set_thread_locale_id(0x201A)
40
+ assert_equal Locale::Tag::Common.parse("bs-Cyrl-BA"), Locale::Driver::Win32.locales[0]
41
+
42
+ Locale::Driver::Win32.set_thread_locale_id(0x0465)
43
+ assert_equal Locale::Tag::Common.parse("div-MV"), Locale::Driver::Win32.locales[0]
44
+
45
+ Locale::Driver::Win32.set_thread_locale_id(0x2222) # invalid
46
+ assert_equal nil, Locale::Driver::Win32.locales
47
+ end
48
+
49
+ def test_locales_with_env
50
+ ENV["LC_ALL"] = "ja_JP.UTF-8"
51
+ assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), Locale::Driver::Win32.locales[0]
52
+ assert_equal "UTF-8", Locale::Driver::Win32.charset
53
+
54
+ ENV["LC_ALL"] = "ja_JP"
55
+ assert_equal Locale::Tag::Posix.parse("ja_JP"), Locale::Driver::Win32.locales[0]
56
+ assert_equal "CP932", Locale::Driver::Win32.charset
57
+
58
+ ENV["LC_ALL"] = "C"
59
+ assert_equal Locale::Tag::Posix.parse("C"), Locale::Driver::Win32.locales[0]
60
+ assert_equal "CP1252", Locale::Driver::Win32.charset
61
+ end
62
+ end
63
+ rescue LoadError
64
+ puts "win32 test was skipped."
65
+ end
data/test/test_tag.rb CHANGED
@@ -3,7 +3,7 @@ require 'test/unit'
3
3
 
4
4
  class TagTest < Test::Unit::TestCase
5
5
 
6
- def test_simple
6
+ def test_simple_lang
7
7
  #ja-JP, ja-392
8
8
  lang = Locale::Tag.parse("ja")
9
9
  assert_equal Locale::Tag::Simple, lang.class
@@ -23,14 +23,16 @@ class TagTest < Test::Unit::TestCase
23
23
  assert_equal "kok", lang.language
24
24
  assert_equal nil, lang.region
25
25
  assert_equal [Locale::Tag::Simple.parse("kok"),
26
- Locale::Tag::Simple.parse("kok")], lang.candidates
27
-
26
+ Locale::Tag::Simple.parse("kok")], lang.candidates
27
+
28
28
  assert_equal Locale::Tag::Simple.parse("kok"), lang.to_simple
29
29
  assert_equal Locale::Tag::Common.parse("kok"), lang.to_common
30
30
  assert_equal Locale::Tag::Rfc.parse("kok"), lang.to_rfc
31
31
  assert_equal Locale::Tag::Cldr.parse("kok"), lang.to_cldr
32
32
  assert_equal Locale::Tag::Posix.parse("kok"), lang.to_posix
33
+ end
33
34
 
35
+ def test_simple_lang_region
34
36
  lang = Locale::Tag.parse("ja-JP")
35
37
  assert_equal Locale::Tag::Simple, lang.class
36
38
  assert_equal "ja", lang.language
@@ -56,7 +58,9 @@ class TagTest < Test::Unit::TestCase
56
58
  assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
57
59
  assert_equal Locale::Tag::Cldr.parse("ja-JP"), lang.to_cldr
58
60
  assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
61
+ end
59
62
 
63
+ def test_simple_unm49
60
64
  # UN_M.49(Country code)
61
65
  lang = Locale::Tag.parse("ja-392")
62
66
  assert_equal Locale::Tag::Simple, lang.class
@@ -70,7 +74,7 @@ class TagTest < Test::Unit::TestCase
70
74
  assert_equal Locale::Tag::Rfc.parse("ja-392"), lang.to_rfc
71
75
  assert_equal Locale::Tag::Cldr.parse("ja-392"), lang.to_cldr
72
76
  assert_equal Locale::Tag::Posix.parse("ja_392"), lang.to_posix
73
-
77
+
74
78
  lang = Locale::Tag.parse("jpn-392")
75
79
  assert_equal Locale::Tag::Simple, lang.class
76
80
  assert_equal "jpn", lang.language
@@ -119,9 +123,8 @@ class TagTest < Test::Unit::TestCase
119
123
 
120
124
  end
121
125
 
122
- def test_common
123
- #lang, region, script, variants
124
-
126
+ #lang, region, script, variants
127
+ def test_common_lang_script
125
128
  lang = Locale::Tag.parse("az_Arab")
126
129
  assert_equal Locale::Tag::Common, lang.class
127
130
  assert_equal "az", lang.language
@@ -143,26 +146,6 @@ class TagTest < Test::Unit::TestCase
143
146
  assert_equal Locale::Tag::Cldr.parse("az_Arab"), lang.to_cldr
144
147
  assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
145
148
 
146
- lang = Locale::Tag.parse("en_Latn_US_NYNORSK")
147
- assert_equal Locale::Tag::Common, lang.class
148
- assert_equal "en", lang.language
149
- assert_equal "US", lang.region
150
- assert_equal ["NYNORSK"], lang.variants
151
- assert_equal [Locale::Tag::Common.parse("en_Latn_US_NYNORSK"),
152
- Locale::Tag::Common.parse("en_Latn_US"),
153
- Locale::Tag::Common.parse("en_US_NYNORSK"),
154
- Locale::Tag::Common.parse("en_US"),
155
- Locale::Tag::Common.parse("en_Latn_NYNORSK"),
156
- Locale::Tag::Common.parse("en_Latn"),
157
- Locale::Tag::Common.parse("en_NYNORSK"),
158
- Locale::Tag::Common.parse("en")], lang.candidates
159
-
160
-
161
- assert_equal Locale::Tag::Simple.parse("en-US"), lang.to_simple
162
- assert_equal Locale::Tag::Common.parse("en_Latn_US_NYNORSK"), lang.to_common
163
- assert_equal Locale::Tag::Rfc.parse("en-Latn-US-NYNORSK"), lang.to_rfc
164
- assert_equal Locale::Tag::Cldr.parse("en_Latn_US_NYNORSK"), lang.to_cldr
165
- assert_equal Locale::Tag::Posix.parse("en_US@NYNORSK"), lang.to_posix
166
149
 
167
150
  lang = Locale::Tag.parse("uz-Cyrl")
168
151
  assert_equal Locale::Tag::Common, lang.class
@@ -184,7 +167,9 @@ class TagTest < Test::Unit::TestCase
184
167
  assert_equal Locale::Tag::Rfc.parse("uz-Cyrl"), lang.to_rfc
185
168
  assert_equal Locale::Tag::Cldr.parse("uz_Cyrl"), lang.to_cldr
186
169
  assert_equal Locale::Tag::Posix.parse("uz"), lang.to_posix
170
+ end
187
171
 
172
+ def test_common_lang_script_region
188
173
  lang = Locale::Tag.parse("ja-Kana-JP")
189
174
  assert_equal Locale::Tag::Common, lang.class
190
175
  assert_equal "ja", lang.language
@@ -205,7 +190,7 @@ class TagTest < Test::Unit::TestCase
205
190
  assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP"), lang.to_cldr
206
191
  assert_equal Locale::Tag::Posix.parse("ja_JP"), lang.to_posix
207
192
 
208
-
193
+ # 3 char language
209
194
  lang = Locale::Tag.parse("jpn-Hira-JP")
210
195
  assert_equal Locale::Tag::Common, lang.class
211
196
  assert_equal "jpn", lang.language
@@ -225,7 +210,9 @@ class TagTest < Test::Unit::TestCase
225
210
  assert_equal Locale::Tag::Rfc.parse("jpn-Hira-JP"), lang.to_rfc
226
211
  assert_equal Locale::Tag::Cldr.parse("jpn_Hira_JP"), lang.to_cldr
227
212
  assert_equal Locale::Tag::Posix.parse("jpn_JP"), lang.to_posix
213
+ end
228
214
 
215
+ def test_common_lang_script_unm49
229
216
  lang = Locale::Tag.parse("jpn-Hira-392")
230
217
  assert_equal Locale::Tag::Common, lang.class
231
218
  assert_equal "jpn", lang.language
@@ -246,8 +233,33 @@ class TagTest < Test::Unit::TestCase
246
233
  assert_equal Locale::Tag::Rfc.parse("jpn-Hira-392"), lang.to_rfc
247
234
  assert_equal Locale::Tag::Cldr.parse("jpn_Hira_392"), lang.to_cldr
248
235
  assert_equal Locale::Tag::Posix.parse("jpn_392"), lang.to_posix
236
+ end
237
+
238
+ def test_common_lang_script_region_variants
239
+ lang = Locale::Tag.parse("en_Latn_US_NYNORSK")
240
+ assert_equal Locale::Tag::Common, lang.class
241
+ assert_equal "en", lang.language
242
+ assert_equal "US", lang.region
243
+ assert_equal ["NYNORSK"], lang.variants
244
+ assert_equal [Locale::Tag::Common.parse("en_Latn_US_NYNORSK"),
245
+ Locale::Tag::Common.parse("en_Latn_US"),
246
+ Locale::Tag::Common.parse("en_US_NYNORSK"),
247
+ Locale::Tag::Common.parse("en_US"),
248
+ Locale::Tag::Common.parse("en_Latn_NYNORSK"),
249
+ Locale::Tag::Common.parse("en_Latn"),
250
+ Locale::Tag::Common.parse("en_NYNORSK"),
251
+ Locale::Tag::Common.parse("en")], lang.candidates
249
252
 
250
- # Variants
253
+
254
+ assert_equal Locale::Tag::Simple.parse("en-US"), lang.to_simple
255
+ assert_equal Locale::Tag::Common.parse("en_Latn_US_NYNORSK"), lang.to_common
256
+ assert_equal Locale::Tag::Rfc.parse("en-Latn-US-NYNORSK"), lang.to_rfc
257
+ assert_equal Locale::Tag::Cldr.parse("en_Latn_US_NYNORSK"), lang.to_cldr
258
+ assert_equal Locale::Tag::Posix.parse("en_US@NYNORSK"), lang.to_posix
259
+ end
260
+
261
+
262
+ def test_common_lang_variants
251
263
  lang = Locale::Tag.parse("ja-osaka")
252
264
  assert_equal Locale::Tag::Common, lang.class
253
265
  assert_equal "ja", lang.language
@@ -270,8 +282,9 @@ class TagTest < Test::Unit::TestCase
270
282
  assert_equal Locale::Tag::Rfc.parse("ja-osaka"), lang.to_rfc
271
283
  assert_equal Locale::Tag::Cldr.parse("ja_OSAKA"), lang.to_cldr
272
284
  assert_equal Locale::Tag::Posix.parse("ja@osaka"), lang.to_posix
285
+ end
273
286
 
274
-
287
+ def test_common_lang_region_variants
275
288
  lang = Locale::Tag.parse("ja-JP-osaka")
276
289
  assert_equal Locale::Tag::Common, lang.class
277
290
  assert_equal "ja", lang.language
@@ -294,8 +307,9 @@ class TagTest < Test::Unit::TestCase
294
307
  assert_equal Locale::Tag::Rfc.parse("ja-JP-osaka"), lang.to_rfc
295
308
  assert_equal Locale::Tag::Cldr.parse("ja_JP_OSAKA"), lang.to_cldr
296
309
  assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
310
+ end
297
311
 
298
- #5 length
312
+ def test_common_lang_script_region_5length_variants
299
313
  lang = Locale::Tag.parse("ja-Kana-JP-osaka")
300
314
  assert_equal Locale::Tag::Common, lang.class
301
315
  assert_equal "ja", lang.language
@@ -318,7 +332,9 @@ class TagTest < Test::Unit::TestCase
318
332
  assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-osaka"), lang.to_rfc
319
333
  assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_OSAKA"), lang.to_cldr
320
334
  assert_equal Locale::Tag::Posix.parse("ja_JP@osaka"), lang.to_posix
335
+ end
321
336
 
337
+ def test_common_lang_script_region_mid_length_variants
322
338
  #middle length
323
339
  lang = Locale::Tag.parse("ja-Kana-JP-aomori")
324
340
  assert_equal Locale::Tag::Common, lang.class
@@ -343,6 +359,9 @@ class TagTest < Test::Unit::TestCase
343
359
  assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_AOMORI"), lang.to_cldr
344
360
  assert_equal Locale::Tag::Posix.parse("ja_JP@aomori"), lang.to_posix
345
361
 
362
+ end
363
+
364
+ def test_common_lang_script_region_8length_variants
346
365
  #8 length
347
366
  lang = Locale::Tag.parse("ja-Kana-JP-hokuriku")
348
367
  assert_equal Locale::Tag::Common, lang.class
@@ -366,7 +385,9 @@ class TagTest < Test::Unit::TestCase
366
385
  assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku"), lang.to_rfc
367
386
  assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_HOKURIKU"), lang.to_cldr
368
387
  assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku"), lang.to_posix
388
+ end
369
389
 
390
+ def test_common_lang_script_region_special_variants
370
391
  #1 digit and 3 alpha
371
392
  lang = Locale::Tag.parse("ja-Kana-JP-0abc")
372
393
  assert_equal Locale::Tag::Common, lang.class
@@ -390,7 +411,9 @@ class TagTest < Test::Unit::TestCase
390
411
  assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc"), lang.to_rfc
391
412
  assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0ABC"), lang.to_cldr
392
413
  assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
414
+ end
393
415
 
416
+ def test_common_lang_region_4digits_variants
394
417
  #4 digits
395
418
  lang = Locale::Tag.parse("de-CH-1996")
396
419
  assert_equal Locale::Tag::Common, lang.class
@@ -413,7 +436,9 @@ class TagTest < Test::Unit::TestCase
413
436
  assert_equal Locale::Tag::Rfc.parse("de-CH-1996"), lang.to_rfc
414
437
  assert_equal Locale::Tag::Cldr.parse("de_CH_1996"), lang.to_cldr
415
438
  assert_equal Locale::Tag::Posix.parse("de_CH@1996"), lang.to_posix
439
+ end
416
440
 
441
+ def test_common_lang_region_plural_variants
417
442
  #Plural
418
443
  lang = Locale::Tag.parse("ja-Kana-JP-hokuriku-aomori")
419
444
  assert_equal Locale::Tag::Common, lang.class
@@ -437,7 +462,9 @@ class TagTest < Test::Unit::TestCase
437
462
  assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-hokuriku-aomori"), lang.to_rfc
438
463
  assert_equal Locale::Tag::Cldr.parse("ja-Kana-JP_HOKURIKU_AOMORI"), lang.to_cldr
439
464
  assert_equal Locale::Tag::Posix.parse("ja_JP@hokuriku-aomori"), lang.to_posix
465
+ end
440
466
 
467
+ def test_common_cases
441
468
  #cases
442
469
  lang = Locale::Tag.parse("mn-Cyrl-MN")
443
470
  assert_equal Locale::Tag::Common, lang.class
@@ -507,12 +534,15 @@ class TagTest < Test::Unit::TestCase
507
534
  assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"), lang.to_rfc
508
535
  assert_equal Locale::Tag::Cldr.parse("zh-Latn-CN_VARIANT1"), lang.to_cldr
509
536
  assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
537
+ end
510
538
 
539
+ def test_common_lang_region_variants_rfc3066
511
540
  # RFC3066 compatible
512
541
  lang = Locale::Tag.parse("ja-jp-mac")
513
542
  assert_equal Locale::Tag::Common, lang.class
514
543
  assert_equal "ja", lang.language
515
544
  assert_equal "JP", lang.region
545
+ assert_equal ["mac"], lang.variants
516
546
  assert_equal nil, lang.script
517
547
  assert_equal [Locale::Tag::Common.parse("ja_JP_mac"),
518
548
  Locale::Tag::Common.parse("ja_JP"),
@@ -549,8 +579,34 @@ class TagTest < Test::Unit::TestCase
549
579
 
550
580
  end
551
581
 
552
- def test_rfc
553
- # extension
582
+ def test_rfc_lang_script_region_variant_extension
583
+ lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1")
584
+ assert_equal Locale::Tag::Rfc, lang.class
585
+ assert_equal "zh", lang.language
586
+ assert_equal "CN", lang.region
587
+ assert_equal "Latn", lang.script
588
+ assert_equal ["variant1"], lang.variants
589
+ assert_equal ["a-extend1"], lang.extensions
590
+ assert_equal nil, lang.privateuse
591
+
592
+ assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
593
+ Locale::Tag::Rfc.parse("zh-Latn-CN"),
594
+ Locale::Tag::Rfc.parse("zh-CN-variant1"),
595
+ Locale::Tag::Rfc.parse("zh-CN"),
596
+ Locale::Tag::Rfc.parse("zh-Latn-variant1"),
597
+ Locale::Tag::Rfc.parse("zh-Latn"),
598
+ Locale::Tag::Rfc.parse("zh-variant1"),
599
+ Locale::Tag::Rfc.parse("zh"),
600
+ ], lang.candidates
601
+
602
+ assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
603
+ assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
604
+ assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1"), lang.to_rfc
605
+ assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
606
+ assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
607
+ end
608
+
609
+ def test_rfc_lang_script_region_extensions
554
610
  lang = Locale::Tag.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn")
555
611
  assert_equal Locale::Tag::Rfc, lang.class
556
612
  assert_equal "ja", lang.language
@@ -574,7 +630,9 @@ class TagTest < Test::Unit::TestCase
574
630
  assert_equal Locale::Tag::Rfc.parse("ja-Kana-JP-0abc-y-aa-z-bbccdd-b-nnnnnnnn"), lang.to_rfc
575
631
  assert_equal Locale::Tag::Cldr.parse("ja_Kana_JP_0abc"), lang.to_cldr
576
632
  assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
633
+ end
577
634
 
635
+ def test_rfc_lang_region_variants_extensions
578
636
  lang = Locale::Tag.parse("ja-JP-0abc-y-aa-z-bbccdd-b-xxxnnnnn")
579
637
  assert_equal Locale::Tag::Rfc, lang.class
580
638
  assert_equal "ja", lang.language
@@ -599,6 +657,9 @@ class TagTest < Test::Unit::TestCase
599
657
  assert_equal Locale::Tag::Cldr.parse("ja_JP_0abc"), lang.to_cldr
600
658
  assert_equal Locale::Tag::Posix.parse("ja_JP@0abc"), lang.to_posix
601
659
 
660
+ end
661
+
662
+ def test_rfc_lang_extensions
602
663
  lang = Locale::Tag.parse("ja-y-aa-z-bbccdd-b-xxnnnnn")
603
664
  assert_equal Locale::Tag::Rfc, lang.class
604
665
  assert_equal "ja", lang.language
@@ -622,33 +683,10 @@ class TagTest < Test::Unit::TestCase
622
683
  assert_equal Locale::Tag::Rfc.parse("ja-y-aa-z-bbccdd-b-xxnnnnn"), lang.to_rfc
623
684
  assert_equal Locale::Tag::Cldr.parse("ja"), lang.to_cldr
624
685
  assert_equal Locale::Tag::Posix.parse("ja"), lang.to_posix
686
+ end
625
687
 
626
- lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1")
627
- assert_equal Locale::Tag::Rfc, lang.class
628
- assert_equal "zh", lang.language
629
- assert_equal "CN", lang.region
630
- assert_equal "Latn", lang.script
631
- assert_equal ["variant1"], lang.variants
632
- assert_equal ["a-extend1"], lang.extensions
633
- assert_equal nil, lang.privateuse
634
-
635
- assert_equal [Locale::Tag::Rfc.parse("zh-Latn-CN-variant1"),
636
- Locale::Tag::Rfc.parse("zh-Latn-CN"),
637
- Locale::Tag::Rfc.parse("zh-CN-variant1"),
638
- Locale::Tag::Rfc.parse("zh-CN"),
639
- Locale::Tag::Rfc.parse("zh-Latn-variant1"),
640
- Locale::Tag::Rfc.parse("zh-Latn"),
641
- Locale::Tag::Rfc.parse("zh-variant1"),
642
- Locale::Tag::Rfc.parse("zh"),
643
- ], lang.candidates
644
-
645
- assert_equal Locale::Tag::Simple.parse("zh_CN"), lang.to_simple
646
- assert_equal Locale::Tag::Common.parse("zh-Latn-CN_variant1"), lang.to_common
647
- assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1"), lang.to_rfc
648
- assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
649
- assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
650
-
651
- #Privateuse
688
+ def test_rfc_privateuse
689
+ #Privateuse
652
690
  lang = Locale::Tag.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1")
653
691
  assert_equal Locale::Tag::Rfc, lang.class
654
692
  assert_equal "zh", lang.language
@@ -673,7 +711,9 @@ class TagTest < Test::Unit::TestCase
673
711
  assert_equal Locale::Tag::Rfc.parse("zh-Latn-CN-variant1-a-extend1-x-wadegile-private1"), lang.to_rfc
674
712
  assert_equal Locale::Tag::Cldr.parse("zh_Latn_CN_VARIANT1"), lang.to_cldr
675
713
  assert_equal Locale::Tag::Posix.parse("zh_CN@variant1"), lang.to_posix
714
+ end
676
715
 
716
+ def test_rfc_cldr_conversion
677
717
  #Privateuse with x-ldml (CLDR conversion)
678
718
  lang = Locale::Tag.parse("en-US-x-ldml-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar")
679
719
  assert_equal Locale::Tag::Rfc, lang.class
@@ -739,7 +779,7 @@ class TagTest < Test::Unit::TestCase
739
779
  lang.privateuse = "x-foooo"
740
780
  assert_equal "ja-Hira-JP-variant2-b-extend2-x-foooo", lang.to_s
741
781
 
742
- assert_equal [Locale::Tag::Rfc.parse("ja-Hira-JP-variant2"),
782
+ assert_equal [Locale::Tag::Rfc.parse("ja-Hira-JP-variant2"),
743
783
  Locale::Tag::Rfc.parse("ja-Hira-JP"),
744
784
  Locale::Tag::Rfc.parse("ja-JP-variant2"),
745
785
  Locale::Tag::Rfc.parse("ja-JP"),
@@ -750,7 +790,7 @@ class TagTest < Test::Unit::TestCase
750
790
  ], lang.candidates
751
791
  end
752
792
 
753
- def test_cldr
793
+ def test_cldr_lang_extensions
754
794
  lang = Locale::Tag.parse("de@collation=phonebook")
755
795
  assert_equal Locale::Tag::Cldr, lang.class
756
796
  assert_equal "de", lang.language
@@ -772,7 +812,9 @@ class TagTest < Test::Unit::TestCase
772
812
  assert_equal Locale::Tag::Rfc.parse("de-k-collatio-phoneboo"), lang.to_rfc
773
813
  assert_equal Locale::Tag::Cldr.parse("de@collation=phonebook"), lang.to_cldr
774
814
  assert_equal Locale::Tag::Posix.parse("de"), lang.to_posix
815
+ end
775
816
 
817
+ def test_cldr_lang_script_extension
776
818
  lang = Locale::Tag.parse("az_Arab@collation=phonebook")
777
819
  assert_equal Locale::Tag::Cldr, lang.class
778
820
  assert_equal "az", lang.language
@@ -796,6 +838,9 @@ class TagTest < Test::Unit::TestCase
796
838
  assert_equal Locale::Tag::Cldr.parse("az_Arab@collation=phonebook"), lang.to_cldr
797
839
  assert_equal Locale::Tag::Posix.parse("az"), lang.to_posix
798
840
 
841
+ end
842
+
843
+ def test_cldr_lang_region_extensions
799
844
  lang = Locale::Tag.parse("de_DE@collation=phonebook;currency=DDM")
800
845
  assert_equal Locale::Tag::Cldr, lang.class
801
846
  assert_equal "de", lang.language
@@ -819,56 +864,58 @@ class TagTest < Test::Unit::TestCase
819
864
  assert_equal Locale::Tag::Cldr.parse("de_DE@collation=phonebook;currency=DDM"), lang.to_cldr
820
865
  assert_equal Locale::Tag::Posix.parse("de_DE"), lang.to_posix
821
866
 
822
- lang = Locale::Tag.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary")
867
+ lang = Locale::Tag.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary")
823
868
  assert_equal Locale::Tag::Cldr, lang.class
824
869
  assert_equal "en", lang.language
825
870
  assert_equal "US", lang.region
826
- assert_equal ["POSIX"], lang.variants
871
+ assert_equal [], lang.variants
827
872
  assert_equal "islamic", lang.extensions["calendar"]
828
873
  assert_equal "traditional", lang.extensions["collation"]
829
874
  assert_equal "secondary", lang.extensions["colStrength"]
830
875
 
831
- assert_equal [Locale::Tag::Cldr.parse("en_US_POSIX"),
876
+ assert_equal [Locale::Tag::Cldr.parse("en_US"),
877
+ Locale::Tag::Cldr.parse("en_US"),
832
878
  Locale::Tag::Cldr.parse("en_US"),
833
- Locale::Tag::Cldr.parse("en_US_POSIX"),
834
879
  Locale::Tag::Cldr.parse("en_US"),
835
- Locale::Tag::Cldr.parse("en_POSIX"),
836
880
  Locale::Tag::Cldr.parse("en"),
837
- Locale::Tag::Cldr.parse("en_POSIX"),
881
+ Locale::Tag::Cldr.parse("en"),
882
+ Locale::Tag::Cldr.parse("en"),
838
883
  Locale::Tag::Cldr.parse("en"),
839
884
  ], lang.candidates
840
885
 
841
886
  assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
842
- assert_equal Locale::Tag::Common.parse("en_US_POSIX"), lang.to_common
843
- assert_equal Locale::Tag::Rfc.parse("en-US-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
844
- assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
845
- assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
887
+ assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
888
+ assert_equal Locale::Tag::Rfc.parse("en-US-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
889
+ assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
890
+ assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
846
891
 
847
- lang = Locale::Tag.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary")
892
+ end
893
+
894
+ def test_cldr_lang_region_variants_extensions
895
+ lang = Locale::Tag.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary")
848
896
  assert_equal Locale::Tag::Cldr, lang.class
849
897
  assert_equal "en", lang.language
850
898
  assert_equal "US", lang.region
851
- assert_equal [], lang.variants
899
+ assert_equal ["POSIX"], lang.variants
852
900
  assert_equal "islamic", lang.extensions["calendar"]
853
901
  assert_equal "traditional", lang.extensions["collation"]
854
902
  assert_equal "secondary", lang.extensions["colStrength"]
855
903
 
856
- assert_equal [Locale::Tag::Cldr.parse("en_US"),
857
- Locale::Tag::Cldr.parse("en_US"),
904
+ assert_equal [Locale::Tag::Cldr.parse("en_US_POSIX"),
858
905
  Locale::Tag::Cldr.parse("en_US"),
906
+ Locale::Tag::Cldr.parse("en_US_POSIX"),
859
907
  Locale::Tag::Cldr.parse("en_US"),
908
+ Locale::Tag::Cldr.parse("en_POSIX"),
860
909
  Locale::Tag::Cldr.parse("en"),
861
- Locale::Tag::Cldr.parse("en"),
862
- Locale::Tag::Cldr.parse("en"),
910
+ Locale::Tag::Cldr.parse("en_POSIX"),
863
911
  Locale::Tag::Cldr.parse("en"),
864
912
  ], lang.candidates
865
913
 
866
914
  assert_equal Locale::Tag::Simple.parse("en_US"), lang.to_simple
867
- assert_equal Locale::Tag::Common.parse("en_US"), lang.to_common
868
- assert_equal Locale::Tag::Rfc.parse("en-US-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
869
- assert_equal Locale::Tag::Cldr.parse("en_US@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
870
- assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
871
-
915
+ assert_equal Locale::Tag::Common.parse("en_US_POSIX"), lang.to_common
916
+ assert_equal Locale::Tag::Rfc.parse("en-US-POSIX-k-calendar-islamic-k-collatio-traditio-k-colStren-secondar"), lang.to_rfc
917
+ assert_equal Locale::Tag::Cldr.parse("en_US_POSIX@calendar=islamic;collation=traditional;colStrength=secondary"), lang.to_cldr
918
+ assert_equal Locale::Tag::Posix.parse("en_US@POSIX"), lang.to_posix
872
919
  end
873
920
 
874
921
  def test_cldr_writer
@@ -895,7 +942,7 @@ class TagTest < Test::Unit::TestCase
895
942
  ], lang.candidates
896
943
  end
897
944
 
898
- def test_posix
945
+ def test_posix_c_and_posix
899
946
  lang = Locale::Tag.parse("C")
900
947
  assert_equal Locale::Tag::Posix, lang.class
901
948
  assert_equal "en", lang.language
@@ -939,7 +986,9 @@ class TagTest < Test::Unit::TestCase
939
986
  assert_equal Locale::Tag::Rfc.parse("en-US"), lang.to_rfc
940
987
  assert_equal Locale::Tag::Cldr.parse("en_US"), lang.to_cldr
941
988
  assert_equal Locale::Tag::Posix.parse("en_US"), lang.to_posix
989
+ end
942
990
 
991
+ def test_posix_irregular_format
943
992
  lang = Locale::Tag.parse("japanese.euc")
944
993
  assert_equal Locale::Tag::Posix, lang.class
945
994
  assert_equal "japanese", lang.language
@@ -956,6 +1005,24 @@ class TagTest < Test::Unit::TestCase
956
1005
  Locale::Tag::Posix.parse("japanese"),
957
1006
  ], lang.candidates
958
1007
 
1008
+ lang = Locale::Tag.parse("univ.utf8")
1009
+ assert_equal Locale::Tag::Posix, lang.class
1010
+ assert_equal "univ", lang.language
1011
+ assert_equal nil, lang.region
1012
+ assert_equal "utf8", lang.charset
1013
+
1014
+ assert_equal [Locale::Tag::Posix.parse("univ.utf8"),
1015
+ Locale::Tag::Posix.parse("univ.utf8"),
1016
+ Locale::Tag::Posix.parse("univ"),
1017
+ Locale::Tag::Posix.parse("univ"),
1018
+ Locale::Tag::Posix.parse("univ.utf8"),
1019
+ Locale::Tag::Posix.parse("univ.utf8"),
1020
+ Locale::Tag::Posix.parse("univ"),
1021
+ Locale::Tag::Posix.parse("univ"),
1022
+ ], lang.candidates
1023
+ end
1024
+
1025
+ def test_posix_lang_charset
959
1026
  lang = Locale::Tag.parse("es.iso885915")
960
1027
  assert_equal Locale::Tag::Posix, lang.class
961
1028
  assert_equal "es", lang.language
@@ -978,7 +1045,9 @@ class TagTest < Test::Unit::TestCase
978
1045
  assert_equal Locale::Tag::Rfc.parse("es"), lang.to_rfc
979
1046
  assert_equal Locale::Tag::Cldr.parse("es"), lang.to_cldr
980
1047
  assert_equal Locale::Tag::Posix.parse("es.iso885915"), lang.to_posix
1048
+ end
981
1049
 
1050
+ def test_posix_lang_region_charset
982
1051
  lang = Locale::Tag.parse("es_ES.iso885915")
983
1052
  assert_equal Locale::Tag::Posix, lang.class
984
1053
  assert_equal "es", lang.language
@@ -1002,6 +1071,30 @@ class TagTest < Test::Unit::TestCase
1002
1071
  assert_equal Locale::Tag::Cldr.parse("es_ES"), lang.to_cldr
1003
1072
  assert_equal Locale::Tag::Posix.parse("es_ES.iso885915"), lang.to_posix
1004
1073
 
1074
+ lang = Locale::Tag.parse("ja_JP.UTF-8")
1075
+ assert_equal Locale::Tag::Posix, lang.class
1076
+ assert_equal "ja", lang.language
1077
+ assert_equal "JP", lang.region
1078
+ assert_equal "UTF-8", lang.charset
1079
+
1080
+ assert_equal [Locale::Tag::Posix.parse("ja_JP.UTF-8"),
1081
+ Locale::Tag::Posix.parse("ja_JP.UTF-8"),
1082
+ Locale::Tag::Posix.parse("ja_JP"),
1083
+ Locale::Tag::Posix.parse("ja_JP"),
1084
+ Locale::Tag::Posix.parse("ja.UTF-8"),
1085
+ Locale::Tag::Posix.parse("ja.UTF-8"),
1086
+ Locale::Tag::Posix.parse("ja"),
1087
+ Locale::Tag::Posix.parse("ja"),
1088
+ ], lang.candidates
1089
+
1090
+ assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
1091
+ assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
1092
+ assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
1093
+ assert_equal Locale::Tag::Cldr.parse("ja_JP"), lang.to_cldr
1094
+ assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), lang.to_posix
1095
+ end
1096
+
1097
+ def test_posix_lang_modifier
1005
1098
  lang = Locale::Tag.parse("es@euro")
1006
1099
  assert_equal Locale::Tag::Posix, lang.class
1007
1100
  assert_equal "es", lang.language
@@ -1026,7 +1119,9 @@ class TagTest < Test::Unit::TestCase
1026
1119
  assert_equal Locale::Tag::Rfc.new("es", nil, nil, ["euro"]), lang.to_rfc
1027
1120
  assert_equal Locale::Tag::Cldr.new("es", nil, nil, ["euro"]), lang.to_cldr
1028
1121
  assert_equal Locale::Tag::Posix.parse("es@euro"), lang.to_posix
1122
+ end
1029
1123
 
1124
+ def test_posix_lang_region_modifier
1030
1125
  lang = Locale::Tag.parse("es_ES@euro")
1031
1126
  assert_equal Locale::Tag::Posix, lang.class
1032
1127
  assert_equal "es", lang.language
@@ -1050,6 +1145,9 @@ class TagTest < Test::Unit::TestCase
1050
1145
  assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
1051
1146
  assert_equal Locale::Tag::Posix.parse("es_ES@euro"), lang.to_posix
1052
1147
 
1148
+ end
1149
+
1150
+ def test_posix_lang_region_charset_modifier
1053
1151
  lang = Locale::Tag.parse("es_ES.iso885915@euro")
1054
1152
  assert_equal Locale::Tag::Posix, lang.class
1055
1153
  assert_equal "es", lang.language
@@ -1073,43 +1171,6 @@ class TagTest < Test::Unit::TestCase
1073
1171
  assert_equal Locale::Tag::Cldr.new("es", nil, "ES", ["EURO"]), lang.to_cldr
1074
1172
  assert_equal Locale::Tag::Posix.parse("es_ES.iso885915@euro"), lang.to_posix
1075
1173
 
1076
- lang = Locale::Tag.parse("univ.utf8")
1077
- assert_equal Locale::Tag::Posix, lang.class
1078
- assert_equal "univ", lang.language
1079
- assert_equal nil, lang.region
1080
- assert_equal "utf8", lang.charset
1081
-
1082
- assert_equal [Locale::Tag::Posix.parse("univ.utf8"),
1083
- Locale::Tag::Posix.parse("univ.utf8"),
1084
- Locale::Tag::Posix.parse("univ"),
1085
- Locale::Tag::Posix.parse("univ"),
1086
- Locale::Tag::Posix.parse("univ.utf8"),
1087
- Locale::Tag::Posix.parse("univ.utf8"),
1088
- Locale::Tag::Posix.parse("univ"),
1089
- Locale::Tag::Posix.parse("univ"),
1090
- ], lang.candidates
1091
-
1092
- lang = Locale::Tag.parse("ja_JP.UTF-8")
1093
- assert_equal Locale::Tag::Posix, lang.class
1094
- assert_equal "ja", lang.language
1095
- assert_equal "JP", lang.region
1096
- assert_equal "UTF-8", lang.charset
1097
-
1098
- assert_equal [Locale::Tag::Posix.parse("ja_JP.UTF-8"),
1099
- Locale::Tag::Posix.parse("ja_JP.UTF-8"),
1100
- Locale::Tag::Posix.parse("ja_JP"),
1101
- Locale::Tag::Posix.parse("ja_JP"),
1102
- Locale::Tag::Posix.parse("ja.UTF-8"),
1103
- Locale::Tag::Posix.parse("ja.UTF-8"),
1104
- Locale::Tag::Posix.parse("ja"),
1105
- Locale::Tag::Posix.parse("ja"),
1106
- ], lang.candidates
1107
-
1108
- assert_equal Locale::Tag::Simple.parse("ja_JP"), lang.to_simple
1109
- assert_equal Locale::Tag::Common.parse("ja_JP"), lang.to_common
1110
- assert_equal Locale::Tag::Rfc.parse("ja-JP"), lang.to_rfc
1111
- assert_equal Locale::Tag::Cldr.parse("ja_JP"), lang.to_cldr
1112
- assert_equal Locale::Tag::Posix.parse("ja_JP.UTF-8"), lang.to_posix
1113
1174
  end
1114
1175
 
1115
1176
  def test_posix_writer