]> git.openstreetmap.org Git - rails.git/blob - vendor/plugins/globalize2/test/locale/language_tag_test.rb
Merged I18N branch to head.
[rails.git] / vendor / plugins / globalize2 / test / locale / language_tag_test.rb
1 require File.join( File.dirname(__FILE__), '..', 'test_helper' )
2 require 'globalize/locale/language_tag'
3
4 include Globalize::Locale
5
6 class LanguageTagTest < ActiveSupport::TestCase
7   test "given a valid tag 'de' returns an LanguageTag from #tag" do
8     assert_instance_of LanguageTag, LanguageTag.tag('de')
9   end
10
11   test "given a valid tag 'de' returns an array of subtags" do
12     assert_equal ['de', nil, nil, nil, nil, nil, nil], LanguageTag::SimpleParser.match('de') 
13   end
14   
15   test "given a valid tag 'de-DE' returns an array of subtags" do
16     assert_equal ['de', nil, 'DE', nil, nil, nil, nil], LanguageTag::SimpleParser.match('de-DE') 
17   end
18   
19   test "given a valid lowercase tag 'de-latn-de-variant-x-phonebk' returns an array of subtags" do
20     assert_equal ['de', 'latn', 'de', 'variant', nil, 'x-phonebk', nil], 
21       LanguageTag::SimpleParser.match('de-latn-de-variant-x-phonebk') 
22   end
23   
24   test "given a valid uppercase tag 'DE-LATN-DE-VARIANT-X-PHONEBK' returns an array of subtags" do
25     assert_equal ['DE', 'LATN', 'DE', 'VARIANT', nil, 'X-PHONEBK', nil], 
26       LanguageTag::SimpleParser.match('DE-LATN-DE-VARIANT-X-PHONEBK') 
27   end
28   
29   test "given an invalid tag 'a-DE' test returns false" do
30     assert !LanguageTag::SimpleParser.match('a-DE')
31   end
32   
33   test "given an invalid tag 'de-419-DE' test returns false" do
34     assert !LanguageTag::SimpleParser.match('de-419-DE')
35   end
36 end
37
38 class DeLatnLanguageTagTest < ActiveSupport::TestCase
39   def setup
40     subtags = %w(de Latn DE variant a-ext x-phonebk i-klingon)
41     @tag = LanguageTag.new *subtags
42   end
43
44   test "returns 'de' as the language subtag in lowercase" do
45     assert_equal 'de', @tag.language
46   end
47
48   test "returns 'Latn' as the script subtag in titlecase" do
49     assert_equal 'Latn', @tag.script 
50   end
51
52   test "returns 'DE' as the region subtag in uppercase" do
53     assert_equal 'DE', @tag.region
54   end
55
56   test "returns 'variant' as the variant subtag in lowercase" do
57     assert_equal 'variant', @tag.variant 
58   end
59
60   test "returns 'a-ext' as the extension subtag" do
61     assert_equal 'a-ext', @tag.extension 
62   end
63
64   test "returns 'x-phonebk' as the privateuse subtag" do
65     assert_equal 'x-phonebk', @tag.privateuse 
66   end
67
68   test "returns 'i-klingon' as the grandfathered subtag" do
69     assert_equal 'i-klingon', @tag.grandfathered 
70   end
71   
72   test "returns a formatted tag string from #to_s" do
73     assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon', @tag.to_s 
74   end
75   
76   test "returns an array containing the formatted subtags from #to_a" do
77     assert_equal %w(de Latn DE variant a-ext x-phonebk i-klingon), @tag.to_a 
78   end
79 end
80
81 class InheritanceLanguageTagTest < ActiveSupport::TestCase
82   test "returns 'de-Latn-DE-variant-a-ext-x-phonebk' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do
83     tag = LanguageTag.new *%w(de Latn DE variant a-ext x-phonebk i-klingon)
84     assert_equal 'de-Latn-DE-variant-a-ext-x-phonebk', tag.parent.to_s 
85   end
86
87   test "returns 'de-Latn-DE-variant-a-ext' as the parent of 'de-Latn-DE-variant-a-ext-x-phonebk'" do
88     tag = LanguageTag.new *%w(de Latn DE variant a-ext x-phonebk)
89     assert_equal 'de-Latn-DE-variant-a-ext', tag.parent.to_s 
90   end
91
92   test "returns 'de-Latn-DE-variant' as the parent of 'de-Latn-DE-variant-a-ext'" do
93     tag = LanguageTag.new *%w(de Latn DE variant a-ext)
94     assert_equal 'de-Latn-DE-variant', tag.parent.to_s 
95   end
96
97   test "returns 'de-Latn-DE' as the parent of 'de-Latn-DE-variant'" do
98     tag = LanguageTag.new *%w(de Latn DE variant)
99     assert_equal 'de-Latn-DE', tag.parent.to_s 
100   end
101
102   test "returns 'de-Latn' as the parent of 'de-Latn-DE'" do
103     tag = LanguageTag.new *%w(de Latn DE)
104     assert_equal 'de-Latn', tag.parent.to_s 
105   end
106
107   test "returns 'de' as the parent of 'de-Latn'" do
108     tag = LanguageTag.new *%w(de Latn)
109     assert_equal 'de', tag.parent.to_s 
110   end
111   
112   # TODO RFC4647 says: "If no language tag matches the request, the "default" value is returned."
113   # where should we set the default language?
114   # test "returns '' as the parent of 'de'" do
115   #   tag = LanguageTag.new *%w(de)
116   #   assert_equal '', tag.parent.to_s
117   # end
118
119   test "returns an array of 5 parents for 'de-Latn-DE-variant-a-ext-x-phonebk-i-klingon'" do
120     parents = %w(de-Latn-DE-variant-a-ext-x-phonebk-i-klingon 
121                  de-Latn-DE-variant-a-ext-x-phonebk 
122                  de-Latn-DE-variant-a-ext 
123                  de-Latn-DE-variant 
124                  de-Latn-DE 
125                  de-Latn 
126                  de) 
127     tag = LanguageTag.new *%w(de Latn DE variant a-ext x-phonebk i-klingon)
128     assert_equal parents, tag.parents.map{|tag| tag.to_s} 
129   end  
130 end