ruby-cldr 0.0.1

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 (80) hide show
  1. data/LICENSE +20 -0
  2. data/README.textile +104 -0
  3. data/Rakefile +18 -0
  4. data/TODO +68 -0
  5. data/VERSION +1 -0
  6. data/cldr.thor +5 -0
  7. data/lib/cldr/data/base.rb +66 -0
  8. data/lib/cldr/data/calendars/gregorian.rb +124 -0
  9. data/lib/cldr/data/calendars.rb +12 -0
  10. data/lib/cldr/data/currencies.rb +26 -0
  11. data/lib/cldr/data/delimiters.rb +21 -0
  12. data/lib/cldr/data/languages.rb +17 -0
  13. data/lib/cldr/data/numbers.rb +60 -0
  14. data/lib/cldr/data/plurals/cldr_grammar.treetop +50 -0
  15. data/lib/cldr/data/plurals/grammar.rb +536 -0
  16. data/lib/cldr/data/plurals/rules.rb +113 -0
  17. data/lib/cldr/data/plurals.rb +39 -0
  18. data/lib/cldr/data/territories.rb +17 -0
  19. data/lib/cldr/data/timezones.rb +25 -0
  20. data/lib/cldr/data/units.rb +25 -0
  21. data/lib/cldr/data.rb +34 -0
  22. data/lib/cldr/download.rb +20 -0
  23. data/lib/cldr/export/ruby.rb +16 -0
  24. data/lib/cldr/export/yaml.rb +39 -0
  25. data/lib/cldr/export.rb +69 -0
  26. data/lib/cldr/format/currency.rb +11 -0
  27. data/lib/cldr/format/date.rb +144 -0
  28. data/lib/cldr/format/datetime/base.rb +32 -0
  29. data/lib/cldr/format/datetime.rb +28 -0
  30. data/lib/cldr/format/decimal/base.rb +18 -0
  31. data/lib/cldr/format/decimal/fraction.rb +28 -0
  32. data/lib/cldr/format/decimal/integer.rb +46 -0
  33. data/lib/cldr/format/decimal/number.rb +44 -0
  34. data/lib/cldr/format/decimal.rb +32 -0
  35. data/lib/cldr/format/percent.rb +11 -0
  36. data/lib/cldr/format/time.rb +71 -0
  37. data/lib/cldr/format.rb +113 -0
  38. data/lib/cldr/thor.rb +33 -0
  39. data/lib/cldr.rb +7 -0
  40. data/lib/core_ext/hash/deep_merge.rb +7 -0
  41. data/lib/core_ext/hash/deep_stringify_keys.rb +11 -0
  42. data/lib/core_ext/hash/symbolize_keys.rb +10 -0
  43. data/lib/core_ext/string/camelize.rb +5 -0
  44. data/lib/core_ext/string/underscore.rb +9 -0
  45. data/test/all.rb +3 -0
  46. data/test/data/all.rb +3 -0
  47. data/test/data/calendars_test.rb +149 -0
  48. data/test/data/currencies_test.rb +47 -0
  49. data/test/data/delimiters_test.rb +31 -0
  50. data/test/data/languages_test.rb +67 -0
  51. data/test/data/numbers_test.rb +61 -0
  52. data/test/data/plurals_test.rb +132 -0
  53. data/test/data/territories_test.rb +51 -0
  54. data/test/data/timezones_test.rb +56 -0
  55. data/test/data/units_test.rb +36 -0
  56. data/test/export_test.rb +57 -0
  57. data/test/formats/all.rb +3 -0
  58. data/test/formats/datetime/all.rb +3 -0
  59. data/test/formats/datetime/date_test.rb +31 -0
  60. data/test/formats/datetime/datetime_test.rb +18 -0
  61. data/test/formats/datetime/day_test.rb +41 -0
  62. data/test/formats/datetime/hour_test.rb +79 -0
  63. data/test/formats/datetime/minute_test.rb +25 -0
  64. data/test/formats/datetime/month_test.rb +76 -0
  65. data/test/formats/datetime/period_test.rb +20 -0
  66. data/test/formats/datetime/quarter_test.rb +118 -0
  67. data/test/formats/datetime/second_test.rb +80 -0
  68. data/test/formats/datetime/time_test.rb +33 -0
  69. data/test/formats/datetime/timezone_test.rb +23 -0
  70. data/test/formats/datetime/year_test.rb +57 -0
  71. data/test/formats/decimal/fraction_test.rb +17 -0
  72. data/test/formats/decimal/integer_test.rb +67 -0
  73. data/test/formats/decimal/number_test.rb +77 -0
  74. data/test/formats/decimal_test.rb +19 -0
  75. data/test/formats/format_test.rb +66 -0
  76. data/test/formats/rails_compat/all.rb +3 -0
  77. data/test/formats/rails_compat/format_integer_test.rb +56 -0
  78. data/test/formats/rails_compat/format_number_test.rb +134 -0
  79. data/test/test_helper.rb +5 -0
  80. metadata +169 -0
