ruby-cldr 0.0.1 → 0.0.2

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 (97) hide show
  1. data/Gemfile +7 -0
  2. data/Gemfile.lock +23 -0
  3. data/README.textile +9 -6
  4. data/VERSION +1 -1
  5. data/lib/cldr.rb +1 -1
  6. data/lib/cldr/data.rb +9 -29
  7. data/lib/cldr/download.rb +2 -2
  8. data/lib/cldr/export.rb +8 -2
  9. data/lib/cldr/export/code.rb +34 -0
  10. data/lib/cldr/export/code/numbers.rb +29 -0
  11. data/lib/cldr/export/data.rb +36 -0
  12. data/lib/cldr/export/data/base.rb +61 -0
  13. data/lib/cldr/export/data/calendars.rb +14 -0
  14. data/lib/cldr/export/data/calendars/gregorian.rb +142 -0
  15. data/lib/cldr/export/data/currencies.rb +28 -0
  16. data/lib/cldr/export/data/delimiters.rb +29 -0
  17. data/lib/cldr/export/data/languages.rb +19 -0
  18. data/lib/cldr/export/data/numbers.rb +67 -0
  19. data/lib/cldr/export/data/plurals.rb +41 -0
  20. data/lib/cldr/{data → export/data}/plurals/cldr_grammar.treetop +0 -0
  21. data/lib/cldr/export/data/plurals/grammar.rb +538 -0
  22. data/lib/cldr/export/data/plurals/rules.rb +119 -0
  23. data/lib/cldr/export/data/territories.rb +19 -0
  24. data/lib/cldr/export/data/timezones.rb +27 -0
  25. data/lib/cldr/export/data/units.rb +29 -0
  26. data/lib/cldr/export/ruby.rb +1 -1
  27. data/lib/cldr/export/yaml.rb +1 -1
  28. data/lib/cldr/format.rb +1 -97
  29. data/lib/cldr/format/currency.rb +1 -1
  30. data/lib/cldr/format/date.rb +1 -1
  31. data/lib/cldr/format/datetime.rb +14 -18
  32. data/lib/cldr/format/datetime/base.rb +1 -1
  33. data/lib/cldr/format/decimal.rb +1 -1
  34. data/lib/cldr/format/decimal/base.rb +1 -1
  35. data/lib/cldr/format/decimal/fraction.rb +1 -1
  36. data/lib/cldr/format/decimal/integer.rb +1 -1
  37. data/lib/cldr/format/decimal/number.rb +1 -1
  38. data/lib/cldr/format/percent.rb +1 -1
  39. data/lib/cldr/format/time.rb +1 -1
  40. data/lib/cldr/thor.rb +3 -3
  41. data/test/all.rb +1 -1
  42. data/test/export/code/numbers_test.rb +11 -0
  43. data/test/{data → export/data}/all.rb +1 -1
  44. data/test/{data → export/data}/calendars_test.rb +18 -18
  45. data/test/{data → export/data}/currencies_test.rb +6 -6
  46. data/test/{data → export/data}/delimiters_test.rb +6 -6
  47. data/test/{data → export/data}/languages_test.rb +6 -6
  48. data/test/{data → export/data}/numbers_test.rb +8 -8
  49. data/test/export/data/plurals_test.rb +141 -0
  50. data/test/{data → export/data}/territories_test.rb +6 -6
  51. data/test/{data → export/data}/timezones_test.rb +6 -6
  52. data/test/{data → export/data}/units_test.rb +6 -6
  53. data/test/export_test.rb +8 -8
  54. data/test/{formats → format}/all.rb +1 -1
  55. data/test/format/currency_test.rb +0 -0
  56. data/test/format/date_test.rb +265 -0
  57. data/test/format/datetime_test.rb +18 -0
  58. data/test/{formats → format}/decimal/fraction_test.rb +4 -4
  59. data/test/{formats → format}/decimal/integer_test.rb +17 -17
  60. data/test/{formats → format}/decimal/number_test.rb +19 -19
  61. data/test/{formats → format}/decimal_test.rb +5 -5
  62. data/test/format/percent_test.rb +0 -0
  63. data/test/format/time_test.rb +195 -0
  64. data/test/test_autotest.rb +36 -0
  65. data/test/test_helper.rb +16 -1
  66. metadata +124 -114
  67. data/lib/cldr/data/base.rb +0 -66
  68. data/lib/cldr/data/calendars.rb +0 -12
  69. data/lib/cldr/data/calendars/gregorian.rb +0 -124
  70. data/lib/cldr/data/currencies.rb +0 -26
  71. data/lib/cldr/data/delimiters.rb +0 -21
  72. data/lib/cldr/data/languages.rb +0 -17
  73. data/lib/cldr/data/numbers.rb +0 -60
  74. data/lib/cldr/data/plurals.rb +0 -39
  75. data/lib/cldr/data/plurals/grammar.rb +0 -536
  76. data/lib/cldr/data/plurals/rules.rb +0 -113
  77. data/lib/cldr/data/territories.rb +0 -17
  78. data/lib/cldr/data/timezones.rb +0 -25
  79. data/lib/cldr/data/units.rb +0 -25
  80. data/test/data/plurals_test.rb +0 -132
  81. data/test/formats/datetime/all.rb +0 -3
  82. data/test/formats/datetime/date_test.rb +0 -31
  83. data/test/formats/datetime/datetime_test.rb +0 -18
  84. data/test/formats/datetime/day_test.rb +0 -41
  85. data/test/formats/datetime/hour_test.rb +0 -79
  86. data/test/formats/datetime/minute_test.rb +0 -25
  87. data/test/formats/datetime/month_test.rb +0 -76
  88. data/test/formats/datetime/period_test.rb +0 -20
  89. data/test/formats/datetime/quarter_test.rb +0 -118
  90. data/test/formats/datetime/second_test.rb +0 -80
  91. data/test/formats/datetime/time_test.rb +0 -33
  92. data/test/formats/datetime/timezone_test.rb +0 -23
  93. data/test/formats/datetime/year_test.rb +0 -57
  94. data/test/formats/format_test.rb +0 -66
  95. data/test/formats/rails_compat/all.rb +0 -3
  96. data/test/formats/rails_compat/format_integer_test.rb +0 -56
  97. data/test/formats/rails_compat/format_number_test.rb +0 -134
