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.
- data/Gemfile +7 -0
- data/Gemfile.lock +23 -0
- data/README.textile +9 -6
- data/VERSION +1 -1
- data/lib/cldr.rb +1 -1
- data/lib/cldr/data.rb +9 -29
- data/lib/cldr/download.rb +2 -2
- data/lib/cldr/export.rb +8 -2
- data/lib/cldr/export/code.rb +34 -0
- data/lib/cldr/export/code/numbers.rb +29 -0
- data/lib/cldr/export/data.rb +36 -0
- data/lib/cldr/export/data/base.rb +61 -0
- data/lib/cldr/export/data/calendars.rb +14 -0
- data/lib/cldr/export/data/calendars/gregorian.rb +142 -0
- data/lib/cldr/export/data/currencies.rb +28 -0
- data/lib/cldr/export/data/delimiters.rb +29 -0
- data/lib/cldr/export/data/languages.rb +19 -0
- data/lib/cldr/export/data/numbers.rb +67 -0
- data/lib/cldr/export/data/plurals.rb +41 -0
- data/lib/cldr/{data → export/data}/plurals/cldr_grammar.treetop +0 -0
- data/lib/cldr/export/data/plurals/grammar.rb +538 -0
- data/lib/cldr/export/data/plurals/rules.rb +119 -0
- data/lib/cldr/export/data/territories.rb +19 -0
- data/lib/cldr/export/data/timezones.rb +27 -0
- data/lib/cldr/export/data/units.rb +29 -0
- data/lib/cldr/export/ruby.rb +1 -1
- data/lib/cldr/export/yaml.rb +1 -1
- data/lib/cldr/format.rb +1 -97
- data/lib/cldr/format/currency.rb +1 -1
- data/lib/cldr/format/date.rb +1 -1
- data/lib/cldr/format/datetime.rb +14 -18
- data/lib/cldr/format/datetime/base.rb +1 -1
- data/lib/cldr/format/decimal.rb +1 -1
- data/lib/cldr/format/decimal/base.rb +1 -1
- data/lib/cldr/format/decimal/fraction.rb +1 -1
- data/lib/cldr/format/decimal/integer.rb +1 -1
- data/lib/cldr/format/decimal/number.rb +1 -1
- data/lib/cldr/format/percent.rb +1 -1
- data/lib/cldr/format/time.rb +1 -1
- data/lib/cldr/thor.rb +3 -3
- data/test/all.rb +1 -1
- data/test/export/code/numbers_test.rb +11 -0
- data/test/{data → export/data}/all.rb +1 -1
- data/test/{data → export/data}/calendars_test.rb +18 -18
- data/test/{data → export/data}/currencies_test.rb +6 -6
- data/test/{data → export/data}/delimiters_test.rb +6 -6
- data/test/{data → export/data}/languages_test.rb +6 -6
- data/test/{data → export/data}/numbers_test.rb +8 -8
- data/test/export/data/plurals_test.rb +141 -0
- data/test/{data → export/data}/territories_test.rb +6 -6
- data/test/{data → export/data}/timezones_test.rb +6 -6
- data/test/{data → export/data}/units_test.rb +6 -6
- data/test/export_test.rb +8 -8
- data/test/{formats → format}/all.rb +1 -1
- data/test/format/currency_test.rb +0 -0
- data/test/format/date_test.rb +265 -0
- data/test/format/datetime_test.rb +18 -0
- data/test/{formats → format}/decimal/fraction_test.rb +4 -4
- data/test/{formats → format}/decimal/integer_test.rb +17 -17
- data/test/{formats → format}/decimal/number_test.rb +19 -19
- data/test/{formats → format}/decimal_test.rb +5 -5
- data/test/format/percent_test.rb +0 -0
- data/test/format/time_test.rb +195 -0
- data/test/test_autotest.rb +36 -0
- data/test/test_helper.rb +16 -1
- metadata +124 -114
- data/lib/cldr/data/base.rb +0 -66
- data/lib/cldr/data/calendars.rb +0 -12
- data/lib/cldr/data/calendars/gregorian.rb +0 -124
- data/lib/cldr/data/currencies.rb +0 -26
- data/lib/cldr/data/delimiters.rb +0 -21
- data/lib/cldr/data/languages.rb +0 -17
- data/lib/cldr/data/numbers.rb +0 -60
- data/lib/cldr/data/plurals.rb +0 -39
- data/lib/cldr/data/plurals/grammar.rb +0 -536
- data/lib/cldr/data/plurals/rules.rb +0 -113
- data/lib/cldr/data/territories.rb +0 -17
- data/lib/cldr/data/timezones.rb +0 -25
- data/lib/cldr/data/units.rb +0 -25
- data/test/data/plurals_test.rb +0 -132
- data/test/formats/datetime/all.rb +0 -3
- data/test/formats/datetime/date_test.rb +0 -31
- data/test/formats/datetime/datetime_test.rb +0 -18
- data/test/formats/datetime/day_test.rb +0 -41
- data/test/formats/datetime/hour_test.rb +0 -79
- data/test/formats/datetime/minute_test.rb +0 -25
- data/test/formats/datetime/month_test.rb +0 -76
- data/test/formats/datetime/period_test.rb +0 -20
- data/test/formats/datetime/quarter_test.rb +0 -118
- data/test/formats/datetime/second_test.rb +0 -80
- data/test/formats/datetime/time_test.rb +0 -33
- data/test/formats/datetime/timezone_test.rb +0 -23
- data/test/formats/datetime/year_test.rb +0 -57
- data/test/formats/format_test.rb +0 -66
- data/test/formats/rails_compat/all.rb +0 -3
- data/test/formats/rails_compat/format_integer_test.rb +0 -56
- 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
|
-
|
4
|
+
module Cldr
|
5
5
|
class Thor < ::Thor
|
6
6
|
namespace 'cldr'
|
7
7
|
|
8
|
-
desc "download [--source=http://unicode.org/Public/cldr/
|
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
@@ -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,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require File.dirname(__FILE__) + '
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
#
|
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
|
-
|
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
|
-
|
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
|
-
|
111
|
+
test 'calendars datetime formats :de' do
|
112
112
|
formats = {
|
113
113
|
:default => :"calendars.gregorian.formats.datetime.medium",
|
114
|
-
:full => { :pattern => "{
|
115
|
-
:long => { :pattern => "{
|
116
|
-
:medium => { :pattern => "{
|
117
|
-
:short => { :pattern => "{
|
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
|
-
|
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
|
-
|
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
|
-
#
|
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__) + '
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
|
4
4
|
|
5
5
|
class TestCldrCurrencies < Test::Unit::TestCase
|
6
|
-
|
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
|
-
#
|
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__) + '
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
|
4
4
|
|
5
5
|
class TestCldrDataDelimiters < Test::Unit::TestCase
|
6
|
-
|
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
|
-
#
|
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__) + '
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
|
4
4
|
|
5
5
|
class TestCldrDataLanguages < Test::Unit::TestCase
|
6
|
-
|
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
|
-
#
|
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__) + '
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
|
4
4
|
|
5
5
|
class TestCldrDataNumbers < Test::Unit::TestCase
|
6
|
-
|
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
|
-
|
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
|
-
#
|
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__) + '
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__) + '/../../test_helper'))
|
4
4
|
|
5
5
|
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
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
|
-
#
|
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
|