locale 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
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