data/lib/cldr/thor.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'thor'
2
2
  require 'cldr'
3
3
 
4
- class Cldr
4
+ module Cldr
5
5
  class Thor < ::Thor
6
6
  namespace 'cldr'
7
7
 
8
- desc "download [--source=http://unicode.org/Public/cldr/1.7.2/core.zip] [--target=./vendor]",
8
+ desc "download [--source=http://unicode.org/Public/cldr/2.0.1/core.zip] [--target=./vendor]",
9
9
  "Download and extract CLDR data from source to target dir"
10
10
  method_options %w(source -s) => :string,
11
11
  %w(target -t) => :string
@@ -30,4 +30,4 @@ class Cldr
30
30
 
31
31
  # TODO flatten task, e.g. flatten all plural locale files into one big file
32
32
  end
33
- end
33
+ end
data/test/all.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  Dir["#{File.dirname(__FILE__)}/**/*_test.rb"].each do |filename|
2
- require filename
2
+ require File.expand_path(filename)
3
3
  end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ # require File.dirname(__FILE__) + '/../../test_helper.rb'
4
+ #
5
+ # class TestExportCodeNumbers < Test::Unit::TestCase
6
+ # define_method :"test: symbols" do
7
+ # puts Cldr::Export::Code::Numbers.new(:de).build
8
+ # symbols = Cldr::Data[:de]::Numbers.symbols
9
+ # assert symbols.is_a?(Hash) && symbols.has_key?(:decimal)
10
+ # end
11
+ # end
@@ -1,3 +1,3 @@
1
1
  Dir["#{File.dirname(__FILE__)}/**/*_test.rb"].each do |filename|
2
- require filename
2
+ require File.expand_path(filename)
3
3
  end
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
- require File.dirname(__FILE__) + '/../test_helper.rb'
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
4
  require 'core_ext/hash/deep_stringify_keys'
5
5
 
6
6
  class TestCldrDataCalendars < Test::Unit::TestCase
@@ -9,7 +9,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
9
9
  Cldr::Export.data(:calendars, locale, options)[:calendars][:gregorian]
10
10
  end
11
11
 
