ruby-cldr 0.0.2 → 0.1.0

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 (41) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -2
  3. data/Gemfile.lock +55 -5
  4. data/VERSION +1 -1
  5. data/lib/cldr/download.rb +15 -11
  6. data/lib/cldr/export.rb +64 -16
  7. data/lib/cldr/export/data.rb +18 -10
  8. data/lib/cldr/export/data/calendars/gregorian.rb +45 -22
  9. data/lib/cldr/export/data/currencies.rb +6 -1
  10. data/lib/cldr/export/data/currency_digits_and_rounding.rb +22 -0
  11. data/lib/cldr/export/data/layout.rb +22 -0
  12. data/lib/cldr/export/data/lists.rb +28 -0
  13. data/lib/cldr/export/data/metazones.rb +45 -0
  14. data/lib/cldr/export/data/numbering_systems.rb +41 -0
  15. data/lib/cldr/export/data/numbers.rb +9 -0
  16. data/lib/cldr/export/data/plurals.rb +8 -7
  17. data/lib/cldr/export/data/plurals/rules.rb +114 -31
  18. data/lib/cldr/export/data/rbnf.rb +64 -0
  19. data/lib/cldr/export/data/rbnf_root.rb +19 -0
  20. data/lib/cldr/export/data/timezones.rb +29 -6
  21. data/lib/cldr/export/data/units.rb +23 -6
  22. data/lib/cldr/export/data/windows_zones.rb +23 -0
  23. data/lib/cldr/export/yaml.rb +2 -1
  24. data/lib/cldr/format/datetime/base.rb +1 -1
  25. data/lib/cldr/format/time.rb +1 -1
  26. data/lib/cldr/thor.rb +1 -1
  27. data/lib/core_ext/string/camelize.rb +1 -1
  28. data/test/export/data/calendars_test.rb +23 -18
  29. data/test/export/data/currencies_test.rb +24 -24
  30. data/test/export/data/languages_test.rb +52 -48
  31. data/test/export/data/metazones_test.rb +17 -0
  32. data/test/export/data/numbers_test.rb +34 -3
  33. data/test/export/data/plurals_test.rb +133 -32
  34. data/test/export/data/territories_test.rb +22 -22
  35. data/test/export/data/timezones_test.rb +49 -26
  36. data/test/export/data/units_test.rb +16 -17
  37. data/test/export/data/windows_zones_test.rb +12 -0
  38. data/test/export_test.rb +4 -1
  39. data/test/format/date_test.rb +2 -2
  40. data/test/test_autotest.rb +1 -1
  41. metadata +94 -32
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
+ require 'date'
5
+
6
+ class TestCldrDataMetazones < Test::Unit::TestCase
7
+ test 'metazone timezones' do
8
+ timezones = Cldr::Export::Data::Metazones.new[:timezones]
9
+ assert_equal({ 'from' => DateTime.parse('1990-05-05T21:00:00+00:00'), 'metazone' => 'Europe_Eastern' }, timezones[:'Europe/Chisinau'].last)
10
+ end
11
+
12
+ test 'metazone primaryzones' do
13
+ primaryzones = Cldr::Export::Data::Metazones.new[:primaryzones]
14
+ assert_equal('Europe/Berlin', primaryzones[:'DE'])
15
+ end
16
+
17
+ end
@@ -14,9 +14,8 @@ class TestCldrDataNumbers < Test::Unit::TestCase
14
14
  :percent_sign => "%",
15
15
  :list => ";",
16
16
  :per_mille => "‰",
17
- :native_zero_digit => "0",
18
17
  :infinity => "∞",
19
- :pattern_digit => "#"
18
+ :superscripting_exponent => "·"
20
19
  }
21
20
  assert_equal expected, Cldr::Export::Data::Numbers.new('de')[:numbers][:symbols]
22
21
  end
@@ -24,21 +23,53 @@ class TestCldrDataNumbers < Test::Unit::TestCase
24
23
  test "number formats :de" do