@@ -0,0 +1,132 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
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::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::Data::Plurals::Rule.parse('n').is_a?(Cldr::Data::Plurals::Expression)
29
+ end
30
+
31
+ def test_parses_n_is_1
32
+ rule = Cldr::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::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::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::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::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::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::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::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_or_condition
72
+ rule = Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4')
73
+ assert_equal 2, rule.size
74
+ assert_equal [:is, '2', true, '1'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod]
75
+ assert_equal [:in, '[3, 4]', false, '2'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod]
76
+ end
77
+
78
+ def test_parses_and_condition
79
+ rule = Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4')
80
+ assert_equal 2, rule.size
81
+ assert_equal [:is, '2', true, '1'], [rule[0].operator, rule[0].operand, rule[0].negate, rule[0].mod]
82
+ assert_equal [:in, '[3, 4]', false, '2'], [rule[1].operator, rule[1].operand, rule[1].negate, rule[1].mod]
83
+ end
84
+
85
+ def test_compiles_n
86
+ assert_equal 'n', Cldr::Data::Plurals::Rule.parse('n').to_ruby
87
+ end
88
+
89
+ def test_compiles_n_is_2
90
+ assert_equal 'n == 2', Cldr::Data::Plurals::Rule.parse('n is 2').to_ruby
91
+ end
92
+
93
+ def test_compiles_n_mod_1_is_2
94
+ assert_equal 'n % 1 == 2', Cldr::Data::Plurals::Rule.parse('n mod 1 is 2').to_ruby
95
+ end
96
+
97
+ def test_compiles_n_is_not_2
98
+ assert_equal 'n != 2', Cldr::Data::Plurals::Rule.parse('n is not 2').to_ruby
99
+ end
100
+
101
+ def test_compiles_n_mod_1_is_not_2
102
+ assert_equal 'n % 1 != 2', Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2').to_ruby
103
+ end
104
+
105
+ def test_compiles_n_in_1_2
106
+ assert_equal '[1, 2].include?(n)', Cldr::Data::Plurals::Rule.parse('n in 1..2').to_ruby
107
+ end
108
+
109
+ def test_compiles_n_mod_1_in_1_2
110
+ assert_equal '[1, 2].include?(n % 1)', Cldr::Data::Plurals::Rule.parse('n mod 1 in 1..2').to_ruby
111
+ end
112
+
113
+ def test_compiles_n_not_in_1_2
114
+ assert_equal '![1, 2].include?(n)', Cldr::Data::Plurals::Rule.parse('n not in 1..2').to_ruby
115
+ end
116
+
117
+ def test_compiles_n_mod_1_not_in_1_2
118
+ assert_equal '![1, 2].include?(n % 1)', Cldr::Data::Plurals::Rule.parse('n mod 1 not in 1..2').to_ruby
119
+ end
120
+
121
+ def test_compiles_or_condition
122
+ assert_equal 'n % 1 != 2 || [3, 4].include?(n % 2)', Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 or n mod 2 in 3..4').to_ruby
123
+ end
124
+
125
+ def test_compiles_and_condition
126
+ assert_equal 'n % 1 != 2 && [3, 4].include?(n % 2)', Cldr::Data::Plurals::Rule.parse('n mod 1 is not 2 and n mod 2 in 3..4').to_ruby
127
+ end
128
+
129
+ def test_compiles_n_mod_100_in_3_99
130
+ assert_equal '[3, 4, 5, 6].include?(n % 100)', Cldr::Data::Plurals::Rule.parse('n mod 100 in 3..6').to_ruby
131
+ end
132
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../test_helper.rb'
4
+
5
+ class TestCldrDataTerritories < Test::Unit::TestCase
6
+ define_method 'test: territories :de' do
7
+ codes = [:"001", :"002", :"003", :"005", :"009", :"011", :"013", :"014",
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]
31
+
32
+ territories = Cldr::Data::Territories.new(:de)[:territories]
33
+ assert (territories.keys - codes).empty? && (codes - territories.keys).empty?
34
+ assert_equal('Deutschland', territories[:DE])
35
+ end
36
+
37
+ # Cldr::Data.locales.each do |locale|
38
+ # define_method "test: extract territories for #{locale}" do
39
+ # assert_nothing_raised do
40
+ # Cldr::Data::Territories.new(locale)
41
+ # end
42
+ # end
43
+ # end
44
+ end
45
+
46
+
47
+
48
+
49
+
50
+
51
+
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../test_helper.rb'
4
+
5
+ class TestCldrDataTimezones < Test::Unit::TestCase
6
+ define_method 'test: timezones :de' do
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",
15
+ :"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",
29
+ :"Asia/Vladivostok", :"Asia/Sakhalin", :"Asia/Kamchatka",
30
+ :"Asia/Riyadh", :"Africa/Khartoum", :"Asia/Singapore",
31
+ :"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
+
38
+ timezones = Cldr::Data::Timezones.new(:de)[:timezones]
39
+ assert (timezones.keys - codes).empty? && (codes - timezones.keys).empty?
40
+ assert_equal({ :city => 'Wien' }, timezones[:"Europe/Vienna"])
41
+ end
42
+
43
+ # Cldr::Data.locales.each do |locale|
44
+ # define_method "test: extract timezones for #{locale}" do
45
+ # assert_nothing_raised do
46
+ # Cldr::Data::Timezones.new(locale)
47
+ # end
48
+ # end
49
+ # end
50
+ end
51
+
52
+
53
+
54
+
55
+
56
+
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../test_helper.rb'
4
+
5
+ class TestCldrDataUnits < Test::Unit::TestCase
6
+ define_method 'test: units' do
7
+ units = {
8
+ :day => { :one => "{0} Tag", :other => "{0} Tage" },
9
+ :week => { :one => "{0} Woche", :other => "{0} Wochen" },
10
+ :month => { :one => "{0} Monat", :other => "{0} Monate" },
11
+ :year => { :one => "{0} Jahr", :other => "{0} Jahre" },
12
+ :hour => { :one => "{0} Std.", :other => "{0} Std." },
13
+ :minute => { :one => "{0} Min.", :other => "{0} Min." },
14
+ :second => { :one => "{0} Sek.", :other => "{0} Sek." }
15
+ }
16
+ keys = %w(day week month year hour minute second).sort
17
+ data = Cldr::Data::Units.new('de')[:units]
18
+
19
+ assert_equal keys, data.keys.map { |key| key.to_s }.sort
20
+ assert_equal units[:day], data[:day]
21
+ assert_equal units[:week], data[:week]
22
+ assert_equal units[:month], data[:month]
23
+ assert_equal units[:year], data[:year]
24
+ assert_equal units[:hour], data[:hour]
25
+ assert_equal units[:minute], data[:minute]
26
+ assert_equal units[:second], data[:second]
27
+ end
28
+
29
+ # Cldr::Data.locales.each do |locale|
30
+ # define_method "test: extract units for #{locale}" do
31
+ # assert_nothing_raised do
32
+ # Cldr::Data::Units.new(locale)
33
+ # end
34
+ # end
35
+ # end
36
+ end
@@ -0,0 +1,57 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/test_helper.rb'
4
+ require 'yaml'
5
+ require 'fileutils'
6
+
7
+ class TestExtract < Test::Unit::TestCase
8
+ def setup
9
+ Cldr::Export.base_path = tmp_dir
10
+ FileUtils.mkdir_p(tmp_dir) rescue nil
11
+ end
12
+
13
+ def teardown
14
+ FileUtils.rm_r(tmp_dir)
15
+ end
16
+
17
+ def tmp_dir
18
+ File.expand_path(File.dirname(__FILE__) + '/tmp')
19
+ end
20
+
21
+ define_method 'test: passing the merge option generates and merge data for all fallback locales' do
22
+ data = Cldr::Export.data('numbers', 'de-AT')
23
+ assert !data[:numbers][:formats][:nan]
24
+
25
+ data = Cldr::Export.data('numbers', 'de-AT', :merge => true)
26
+ assert_equal 'NaN', data[:numbers][:symbols][:nan]
27
+ end
28
+
29
+ define_method "test: exports data to files" do
30
+ Cldr::Export.export(:locales => %w(de), :components => %w(calendars))
31
+ assert File.exists?(Cldr::Export.path('de', 'calendars', 'yml'))
32
+ end
33
+
34
+ define_method "test: exported data starts with the locale at top level" do
35
+ Cldr::Export.export(:locales => %w(de), :components => %w(calendars))
36
+ data = YAML.load(File.open(Cldr::Export.path('de', 'calendars', 'yml')))
37
+ assert data['de']
38
+ end
39
+
40
+ define_method "test: writes dot-separated symbols to yaml" do
41
+ data = { :format => { :narrow => :"calendars.gregorian.months.stand-alone.narrow" } }
42
+ yaml = %(\nformat: \n narrow: :"calendars.gregorian.months.stand-alone.narrow")
43
+
44
+ assert_equal yaml, Cldr::Export::Yaml.new.emit(data.deep_stringify_keys)
45
+ end
46
+
47
+ # Cldr::Data.locales.each do |locale|
48
+ # Cldr::Data.components.each do |component|
49
+ # define_method "test: exported yaml file yaml for #{locale}/#{component} readable" do
50
+ # Cldr::Export.export(:locales => [locale], :components => [component])
51
+ # assert_nothing_raised do
52
+ # YAML.load(File.open(Cldr::Data::Export.path(locale, component))) rescue Errno::ENOENT
53
+ # end
54
+ # end
55
+ # end
56
+ # end
57
+ end
@@ -0,0 +1,3 @@
1
+ Dir["#{File.dirname(__FILE__)}/**/*_test.rb"].each do |filename|
2
+ require filename
3
+ end
@@ -0,0 +1,3 @@
1
+ Dir["#{File.dirname(__FILE__)}/**/*_test.rb"].each do |filename|
2
+ require filename
3
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ def format(object, pattern)
13
+ Cldr::Format::Date.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ define_method "test: full date pattern :de" do
17
+ assert_equal 'Montag, 11. Januar 2010', format(Date.new(2010, 1, 11), 'EEEE, d. MMMM y')
18
+ end
19
+
20
+ define_method "test: long date pattern :de" do
21
+ assert_equal '11. Januar 2010', format(Date.new(2010, 1, 11), 'd. MMMM y')
22
+ end
23
+
24
+ define_method "test: medium date pattern :de" do
25
+ assert_equal '11.01.2010', format(Date.new(2010, 1, 11), 'dd.MM.yyyy')
26
+ end
27
+
28
+ define_method "test: short date pattern :de" do
29
+ assert_equal '11.01.10', format(Date.new(2010, 1, 11), 'dd.MM.yy')
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDatetimeFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ define_method "test: datetime pattern :de" do
13
+ date = Cldr::Format::Date.new('dd.MM.yyyy', @calendar)
14
+ time = Cldr::Format::Time.new('HH:mm', @calendar)
15
+ result = Cldr::Format::Datetime.new('{1} {0}', date, time).apply(DateTime.new(2010, 1, 10, 13, 12, 11))
16
+ assert_equal '10.01.2010 13:12', result
17
+ end
18
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateDayFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ def format(object, pattern)
13
+ Cldr::Format::Date.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ # DAY
17
+
18
+ define_method "test: pattern d" do
19
+ assert_equal '1', format(Date.new(2010, 1, 1), 'd')
20
+ assert_equal '10', format(Date.new(2010, 1, 10), 'd')
21
+ end
22
+
23
+ define_method "test: pattern dd" do
24
+ assert_equal '01', format(Date.new(2010, 1, 1), 'dd')
25
+ assert_equal '10', format(Date.new(2010, 1, 10), 'dd')
26
+ end
27
+
28
+ define_method "test: pattern E, EE, EEE" do
29
+ assert_equal 'Fr.', format(Date.new(2010, 1, 1), 'E')
30
+ assert_equal 'Fr.', format(Date.new(2010, 1, 1), 'EE')
31
+ assert_equal 'Fr.', format(Date.new(2010, 1, 1), 'EEE')
32
+ end
33
+
34
+ define_method "test: pattern EEEE" do
35
+ assert_equal 'Freitag', format(Date.new(2010, 1, 1), 'EEEE')
36
+ end
37
+
38
+ define_method "test: pattern EEEEE" do
39
+ assert_equal 'F', format(Date.new(2010, 1, 1), 'EEEEE')
40
+ end
41
+ end
@@ -0,0 +1,79 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateHourFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ def format(object, pattern)
13
+ Cldr::Format::Time.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ define_method "test: h" do
17
+ assert_equal '12', format(Time.local(2000, 1, 1, 0, 1, 1), 'h')
18
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'h')
19
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'h')
20
+ assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'h')
21
+ assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'h')
22
+ end
23
+
24
+ define_method "test: hh" do
25
+ assert_equal '12', format(Time.local(2000, 1, 1, 0, 1, 1), 'hh')
26
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'hh')
27
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'hh')
28
+ assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'hh')
29
+ assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'hh')
30
+ end
31
+
32
+ define_method "test: H" do
33
+ assert_equal '0', format(Time.local(2000, 1, 1, 0, 1, 1), 'H')
34
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'H')
35
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'H')
36
+ assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'H')
37
+ assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'H')
38
+ end
39
+
40
+ define_method "test: HH" do
41
+ assert_equal '00', format(Time.local(2000, 1, 1, 0, 1, 1), 'HH')
42
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'HH')
43
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'HH')
44
+ assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'HH')
45
+ assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'HH')
46
+ end
47
+
48
+ define_method "test: K" do
49
+ assert_equal '0', format(Time.local(2000, 1, 1, 0, 1, 1), 'K')
50
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'K')
51
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'K')
52
+ assert_equal '0', format(Time.local(2000, 1, 1, 12, 1, 1), 'K')
53
+ assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'K')
54
+ end
55
+
56
+ define_method "test: KK" do
57
+ assert_equal '00', format(Time.local(2000, 1, 1, 0, 1, 1), 'KK')
58
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'KK')
59
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'KK')
60
+ assert_equal '00', format(Time.local(2000, 1, 1, 12, 1, 1), 'KK')
61
+ assert_equal '11', format(Time.local(2000, 1, 1, 23, 1, 1), 'KK')
62
+ end
63
+
64
+ define_method "test: k" do
65
+ assert_equal '24', format(Time.local(2000, 1, 1, 0, 1, 1), 'k')
66
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'k')
67
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'k')
68
+ assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'k')
69
+ assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'k')
70
+ end
71
+
72
+ define_method "test: kk" do
73
+ assert_equal '24', format(Time.local(2000, 1, 1, 0, 1, 1), 'kk')
74
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'kk')
75
+ assert_equal '11', format(Time.local(2000, 1, 1, 11, 1, 1), 'kk')
76
+ assert_equal '12', format(Time.local(2000, 1, 1, 12, 1, 1), 'kk')
77
+ assert_equal '23', format(Time.local(2000, 1, 1, 23, 1, 1), 'kk')
78
+ end
79
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateMinuteFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ def format(object, pattern)
13
+ Cldr::Format::Time.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ define_method "test: m" do
17
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 'm')
18
+ assert_equal '11', format(Time.local(2000, 1, 1, 1, 11, 1), 'm')
19
+ end
20
+
21
+ define_method "test: mm" do
22
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'mm')
23
+ assert_equal '11', format(Time.local(2000, 1, 1, 1, 11, 1), 'mm')
24
+ end
25
+ end
@@ -0,0 +1,76 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateMonthFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ def format(object, pattern)
13
+ Cldr::Format::Date.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ # MONTH
17
+
18
+ define_method "test: pattern M" do
19
+ assert_equal '1', format(Date.new(2010, 1, 1), 'M')
20
+ assert_equal '10', format(Date.new(2010, 10, 1), 'M')
21
+ end
22
+
23
+ define_method "test: pattern MM" do
24
+ assert_equal '01', format(Date.new(2010, 1, 1), 'MM')
25
+ assert_equal '10', format(Date.new(2010, 10, 1), 'MM')
26
+ end
27
+
28
+ define_method "test: pattern MMM" do
29
+ assert_equal 'Jan', format(Date.new(2010, 1, 1), 'MMM')
30
+ assert_equal 'Okt', format(Date.new(2010, 10, 1), 'MMM')
31
+ end
32
+
33
+ define_method "test: pattern MMMM" do
34
+ assert_equal 'Januar', format(Date.new(2010, 1, 1), 'MMMM')
35
+ assert_equal 'Oktober', format(Date.new(2010, 10, 1), 'MMMM')
36
+ end
37
+
38
+ # requires cldr's "multiple inheritance"
39
+ #
40
+ # define_method "test: pattern MMMMM" do
41
+ # assert_equal 'J', format(Date.new(2010, 1, 1), 'MMMMM')
42
+ # assert_equal 'O', format(Date.new(2010, 10, 1), 'MMMMM')
43
+ # end
44
+
45
+ define_method "test: pattern L" do
46
+ assert_equal '1', format(Date.new(2010, 1, 1), 'L')
47
+ assert_equal '10', format(Date.new(2010, 10, 1), 'L')
48
+ end
49
+
50
+ define_method "test: pattern LL" do
51
+ assert_equal '01', format(Date.new(2010, 1, 1), 'LL')
52
+ assert_equal '10', format(Date.new(2010, 10, 1), 'LL')
53
+ end
54
+
55
+ # requires cldr's "multiple inheritance"
56
+ #
57
+ # define_method "test: pattern LLL" do
58
+ # assert_equal 'Jan', format(Date.new(2010, 1, 1), 'LLL')
59
+ # assert_equal 'Okt', format(Date.new(2010, 10, 1), 'LLL')
60
+ # end
61
+ #
62
+ # define_method "test: pattern LLLL" do
63
+ # assert_equal 'Januar', format(Date.new(2010, 1, 1), 'LLLL')
64
+ # assert_equal 'Oktober', format(Date.new(2010, 10, 1), 'LLLL')
65
+ # end
66
+ #
67
+ # define_method "test: pattern LLLLL" do
68
+ # assert_equal 'J', format(Date.new(2010, 1, 1), 'LLLLL')
69
+ # assert_equal 'O', format(Date.new(2010, 10, 1), 'LLLLL')
70
+ # end
71
+
72
+ define_method "test: pattern LLLLL" do
73
+ assert_equal 'J', format(Date.new(2010, 1, 1), 'LLLLL')
74
+ assert_equal 'O', format(Date.new(2010, 10, 1), 'LLLLL')
75
+ end
76
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDatePeriodFormat < Test::Unit::TestCase
7
+ def setup
8
+ @locale = :de
9
+ @calendar = Cldr::Data::Calendars.new(@locale)[:calendars][:gregorian]
10
+ end
11
+
12
+ def format(object, pattern)
13
+ Cldr::Format::Time.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ define_method "test: a" do
17
+ assert_equal 'vorm.', format(Time.local(2000, 1, 1, 1, 1, 1), 'a')
18
+ assert_equal 'nachm.', format(Time.local(2000, 1, 1, 15, 1, 1), 'a')
19
+ end
20
+ end