12
- define_method 'test: calendars months :de' do
12
+ test 'calendars months :de' do
13
13
  months = {
14
14
  :format => {
15
15
  :wide => { 1 => 'Januar', 2 => 'Februar', 3 => 'März', 4 => 'April', 5 => 'Mai', 6 => 'Juni', 7 => 'Juli', 8 => 'August', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Dezember' },
@@ -25,7 +25,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
25
25
  assert_equal months, gregorian[:months]
26
26
  end
27
27
 
28
- define_method 'test: calendars days :de' do
28
+ test 'calendars days :de' do
29
29
  days = {
30
30
  :format => {
31
31
  :wide => { :sun => 'Sonntag', :mon => 'Montag', :tue => 'Dienstag', :wed => 'Mittwoch', :thu => 'Donnerstag', :fri => 'Freitag', :sat => 'Samstag' },
@@ -41,7 +41,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
41
41
  assert_equal days, gregorian[:days]
42
42
  end
43
43
 
44
- define_method 'test: calendars quarters :de' do
44
+ test 'calendars quarters :de' do
45
45
  quarters = {
46
46
  :format => {
47
47
  :wide => { 1 => "1. Quartal", 2 => "2. Quartal", 3 => "3. Quartal", 4 => "4. Quartal" },
@@ -57,7 +57,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
57
57
  assert_equal quarters, gregorian[:quarters]
58
58
  end
59
59
 
60
- define_method 'test: calendars periods :de' do
60
+ test 'calendars periods :de' do
61
61
  periods = {
62
62
  :am => 'vorm.',
63
63
  :pm => 'nachm.',
@@ -78,7 +78,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
78
78
  # <alias source="locale" path="../eraAbbr"/>
79
79
  # </eraNarrow>
80
80
  # </eras>
81
- # define_method 'test: calendars eras :de' do
81
+ # test 'calendars eras :de' do
82
82
  # eras = {
83
83
  # 0 => { :abbr => "v. Chr.", :name => "v. Chr." },
84
84
  # 1 => { :abbr => "n. Chr.", :name => "n. Chr." }
@@ -86,7 +86,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
86
86
  # assert_equal eras, gregorian[:eras]
87
87
  # end
88
88
 
89
- define_method 'test: calendars date formats :de' do
89
+ test 'calendars date formats :de' do
90
90
  formats = {
91
91
  :default => :"calendars.gregorian.formats.date.medium",
92
92
  :full => { :pattern => "EEEE, d. MMMM y" },
@@ -97,7 +97,7 @@ class TestCldrDataCalendars < Test::Unit::TestCase
97
97
  assert_equal formats, gregorian[:formats][:date]
98
98
  end
99
99
 
100
- define_method 'test: calendars time formats :de' do
100
+ test 'calendars time formats :de' do
101
101
  formats = {
102
102
  :default => :"calendars.gregorian.formats.time.medium",
103
103
  :full => { :pattern => "HH:mm:ss zzzz" },
@@ -108,18 +108,18 @@ class TestCldrDataCalendars < Test::Unit::TestCase
108
108
  assert_equal formats, gregorian[:formats][:time]
109
109
  end
110
110
 
111
- define_method 'test: calendars datetime formats :de' do
111
+ test 'calendars datetime formats :de' do
112
112
  formats = {
113
113
  :default => :"calendars.gregorian.formats.datetime.medium",
114
- :full => { :pattern => "{1} {0}"},
115
- :long => { :pattern => "{1} {0}"},
116
- :medium => { :pattern => "{1} {0}"},
117
- :short => { :pattern => "{1} {0}"}
114
+ :full => { :pattern => "{{date}} {{time}}"},
115
+ :long => { :pattern => "{{date}} {{time}}"},
116
+ :medium => { :pattern => "{{date}} {{time}}"},
117
+ :short => { :pattern => "{{date}} {{time}}"}
118
118
  }
119
119
  assert_equal formats, gregorian[:formats][:datetime]
120
120
  end
121
121
 
122
- define_method 'test: calendars fields :de' do
122
+ test 'calendars fields :de' do
123
123
  fields = {
124
124
  :hour => "Stunde",
125
125
  :minute => "Minute",
@@ -136,14 +136,14 @@ class TestCldrDataCalendars < Test::Unit::TestCase
136
136
  assert_equal fields, gregorian[:fields]
137
137
  end
138
138
 
139
- define_method 'test: merged calendars for de-AT contains all date format and stand-alone name types' do
139
+ test 'merged calendars for de-AT contains all date format and stand-alone name types' do
140
140
  assert_equal %w(abbreviated narrow wide), gregorian(:merged => true)[:months][:format].keys.map { |key| key.to_s }.sort
141
141
  assert_equal %w(abbreviated narrow wide), gregorian(:merged => true)[:months][:"stand-alone"].keys.map { |key| key.to_s }.sort
142
142
  end
143
143
 
144
- # Cldr::Data.locales.each do |locale|
145
- # define_method "test: extract calendars for #{locale}" do
146
- # Cldr::Data::Calendars.new(locale)
144
+ # Cldr::Export::Data.locales.each do |locale|
145
+ # test "extract calendars for #{locale}" do
146
+ # Cldr::Export::Data::Calendars.new(locale)
147
147
  # end
148
148
  # end
149
149
  end
@@ -1,9 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- require File.dirname(__FILE__) + '/../test_helper.rb'
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
4
 
5
5
  class TestCldrCurrencies < Test::Unit::TestCase
6
- define_method 'test: currencies :de' do
6
+ test 'currencies :de' do
7
7
  codes = [:ADP, :AED, :AFA, :AFN, :ALL, :AMD, :ANG, :AOA, :AOK, :AON, :AOR,
8
8
  :ARA, :ARP, :ARS, :ATS, :AUD, :AWG, :AZM, :AZN, :BAD, :BAM, :BBD,
9
9
  :BDT, :BEC, :BEF, :BEL, :BGL, :BGN, :BHD, :BIF, :BMD, :BND, :BOB,
@@ -30,15 +30,15 @@ class TestCldrCurrencies < Test::Unit::TestCase
30
30
  :XPF, :XPT, :XRE, :XTS, :XXX, :YDD, :YER, :YUD, :YUM, :YUN, :ZAL,
31
31
  :ZAR, :ZMK, :ZRN, :ZRZ, :ZWD]
32
32
 
33
- currencies = Cldr::Data::Currencies.new('de')[:currencies]
33
+ currencies = Cldr::Export::Data::Currencies.new('de')[:currencies]
34
34
  assert (currencies.keys - codes).empty? && (codes - currencies.keys).empty?
35
35
  assert_equal({ :one => 'Euro', :other => 'Euro' }, currencies[:EUR])
36
36
  end
37
37
 
38
- # Cldr::Data.locales.each do |locale|
39
- # define_method "test: extract currencies for #{locale}" do
38
+ # Cldr::Export::Data.locales.each do |locale|
39
+ # test "extract currencies for #{locale}" do
40
40
  # assert_nothing_raised do
41
- # Cldr::Data::Currencies.new(locale)
41
+ # Cldr::Export::Data::Currencies.new(locale)
42
42
  # end
43
43
  # end
44
44
  # end
@@ -1,9 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- require File.dirname(__FILE__) + '/../test_helper.rb'
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
4
 
5
5
  class TestCldrDataDelimiters < Test::Unit::TestCase
6
- define_method 'test: delimiters :de' do
6
+ test 'delimiters :de' do
7
7
  expected = {
8
8
  :delimiters => {
9
9
  :quotes => {
@@ -18,13 +18,13 @@ class TestCldrDataDelimiters < Test::Unit::TestCase
18
18
  }
19
19
  }
20
20
  }
21
- assert_equal expected, Cldr::Data::Delimiters.new('de')
21
+ assert_equal expected, Cldr::Export::Data::Delimiters.new('de')
22
22
  end
23
23
 
24
- # Cldr::Data.locales.each do |locale|
25
- # define_method "test: extract delimiters for #{locale}" do
24
+ # Cldr::Export::Data.locales.each do |locale|
25
+ # test "extract delimiters for #{locale}" do
26
26
  # assert_nothing_raised do
27
- # Cldr::Data::Delimiters.new(locale)
27
+ # Cldr::Export::Data::Delimiters.new(locale)
28
28
  # end
29
29
  # end
30
30
  # end
@@ -1,9 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- require File.dirname(__FILE__) + '/../test_helper.rb'
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
4
 
5
5
  class TestCldrDataLanguages < Test::Unit::TestCase
6
- define_method 'test: languages :de' do
6
+ test 'languages :de' do
7
7
  codes = [:aa, :ab, :ace, :ach, :ada, :ady, :ae, :af, :afa, :afh, :ain,
8
8
  :ak, :akk, :ale, :alg, :alt, :am, :an, :ang, :anp, :apa, :ar,
9
9
  :arc, :arn, :arp, :art, :arw, :as, :ast, :ath, :aus, :av, :awa,
@@ -50,16 +50,16 @@ class TestCldrDataLanguages < Test::Unit::TestCase
50
50
  :was, :wen, :wo, :xal, :xh, :yao, :yap, :yi, :yo, :ypk, :za, :zap,
51
51
  :zbl, :zen, :zh, :"zh-Hans", :"zh-Hant", :znd, :zu, :zun, :zxx, :zza]
52
52
 
53
- languages = Cldr::Data::Languages.new('de')[:languages]
53
+ languages = Cldr::Export::Data::Languages.new('de')[:languages]
54
54
 
55
55
  assert (languages.keys - codes).empty? && (codes - languages.keys).empty?
56
56
  assert_equal('Deutsch', languages[:de])
57
57
  end
58
58
 
59
- # Cldr::Data.locales.each do |locale|
60
- # define_method "test: extract languages for #{locale}" do
59
+ # Cldr::Export::Data.locales.each do |locale|
60
+ # test "extract languages for #{locale}" do
61
61
  # assert_nothing_raised do
62
- # Cldr::Data::Languages.new(locale)
62
+ # Cldr::Export::Data::Languages.new(locale)
63
63
  # end
64
64
  # end
65
65
  # end
@@ -1,9 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- require File.dirname(__FILE__) + '/../test_helper.rb'
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
4
 
5
5
  class TestCldrDataNumbers < Test::Unit::TestCase
6
- define_method "test: number symbols :de" do
6
+ test "number symbols :de" do
7
7
  expected = {
8
8
  :nan => "NaN",
9
9
  :decimal => ",",
@@ -18,10 +18,10 @@ class TestCldrDataNumbers < Test::Unit::TestCase
18
18
  :infinity => "∞",
19
19
  :pattern_digit => "#"
20
20
  }
21
- assert_equal expected, Cldr::Data::Numbers.new('de')[:numbers][:symbols]
21
+ assert_equal expected, Cldr::Export::Data::Numbers.new('de')[:numbers][:symbols]
22
22
  end
23
23
 
24
- define_method "test: number formats :de" do
24
+ test "number formats :de" do
25
25
  expected = {
26
26
  :decimal => {
27
27
  :patterns => {
@@ -48,13 +48,13 @@ class TestCldrDataNumbers < Test::Unit::TestCase
48
48
  }
49
49
  }
50
50
  }
51
- assert_equal expected, Cldr::Data::Numbers.new('de')[:numbers][:formats]
51
+ assert_equal expected, Cldr::Export::Data::Numbers.new('de')[:numbers][:formats]
52
52
  end
53
53
 
54
- # Cldr::Data.locales.each do |locale|
55
- # define_method "test: extract number_symbols for #{locale}" do
54
+ # Cldr::Export::Data.locales.each do |locale|
55
+ # test "extract number_symbols for #{locale}" do
56
56
  # assert_nothing_raised do
57
- # Cldr::Data::Numbers.new(locale)
57
+ # Cldr::Export::Data::Numbers.new(locale)
58
58
  # end
59
59
  # end
60
60
  # end
@@ -0,0 +1,141 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../../test_helper')
2
+
3
+ class TestCldrDataPluralParser < Test::Unit::TestCase
4
+ def cldr_data
5
+ File.read(File.dirname(__FILE__) + '/../../../vendor/cldr/common/supplemental/plurals.xml')
6
+ end
7
+
8
+ def cldr_rules
9
+ Cldr::Export::Data::Plurals::Rules.parse(cldr_data)
10
+ end
11
+
12
+ def test_compiles_to_valid_ruby_code
13
+ assert_nothing_raised { eval(cldr_rules.to_ruby) }
14
+ end
15
+
16
+ def test_evals_to_a_hash_containing_plural_rule_and_keys_per_locale
17
+ data = eval(cldr_rules.to_ruby)
18
+ assert Hash === data
19
+ assert Proc === data[:de][:i18n][:plural][:rule]
20
+ assert_equal [:one, :other], data[:de][:i18n][:plural][:keys]
21
+ end
22
+
23
+ def test_lookup_rule_by_locale
24
+ assert_equal "lambda { |n| n == 1 ? :one : :other }", cldr_rules.rule(:de).to_ruby
25
+ end
26
+
27
+ def test_parses_n
28
+ assert Cldr::Export::Data::Plurals::Rule.parse('n').is_a?(Cldr::Export::Data::Plurals::Expression)
29
+ end
30
+
31
+ def test_parses_n_is_1
32
+ rule = Cldr::Export::Data::Plurals::Rule.parse('n is 1')
33
+ assert_equal [:is, '1'], [rule.operator, rule.operand]
34
+ end
35
+
36
+ def test_parses_n_mod_1_is_1
37
+ rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is 1')
38
+ assert_equal [:is, '1', '1'], [rule.operator, rule.operand, rule.mod]
39
+ end
40
+
41
+ def test_parses_n_is_not_1
42
+ rule = Cldr::Export::Data::Plurals::Rule.parse('n is not 1')
43
+ assert_equal [:is, '1', true], [rule.operator, rule.operand, rule.negate]
44
+ end
45
+
46
+ def test_parses_n_mod_1_is_not_1
47
+ 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]
49
+ end
50
+
51
+ def test_parses_n_in_1_2
52
+ rule = Cldr::Export::Data::Plurals::Rule.parse('n in 1..2')
53
+ assert_equal [:in, '[1, 2]'], [rule.operator, rule.operand]
54
+ end
55
+
56
+ def test_parses_n_mod_1_in_1_2
57
+ 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]
59
+ end
60
+
61
+ def test_parses_n_not_in_1_2
62
+ 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]
64
+ end
65
+
66
+ def test_parses_n_mod_1_not_in_1_2
67
+ 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]
69
+ end
70
+
71
+ def test_parses_n_within_0_2
72
+ expression = Cldr::Export::Data::Plurals::Rule.parse('n within 0..2')
73
+ assert_equal [:within, %w{0 2}], [expression.operator, expression.operand]
74
+ end
75
+
76
+ def test_parses_or_condition
77
+ rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4')
78
+ 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]
81
+ end
82
+
83
+ def test_parses_and_condition
84
+ rule = Cldr::Export::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4')
85
+ 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]
88
+ end
89
+
90
+ def test_compiles_n
91
+ assert_equal 'n', Cldr::Export::Data::Plurals::Rule.parse('n').to_ruby
92
+ end
93
+
94
+ def test_compiles_n_is_2
95
+ assert_equal 'n == 2', Cldr::Export::Data::Plurals::Rule.parse('n is 2').to_ruby
96
+ end
97
+
98
+ 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
100
+ end
101
+
102
+ def test_compiles_n_is_not_2
103
+ assert_equal 'n != 2', Cldr::Export::Data::Plurals::Rule.parse('n is not 2').to_ruby
104
+ end
105
+
106
+ 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
108
+ end
109
+
110
+ 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
112
+ end
113
+
114
+ 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
116
+ end
117
+
118
+ 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
120
+ end
121
+
122
+ 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
124
+ end
125
+
126
+ 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
128
+ end
129
+
130
+ 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
132
+ end
133
+
134
+ 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
136
+ end
137
+
138
+ 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
@@ -1,9 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
- require File.dirname(__FILE__) + '/../test_helper.rb'
3
+ require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
4
4
 
5
5
  class TestCldrDataTerritories < Test::Unit::TestCase
6
- define_method 'test: territories :de' do
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
9
  :"035", :"039", :"053", :"054", :"057", :"061", :"062", :"142",
@@ -29,15 +29,15 @@ class TestCldrDataTerritories < Test::Unit::TestCase
29
29
  :US, :UY, :UZ, :VA, :VC, :VE, :VG, :VI, :VN, :VU, :WF, :WS, :YE,
30
30
  :YT, :ZA, :ZM, :ZW, :ZZ]
31
31
 
32
- territories = Cldr::Data::Territories.new(:de)[:territories]
32
+ territories = Cldr::Export::Data::Territories.new(:de)[:territories]
33
33
  assert (territories.keys - codes).empty? && (codes - territories.keys).empty?
34
34
  assert_equal('Deutschland', territories[:DE])
35
35
  end
36
36
 
37
- # Cldr::Data.locales.each do |locale|
38
- # define_method "test: extract territories for #{locale}" do
37
+ # Cldr::Export::Data.locales.each do |locale|
38
+ # test "extract territories for #{locale}" do
39
39
  # assert_nothing_raised do
40
- # Cldr::Data::Territories.new(locale)
40
+ # Cldr::Export::Data::Territories.new(locale)
41
41
  # end
42
42
  # end
43
43
  # end