25
24
  expected = {
26
25
  :decimal => {
26
+ :number_system => "latn",
27
27
  :patterns => {
28
- :default => "#,##0.###"
28
+ :default => "#,##0.###",
29
+ "long" => {
30
+ "1000" => "0 Tausend",
31
+ "10000" => "00 Tausend",
32
+ "100000" => "000 Tausend",
33
+ "1000000" => "0 Millionen",
34
+ "10000000" => "00 Millionen",
35
+ "100000000" => "000 Millionen",
36
+ "1000000000" => "0 Milliarden",
37
+ "10000000000" => "00 Milliarden",
38
+ "100000000000" => "000 Milliarden",
39
+ "1000000000000" => "0 Billionen",
40
+ "10000000000000" => "00 Billionen",
41
+ "100000000000000" => "000 Billionen"
42
+ },
43
+ "short" => {
44
+ "1000" => "0 Tsd",
45
+ "10000" => "00 Tsd",
46
+ "100000" => "000 Tsd",
47
+ "1000000" => "0 Mio",
48
+ "10000000" => "00 Mio",
49
+ "100000000" => "000 Mio",
50
+ "1000000000" => "0 Mrd",
51
+ "10000000000" => "00 Mrd",
52
+ "100000000000" => "000 Mrd",
53
+ "1000000000000" => "0 Bio",
54
+ "10000000000000" => "00 Bio",
55
+ "100000000000000" => "000 Bio"
56
+ }
29
57
  }
30
58
  },
31
59
  :scientific => {
60
+ :number_system => "latn",
32
61
  :patterns => {
33
62
  :default => "#E0"
34
63
  }
35
64
  },
36
65
  :percent => {
66
+ :number_system => "latn",
37
67
  :patterns => {
38
68
  :default => "#,##0 %" # includes a non-breaking space (\302\240)
39
69
  }
40
70
  },
41
71
  :currency => {
72
+ :number_system => "latn",
42
73
  :patterns => {
43
74
  :default => "#,##0.00 ¤", # includes a non-breaking space (\302\240)
44
75
  },
@@ -21,121 +21,222 @@ class TestCldrDataPluralParser < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def test_lookup_rule_by_locale
24
- assert_equal "lambda { |n| n == 1 ? :one : :other }", cldr_rules.rule(:de).to_ruby
24
+ assert_equal 'lambda { |n| n = n.respond_to?(:abs) ? n.abs : ((m = n.to_s)[0] == "-" ? m[1,m.length] : m); (n.to_i == 1 && ((v = n.to_s.split(".")[1]) ? v.length : 0) == 0) ? :one : :other }', cldr_rules.rule(:de).to_ruby
25
25
  end
26
26
 
27
- def test_parses_n
28
- assert Cldr::Export::Data::Plurals::Rule.parse('n').is_a?(Cldr::Export::Data::Plurals::Expression)
27
+ def test_parses_empty
28
+ assert Cldr::Export::Data::Plurals::Rule.parse('').is_a?(Cldr::Export::Data::Plurals::Expression)
29
+ assert Cldr::Export::Data::Plurals::Rule.parse(' ').is_a?(Cldr::Export::Data::Plurals::Expression)
30
+ assert Cldr::Export::Data::Plurals::Rule.parse(' @integer').is_a?(Cldr::Export::Data::Plurals::Expression)
31
+ assert Cldr::Export::Data::Plurals::Rule.parse('@decimal').is_a?(Cldr::Export::Data::Plurals::Expression)
29
32
  end
30
33
 
31
34
  def test_parses_n_is_1
32
35
  rule = Cldr::Export::Data::Plurals::Rule.parse('n is 1')
33
- assert_equal [:is, '1'], [rule.operator, rule.operand]
36
+ assert_equal [:is, 1], [rule.operator, rule.operand]
34
37
  end
35
38
 
36
39
  def test_parses_n_mod_1_is_1
37
40
  rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is 1')
38
- assert_equal [:is, '1', '1'], [rule.operator, rule.operand, rule.mod]
41
+ assert_equal [:is, 1, '1', 'n'], [rule.operator, rule.operand, rule.mod, rule.type]
39
42
  end
40
43
 
41
44
  def test_parses_n_is_not_1
42
45
  rule = Cldr::Export::Data::Plurals::Rule.parse('n is not 1')
43
- assert_equal [:is, '1', true], [rule.operator, rule.operand, rule.negate]
46
+ assert_equal [:is, 1, true, 'n'], [rule.operator, rule.operand, rule.negate, rule.type]
44
47
  end
45
48
 
46
49
  def test_parses_n_mod_1_is_not_1
47
50
  rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 1')
48
- assert_equal [:is, '1', true, '1'], [rule.operator, rule.operand, rule.negate, rule.mod]
51
+ assert_equal [:is, 1, true, '1', 'n'], [rule.operator, rule.operand, rule.negate, rule.mod, rule.type]
49
52
  end
50
53
 
51
54
  def test_parses_n_in_1_2
52
55
  rule = Cldr::Export::Data::Plurals::Rule.parse('n in 1..2')
53
- assert_equal [:in, '[1, 2]'], [rule.operator, rule.operand]
56
+ assert_equal [:in, [[],[1..2]], 'n'], [rule.operator, rule.operand, rule.type]
54
57
  end
55
58
 
56
59
  def test_parses_n_mod_1_in_1_2
57
60
  rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 in 1..2')
58
- assert_equal [:in, '[1, 2]', '1'], [rule.operator, rule.operand, rule.mod]
61
+ assert_equal [:in, [[],[1..2]], '1', 'n'], [rule.operator, rule.operand, rule.mod, rule.type]
59
62
  end
60
63
 
61
64
  def test_parses_n_not_in_1_2
62
65
  rule = Cldr::Export::Data::Plurals::Rule.parse('n not in 1..2')
63
- assert_equal [:in, '[1, 2]', true], [rule.operator, rule.operand, rule.negate]
66
+ assert_equal [:in, [[],[1..2]], true, 'n'], [rule.operator, rule.operand, rule.negate, rule.type]
64
67
  end
65
68
 
66
69
  def test_parses_n_mod_1_not_in_1_2
67
70
  rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 not in 1..2')
68
- assert_equal [:in, '[1, 2]', true, '1'], [rule.operator, rule.operand, rule.negate, rule.mod]
71
+ assert_equal [:in, [[],[1..2]], true, '1', 'n'], [rule.operator, rule.operand, rule.negate, rule.mod, rule.type]
69
72
  end
70
73
 
71
74
  def test_parses_n_within_0_2
72
75
  expression = Cldr::Export::Data::Plurals::Rule.parse('n within 0..2')
73
- assert_equal [:within, %w{0 2}], [expression.operator, expression.operand]
76
+ assert_equal [:within, 0..2, 'n'], [expression.operator, expression.operand, expression.type]
77
+ end
78
+
79
+ def test_parses_n_list_range
80
+ expression = Cldr::Export::Data::Plurals::Rule.parse('n % 100 != 10..19,30,34,39,90..99')
81
+ assert_equal [:in, [[30, 34, 39],[10..19, 90..99]], true, '100', 'n'], [expression.operator, expression.operand, expression.negate, expression.mod, expression.type]
74
82
  end
75
83
 
76
84
  def test_parses_or_condition
77
85
  rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4')
78
86
  assert_equal 2, rule.size
79
- assert_equal [:is, '2', true, '1'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod]
80
- assert_equal [:in, '[3, 4]', false, '2'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod]
87
+ assert_equal [:is, 2, true, '1', 'n'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod, rule[0].type]
88
+ assert_equal [:in, [[],[3..4]], false, '2', 'n'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod, rule[1].type]
81
89
  end
82
90
 
83
91
  def test_parses_and_condition
84
92
  rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4')
85
93
  assert_equal 2, rule.size
86
- assert_equal [:is, '2', true, '1'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod]
87
- assert_equal [:in, '[3, 4]', false, '2'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod]
94
+ assert_equal [:is, 2, true, '1', 'n'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod, rule[0].type]
95
+ assert_equal [:in, [[],[3..4]], false, '2', 'n'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod, rule[1].type]
96
+ end
97
+
98
+ def test_parses_and_priority
99
+ rule = Cldr::Export::Data::Plurals::Rule.parse('i = 0 or v != 1 and f % 2 = 3..4')
100
+ assert_equal 2, rule.size
101
+ assert_equal 2, rule[1].size
102
+ assert_equal [:is, 0, 'i'], [rule[0].operator, rule[0].operand, rule[0].type]
103
+ assert_equal [:is, 1, true, 'v'], [rule[1][0].operator, rule[1][0].operand, rule[1][0].negate, rule[1][0].type]
104
+ assert_equal [:in, [[],[3..4]], '2', 'f'], [rule[1][1].operator, rule[1][1].operand, rule[1][1].mod, rule[1][1].type]
88
105
  end
89
106
 
90
- def test_compiles_n
91
- assert_equal 'n', Cldr::Export::Data::Plurals::Rule.parse('n').to_ruby
107
+ def test_compiles_empty
108
+ assert_equal nil, Cldr::Export::Data::Plurals::Rule.parse('').to_ruby
109
+ assert_equal nil, Cldr::Export::Data::Plurals::Rule.parse(' ').to_ruby
110
+ assert_equal nil, Cldr::Export::Data::Plurals::Rule.parse(' @integer').to_ruby
111
+ assert_equal nil, Cldr::Export::Data::Plurals::Rule.parse('@decimal').to_ruby
92
112
  end
93
113
 
94
114
  def test_compiles_n_is_2
95
- assert_equal 'n == 2', Cldr::Export::Data::Plurals::Rule.parse('n is 2').to_ruby
115
+ assert_equal 'n.to_f == 2', Cldr::Export::Data::Plurals::Rule.parse('n is 2').to_ruby
96
116
  end
97
117
 
98
118
  def test_compiles_n_mod_1_is_2
99
- assert_equal 'n % 1 == 2', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is 2').to_ruby
119
+ assert_equal 'n.to_f % 1 == 2', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is 2').to_ruby
100
120
  end
101
121
 
102
122
  def test_compiles_n_is_not_2
103
- assert_equal 'n != 2', Cldr::Export::Data::Plurals::Rule.parse('n is not 2').to_ruby
123
+ assert_equal 'n.to_f != 2', Cldr::Export::Data::Plurals::Rule.parse('n is not 2').to_ruby
104
124
  end
105
125
 
106
126
  def test_compiles_n_mod_1_is_not_2
107
- assert_equal 'n % 1 != 2', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2').to_ruby
127
+ assert_equal 'n.to_f % 1 != 2', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2').to_ruby
108
128
  end
109
129
 
110
130
  def test_compiles_n_in_1_2
111
- assert_equal '[1, 2].include?(n)', Cldr::Export::Data::Plurals::Rule.parse('n in 1..2').to_ruby
131
+ assert_equal '((n.to_f % 1).zero? && (1..2).include?(n.to_f))', Cldr::Export::Data::Plurals::Rule.parse('n in 1..2').to_ruby
112
132
  end
113
133
 
114
134
  def test_compiles_n_mod_1_in_1_2
115
- assert_equal '[1, 2].include?(n % 1)', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 in 1..2').to_ruby
135
+ assert_equal '(((n.to_f % 1) % 1).zero? && (1..2).include?(n.to_f % 1))', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 in 1..2').to_ruby
116
136
  end
117
137
 
118
138
  def test_compiles_n_not_in_1_2
119
- assert_equal '![1, 2].include?(n)', Cldr::Export::Data::Plurals::Rule.parse('n not in 1..2').to_ruby
139
+ assert_equal '((n.to_f % 1).zero? && !(1..2).include?(n.to_f))', Cldr::Export::Data::Plurals::Rule.parse('n not in 1..2').to_ruby
120
140
  end
121
141
 
122
142
  def test_compiles_n_mod_1_not_in_1_2
123
- assert_equal '![1, 2].include?(n % 1)', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 not in 1..2').to_ruby
143
+ assert_equal '(((n.to_f % 1) % 1).zero? && !(1..2).include?(n.to_f % 1))', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 not in 1..2').to_ruby
124
144
  end
125
145
 
126
146
  def test_compiles_or_condition
127
- assert_equal 'n % 1 != 2 || [3, 4].include?(n % 2)', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4').to_ruby
147
+ assert_equal '(n.to_f % 1 != 2 || (((n.to_f % 2) % 1).zero? && (3..4).include?(n.to_f % 2)))', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4').to_ruby
128
148
  end
129
149
 
130
150
  def test_compiles_and_condition
131
- assert_equal 'n % 1 != 2 && [3, 4].include?(n % 2)', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4').to_ruby
151
+ assert_equal '(n.to_f % 1 != 2 && (((n.to_f % 2) % 1).zero? && (3..4).include?(n.to_f % 2)))', Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4').to_ruby
152
+ end
153
+
154
+ def test_compiles_and_priority
155
+ assert_equal '(n.to_i == 0 || (((v = n.to_s.split(".")[1]) ? v.length : 0) != 1 && (3..4).include?(((t = n.to_s.split(".")[1]) ? t.gsub(/0+$/, "").to_i : 0) % 2)))', Cldr::Export::Data::Plurals::Rule.parse('i = 0 or v != 1 and t mod 2 = 3..4').to_ruby
132
156
  end
133
157
 
134
158
  def test_compiles_n_mod_100_in_3_99
135
- assert_equal '[3, 4, 5, 6].include?(n % 100)', Cldr::Export::Data::Plurals::Rule.parse('n mod 100 in 3..6').to_ruby
159
+ assert_equal '(((n.to_f % 100) % 1).zero? && (3..6).include?(n.to_f % 100))', Cldr::Export::Data::Plurals::Rule.parse('n mod 100 in 3..6').to_ruby
136
160
  end
137
161
 
138
162
  def test_compiles_n_within_0_2
139
- assert_equal 'n.between?(0, 2)', Cldr::Export::Data::Plurals::Rule.parse('n within 0..2').to_ruby
140
- end
141
- end
163
+ assert_equal 'n.to_f.between?(0, 2)', Cldr::Export::Data::Plurals::Rule.parse('n within 0..2').to_ruby
164
+ end
165
+
166
+ def test_compiles_n_list_range
167
+ assert_equal '(![30, 34, 39].include?(n.to_f % 100) || (((n.to_f % 100) % 1).zero? && (!(10..19).include?(n.to_f % 100) || !(90..99).include?(n.to_f % 100))))', Cldr::Export::Data::Plurals::Rule.parse('n % 100 != 10..19,30,34,39,90..99').to_ruby
168
+ end
169
+
170
+ def test_compiles_n_list_range2
171
+ assert_equal '((n.to_f % 100) != 100 || (((n.to_f % 100) % 1).zero? && (!(10..19).include?(n.to_f % 100) || !(90..99).include?(n.to_f % 100))))', Cldr::Export::Data::Plurals::Rule.parse('n % 100 != 10..19,90..99,100').to_ruby
172
+ end
173
+
174
+ def test_eval_n_in
175
+ n = 3.3
176
+ assert_equal false, eval(Cldr::Export::Data::Plurals::Rule.parse('n mod 100 in 3..6').to_ruby, binding)
177
+ end
178
+
179
+ def test_n_negative
180
+ # one: i = 1 and v = 0 @integer 1
181
+ # other: @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
182
+ fn = eval(cldr_rules.rule(:de).to_ruby)
183
+ assert_equal :one, fn.call(-1)
184
+ assert_equal :one, fn.call("-1")
185
+ assert_equal :one, fn.call(1)
186
+ assert_equal :other, fn.call("1.0")
187
+ assert_equal :other, fn.call("-1.0")
188
+ assert_equal :other, fn.call(-5)
189
+ end
190
+
191
+ def test_n_digit
192
+ # one: n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0
193
+ # other: @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
194
+ fn = eval(cldr_rules.rule(:tzm).to_ruby)
195
+ assert_equal :one, fn.call(0)
196
+ assert_equal :one, fn.call(1)
197
+ assert_equal :one, fn.call(11)
198
+ assert_equal :one, fn.call(25.0)
199
+ assert_equal :one, fn.call("-62.00")
200
+ assert_equal :other, fn.call(2)
201
+ assert_equal :other, fn.call(10)
202
+ assert_equal :other, fn.call(25.1)
203
+ assert_equal :other, fn.call(111)
204
+ end
205
+
206
+ def test_n_string
207
+ # one: i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000
208
+ # other: @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
209
+ fn = eval(cldr_rules.rule(:pt).to_ruby)
210
+ assert_equal :one, fn.call("1")
211
+ assert_equal :one, fn.call("0.00100")
212
+ assert_equal :one, fn.call("-0.01")
213
+ assert_equal :other, fn.call("0")
214
+ assert_equal :other, fn.call("1.1")
215
+ assert_equal :other, fn.call("0.21")
216
+ end
217
+
218
+ def test_n_mod
219
+ # one: v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …
220
+ # few: v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …
221
+ # other: @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
222
+ fn = eval(cldr_rules.rule(:hr).to_ruby)
223
+ assert_equal :one, fn.call(1)
224
+ assert_equal :one, fn.call("21")
225
+ assert_equal :one, fn.call("131")
226
+ assert_equal :one, fn.call(11.321)
227
+ assert_equal :one, fn.call("25.01")
228
+ assert_equal :few, fn.call(24)
229
+ assert_equal :few, fn.call("252")
230
+ assert_equal :few, fn.call(2.04)
231
+ assert_equal :few, fn.call("113.0022")
232
+ assert_equal :other, fn.call("10")
233
+ assert_equal :other, fn.call("11")
234
+ assert_equal :other, fn.call(311)
235
+ assert_equal :other, fn.call("13")
236
+ assert_equal :other, fn.call(1212)
237
+ assert_equal :other, fn.call("0.10")
238
+ assert_equal :other, fn.call(0.11)
239
+ assert_equal :other, fn.call("0.220")
240
+ assert_equal :other, fn.call("41.0")
241
+ end
242
+ end
@@ -6,28 +6,28 @@ class TestCldrDataTerritories < Test::Unit::TestCase
6
6
  test 'territories :de' do
7
7
  codes = [:"001", :"002", :"003", :"005", :"009", :"011", :"013", :"014",
8
8
  :"015", :"017", :"018", :"019", :"021", :"029", :"030", :"034",
9
- :"035", :"039", :"053", :"054", :"057", :"061", :"062", :"142",
10
- :"143", :"145", :"150", :"151", :"154", :"155", :"172", :"419",
11
- :"830", :AD, :AE, :AF, :AG, :AI, :AL, :AM, :AN, :AO, :AQ, :AR,
12
- :AS, :AT, :AU, :AW, :AX, :AZ, :BA, :BB, :BD, :BE, :BF, :BG, :BH,
13
- :BI, :BJ, :BL, :BM, :BN, :BO, :BR, :BS, :BT, :BV, :BW, :BY, :BZ,
14
- :CA, :CC, :CD, :CF, :CG, :CH, :CI, :CK, :CL, :CM, :CN, :CO, :CR,
15
- :CS, :CU, :CV, :CX, :CY, :CZ, :DE, :DJ, :DK, :DM, :DO, :DZ, :EC,
16
- :EE, :EG, :EH, :ER, :ES, :ET, :FI, :FJ, :FK, :FM, :FO, :FR, :GA,
17
- :GB, :GD, :GE, :GF, :GG, :GH, :GI, :GL, :GM, :GN, :GP, :GQ, :GR,
18
- :GS, :GT, :GU, :GW, :GY, :HK, :HM, :HN, :HR, :HT, :HU, :ID, :IE,
19
- :IL, :IM, :IN, :IO, :IQ, :IR, :IS, :IT, :JE, :JM, :JO, :JP, :KE,
20
- :KG, :KH, :KI, :KM, :KN, :KP, :KR, :KW, :KY, :KZ, :LA, :LB, :LC,
21
- :LI, :LK, :LR, :LS, :LT, :LU, :LV, :LY, :MA, :MC, :MD, :ME, :MF,
22
- :MG, :MH, :MK, :ML, :MM, :MN, :MO, :MP, :MQ, :MR, :MS, :MT, :MU,
23
- :MV, :MW, :MX, :MY, :MZ, :NA, :NC, :NE, :NF, :NG, :NI, :NL, :NO,
24
- :NP, :NR, :NU, :NZ, :OM, :PA, :PE, :PF, :PG, :PH, :PK, :PL, :PM,
25
- :PN, :PR, :PS, :PT, :PW, :PY, :QA, :QO, :QU, :RE, :RO, :RS, :RU,
26
- :RW, :SA, :SB, :SC, :SD, :SE, :SG, :SH, :SI, :SJ, :SK, :SL, :SM,
27
- :SN, :SO, :SR, :ST, :SV, :SY, :SZ, :TC, :TD, :TF, :TG, :TH, :TJ,
28
- :TK, :TL, :TM, :TN, :TO, :TR, :TT, :TV, :TW, :TZ, :UA, :UG, :UM,
29
- :US, :UY, :UZ, :VA, :VC, :VE, :VG, :VI, :VN, :VU, :WF, :WS, :YE,
30
- :YT, :ZA, :ZM, :ZW, :ZZ]
9
+ :"035", :"039", :"053", :"054", :"057", :"061", :"142", :"143",
10
+ :"145", :"150", :"151", :"154", :"155", :"419", :AC, :AD, :AE,
11
+ :AF, :AG, :AI, :AL, :AM, :AN, :AO, :AQ, :AR, :AS, :AT, :AU, :AW,
12
+ :AX, :AZ, :BA, :BB, :BD, :BE, :BF, :BG, :BH, :BI, :BJ, :BL, :BM,
13
+ :BN, :BO, :BQ, :BR, :BS, :BT, :BV, :BW, :BY, :BZ, :CA, :CC, :CD,
14
+ :CF, :CG, :CH, :CI, :CK, :CL, :CM, :CN, :CO, :CP, :CR, :CU, :CV,
15
+ :CW, :CX, :CY, :CZ, :DE, :DG, :DJ, :DK, :DM, :DO, :DZ, :EA, :EC,
16
+ :EE, :EG, :EH, :ER, :ES, :ET, :EU, :FI, :FJ, :FK, :FM, :FO, :FR,
17
+ :GA, :GB, :GD, :GE, :GF, :GG, :GH, :GI, :GL, :GM, :GN, :GP, :GQ,
18
+ :GR, :GS, :GT, :GU, :GW, :GY, :HK, :HM, :HN, :HR, :HT, :HU, :IC,
19
+ :ID, :IE, :IL, :IM, :IN, :IO, :IQ, :IR, :IS, :IT, :JE, :JM, :JO,
20
+ :JP, :KE, :KG, :KH, :KI, :KM, :KN, :KP, :KR, :KW, :KY, :KZ, :LA,
21
+ :LB, :LC, :LI, :LK, :LR, :LS, :LT, :LU, :LV, :LY, :MA, :MC, :MD,
22
+ :ME, :MF, :MG, :MH, :MK, :ML, :MM, :MN, :MO, :MP, :MQ, :MR, :MS,
23
+ :MT, :MU, :MV, :MW, :MX, :MY, :MZ, :NA, :NC, :NE, :NF, :NG, :NI,
24
+ :NL, :NO, :NP, :NR, :NU, :NZ, :OM, :PA, :PE, :PF, :PG, :PH, :PK,
25
+ :PL, :PM, :PN, :PR, :PS, :PT, :PW, :PY, :QA, :QO, :RE, :RO, :RS,
26
+ :RU, :RW, :SA, :SB, :SC, :SD, :SE, :SG, :SH, :SI, :SJ, :SK, :SL,
27
+ :SM, :SN, :SO, :SR, :SS, :ST, :SV, :SX, :SY, :SZ, :TA, :TC, :TD,
28
+ :TF, :TG, :TH, :TJ, :TK, :TL, :TM, :TN, :TO, :TR, :TT, :TV, :TW,
29
+ :TZ, :UA, :UG, :UM, :US, :UY, :UZ, :VA, :VC, :VE, :VG, :VI, :VN,
30
+ :VU, :WF, :WS, :XK, :YE, :YT, :ZA, :ZM, :ZW, :ZZ]
31
31
 
32
32
  territories = Cldr::Export::Data::Territories.new(:de)[:territories]
33
33
  assert (territories.keys - codes).empty? && (codes - territories.keys).empty?
@@ -5,41 +5,64 @@ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'
5
5
  class TestCldrDataTimezones < Test::Unit::TestCase
6
6
  test 'timezones :de' do
7
7
  codes = [:"Etc/Unknown", :"Europe/Tirane", :"Asia/Yerevan",
8
- :"America/Curacao", :"Antarctica/South_Pole",
9
- :"Antarctica/Vostok", :"Antarctica/DumontDUrville",
10
- :"Europe/Vienna", :"Europe/Brussels", :"Africa/Ouagadougou",
11
- :"Atlantic/Bermuda", :"Europe/Zurich", :"Pacific/Easter",
12
- :"America/Havana", :"Atlantic/Cape_Verde", :"Indian/Christmas",
13
- :"Asia/Nicosia", :"Africa/Djibouti", :"Europe/Copenhagen",
14
- :"Africa/Algiers", :"Africa/Cairo", :"Africa/El_Aaiun",
8
+ :"Antarctica/South_Pole", :"Antarctica/Vostok",
9
+ :"Antarctica/DumontDUrville", :"Europe/Vienna", :"Europe/Brussels",
10
+ :"Africa/Ouagadougou", :"Africa/Porto-Novo", :"America/St_Barthelemy",
11
+ :"Atlantic/Bermuda", :"America/Sao_Paulo", :"America/Coral_Harbour",
12
+ :"America/St_Johns", :"Europe/Zurich", :"Pacific/Easter",
13
+ :"Asia/Kashgar", :"America/Bogota", :"America/Havana",
14
+ :"Atlantic/Cape_Verde", :"America/Curacao", :"Indian/Christmas",
15
+ :"Asia/Nicosia", :"Europe/Prague", :"Europe/Busingen",
16
+ :"Africa/Djibouti", :"Europe/Copenhagen", :"Africa/Algiers",
17
+ :"Africa/Cairo", :"Africa/El_Aaiun", :"Africa/Asmera",
15
18
  :"Atlantic/Canary", :"Africa/Addis_Ababa", :"Pacific/Fiji",
16
- :"Atlantic/Faeroe", :"Asia/Tbilisi", :"Africa/Accra",
17
- :"Europe/Athens", :"Atlantic/South_Georgia", :"Asia/Hong_Kong",
18
- :"Asia/Baghdad", :"Asia/Tehran", :"Europe/Rome",
19
- :"America/Jamaica", :"Asia/Tokyo", :"Asia/Bishkek",
20
- :"Indian/Comoro", :"America/St_Kitts", :"Asia/Pyongyang",
21
- :"America/Cayman", :"Asia/Aqtobe", :"America/St_Lucia",
22
- :"Europe/Vilnius", :"Europe/Luxembourg", :"Africa/Tripoli",
23
- :"Europe/Chisinau", :"Asia/Macau", :"Indian/Maldives",
24
- :"America/Mexico_City", :"Africa/Niamey", :"Asia/Muscat",
25
- :"Europe/Warsaw", :"Atlantic/Azores", :"Europe/Lisbon",
26
- :"America/Asuncion", :"Asia/Qatar", :"Indian/Reunion",
27
- :"Europe/Bucharest", :"Europe/Moscow", :"Asia/Yekaterinburg",
28
- :"Asia/Novosibirsk", :"Asia/Krasnoyarsk", :"Asia/Yakutsk",
19
+ :"Pacific/Truk", :"Pacific/Ponape", :"Atlantic/Faeroe",
20
+ :"Europe/London", :"Asia/Tbilisi", :"Africa/Accra", :"America/Godthab",
21
+ :"America/Scoresbysund", :"Europe/Athens", :"Atlantic/South_Georgia",
22
+ :"Asia/Hong_Kong", :"Asia/Jayapura", :"Europe/Dublin", :"Asia/Calcutta",
23
+ :"Asia/Baghdad", :"Asia/Tehran", :"Atlantic/Reykjavik", :"Europe/Rome",
24
+ :"America/Jamaica", :"Asia/Tokyo", :"Asia/Bishkek", :"Indian/Comoro",
25
+ :"America/St_Kitts", :"Asia/Pyongyang", :"America/Cayman",
26
+ :"Asia/Aqtobe", :"America/St_Lucia", :"Europe/Vilnius",
27
+ :"Europe/Luxembourg", :"Africa/Tripoli", :"Europe/Chisinau",
28
+ :"Asia/Macau", :"Indian/Maldives", :"America/Mexico_City",
29
+ :"Asia/Katmandu", :"Asia/Muscat", :"Europe/Warsaw", :"Atlantic/Azores",
30
+ :"Europe/Lisbon", :"America/Asuncion", :"Asia/Qatar", :"Indian/Reunion",
31
+ :"Europe/Bucharest", :"Europe/Belgrade", :"Europe/Moscow",
32
+ :"Europe/Volgograd", :"Asia/Yekaterinburg", :"Asia/Novosibirsk",
33
+ :"Asia/Novokuznetsk", :"Asia/Krasnoyarsk", :"Asia/Yakutsk",
29
34
  :"Asia/Vladivostok", :"Asia/Sakhalin", :"Asia/Kamchatka",
30
35
  :"Asia/Riyadh", :"Africa/Khartoum", :"Asia/Singapore",
31
36
  :"Atlantic/St_Helena", :"Africa/Mogadishu", :"Africa/Sao_Tome",
32
- :"America/El_Salvador", :"Asia/Damascus", :"Asia/Dushanbe",
33
- :"America/Port_of_Spain", :"Asia/Taipei", :"Africa/Dar_es_Salaam",
34
- :"Europe/Uzhgorod", :"Europe/Kiev", :"Europe/Zaporozhye",
35
- :"America/Indiana/Knox", :"Asia/Tashkent", :"America/St_Vincent",
36
- :"America/St_Thomas"]
37
-
37
+ :"America/El_Salvador", :"America/Lower_Princes", :"Asia/Damascus",
38
+ :"Africa/Lome", :"Asia/Dushanbe", :"America/Port_of_Spain",
39
+ :"Asia/Taipei", :"Africa/Dar_es_Salaam", :"Europe/Uzhgorod",
40
+ :"Europe/Kiev", :"Europe/Zaporozhye", :"America/North_Dakota/Beulah",
41
+ :"America/North_Dakota/New_Salem", :"America/North_Dakota/Center",
42
+ :"America/Indiana/Vincennes", :"America/Indiana/Petersburg",
43
+ :"America/Indiana/Tell_City", :"America/Indiana/Knox",
44
+ :"America/Indiana/Winamac", :"America/Indiana/Marengo",
45
+ :"America/Indiana/Vevay", :"America/Kentucky/Monticello",
46
+ :"Asia/Tashkent", :"Europe/Vatican", :"America/St_Vincent",
47
+ :"America/St_Thomas", :"Asia/Saigon"]
48
+
38
49
  timezones = Cldr::Export::Data::Timezones.new(:de)[:timezones]
39
50
  assert (timezones.keys - codes).empty? && (codes - timezones.keys).empty?
40
51
  assert_equal({ :city => 'Wien' }, timezones[:"Europe/Vienna"])
41
52
  end
42
53
 
54
+ test 'timezone daylight' do
55
+ london = Cldr::Export::Data::Timezones.new(:de)[:timezones][:'Europe/London']
56
+ assert_equal({ :long => { :daylight => 'Britische Sommerzeit'} }, london)
57
+ end
58
+
59
+ test 'metazone :de Europe_Western' do
60
+ europe_western = Cldr::Export::Data::Timezones.new(:de)[:metazones][:Europe_Western]
61
+ long = { :generic => 'Westeuropäische Zeit', :standard => 'Westeuropäische Normalzeit', :daylight => 'Westeuropäische Sommerzeit' }
62
+ short = { :generic => 'WEZ', :standard => 'WEZ', :daylight => 'WESZ' }
63
+ assert_equal({ :long => long, :short => short }, europe_western)
64
+ end
65
+
43
66
  # Cldr::Export::Data.locales.each do |locale|
44
67
  # test "extract timezones for #{locale}" do
45
68
  # assert_nothing_raised do