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,118 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateQuarterFormat < 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
+ # QUARTER
17
+
18
+ define_method "test: pattern Q" do
19
+ assert_equal '1', format(Date.new(2010, 1, 1), 'Q')
20
+ assert_equal '1', format(Date.new(2010, 3, 31), 'Q')
21
+ assert_equal '2', format(Date.new(2010, 4, 1), 'Q')
22
+ assert_equal '2', format(Date.new(2010, 6, 30), 'Q')
23
+ assert_equal '3', format(Date.new(2010, 7, 1), 'Q')
24
+ assert_equal '3', format(Date.new(2010, 9, 30), 'Q')
25
+ assert_equal '4', format(Date.new(2010, 10, 1), 'Q')
26
+ assert_equal '4', format(Date.new(2010, 12, 31), 'Q')
27
+ end
28
+
29
+ define_method "test: pattern QQ" do
30
+ assert_equal '01', format(Date.new(2010, 1, 1), 'QQ')
31
+ assert_equal '01', format(Date.new(2010, 3, 31), 'QQ')
32
+ assert_equal '02', format(Date.new(2010, 4, 1), 'QQ')
33
+ assert_equal '02', format(Date.new(2010, 6, 30), 'QQ')
34
+ assert_equal '03', format(Date.new(2010, 7, 1), 'QQ')
35
+ assert_equal '03', format(Date.new(2010, 9, 30), 'QQ')
36
+ assert_equal '04', format(Date.new(2010, 10, 1), 'QQ')
37
+ assert_equal '04', format(Date.new(2010, 12, 31), 'QQ')
38
+ end
39
+
40
+ define_method "test: pattern QQQ" do
41
+ assert_equal 'Q1', format(Date.new(2010, 1, 1), 'QQQ')
42
+ assert_equal 'Q1', format(Date.new(2010, 3, 31), 'QQQ')
43
+ assert_equal 'Q2', format(Date.new(2010, 4, 1), 'QQQ')
44
+ assert_equal 'Q2', format(Date.new(2010, 6, 30), 'QQQ')
45
+ assert_equal 'Q3', format(Date.new(2010, 7, 1), 'QQQ')
46
+ assert_equal 'Q3', format(Date.new(2010, 9, 30), 'QQQ')
47
+ assert_equal 'Q4', format(Date.new(2010, 10, 1), 'QQQ')
48
+ assert_equal 'Q4', format(Date.new(2010, 12, 31), 'QQQ')
49
+ end
50
+
51
+ define_method "test: pattern QQQQ" do
52
+ assert_equal '1. Quartal', format(Date.new(2010, 1, 1), 'QQQQ')
53
+ assert_equal '1. Quartal', format(Date.new(2010, 3, 31), 'QQQQ')
54
+ assert_equal '2. Quartal', format(Date.new(2010, 4, 1), 'QQQQ')
55
+ assert_equal '2. Quartal', format(Date.new(2010, 6, 30), 'QQQQ')
56
+ assert_equal '3. Quartal', format(Date.new(2010, 7, 1), 'QQQQ')
57
+ assert_equal '3. Quartal', format(Date.new(2010, 9, 30), 'QQQQ')
58
+ assert_equal '4. Quartal', format(Date.new(2010, 10, 1), 'QQQQ')
59
+ assert_equal '4. Quartal', format(Date.new(2010, 12, 31), 'QQQQ')
60
+ end
61
+
62
+ define_method "test: pattern q" do
63
+ assert_equal '1', format(Date.new(2010, 1, 1), 'q')
64
+ assert_equal '1', format(Date.new(2010, 3, 31), 'q')
65
+ assert_equal '2', format(Date.new(2010, 4, 1), 'q')
66
+ assert_equal '2', format(Date.new(2010, 6, 30), 'q')
67
+ assert_equal '3', format(Date.new(2010, 7, 1), 'q')
68
+ assert_equal '3', format(Date.new(2010, 9, 30), 'q')
69
+ assert_equal '4', format(Date.new(2010, 10, 1), 'q')
70
+ assert_equal '4', format(Date.new(2010, 12, 31), 'q')
71
+ end
72
+
73
+ define_method "test: pattern qq" do
74
+ assert_equal '01', format(Date.new(2010, 1, 1), 'qq')
75
+ assert_equal '01', format(Date.new(2010, 3, 31), 'qq')
76
+ assert_equal '02', format(Date.new(2010, 4, 1), 'qq')
77
+ assert_equal '02', format(Date.new(2010, 6, 30), 'qq')
78
+ assert_equal '03', format(Date.new(2010, 7, 1), 'qq')
79
+ assert_equal '03', format(Date.new(2010, 9, 30), 'qq')
80
+ assert_equal '04', format(Date.new(2010, 10, 1), 'qq')
81
+ assert_equal '04', format(Date.new(2010, 12, 31), 'qq')
82
+ end
83
+
84
+ # requires "multiple inheritance"
85
+ #
86
+ # define_method "test: pattern qqq" do
87
+ # assert_equal 'Q1', format(Date.new(2010, 1, 1), 'qqq')
88
+ # assert_equal 'Q1', format(Date.new(2010, 3, 31), 'qqq')
89
+ # assert_equal 'Q2', format(Date.new(2010, 4, 1), 'qqq')
90
+ # assert_equal 'Q2', format(Date.new(2010, 6, 30), 'qqq')
91
+ # assert_equal 'Q3', format(Date.new(2010, 7, 1), 'qqq')
92
+ # assert_equal 'Q3', format(Date.new(2010, 9, 30), 'qqq')
93
+ # assert_equal 'Q4', format(Date.new(2010, 10, 1), 'qqq')
94
+ # assert_equal 'Q4', format(Date.new(2010, 12, 31), 'qqq')
95
+ # end
96
+ #
97
+ # define_method "test: pattern qqqq" do
98
+ # assert_equal '1. Quartal', format(Date.new(2010, 1, 1), 'qqqq')
99
+ # assert_equal '1. Quartal', format(Date.new(2010, 3, 31), 'qqqq')
100
+ # assert_equal '2. Quartal', format(Date.new(2010, 4, 1), 'qqqq')
101
+ # assert_equal '2. Quartal', format(Date.new(2010, 6, 30), 'qqqq')
102
+ # assert_equal '3. Quartal', format(Date.new(2010, 7, 1), 'qqqq')
103
+ # assert_equal '3. Quartal', format(Date.new(2010, 9, 30), 'qqqq')
104
+ # assert_equal '4. Quartal', format(Date.new(2010, 10, 1), 'qqqq')
105
+ # assert_equal '4. Quartal', format(Date.new(2010, 12, 31), 'qqqq')
106
+ # end
107
+
108
+ define_method "test: pattern qqqqq" do
109
+ assert_equal '1', format(Date.new(2010, 1, 1), 'qqqqq')
110
+ assert_equal '1', format(Date.new(2010, 3, 31), 'qqqqq')
111
+ assert_equal '2', format(Date.new(2010, 4, 1), 'qqqqq')
112
+ assert_equal '2', format(Date.new(2010, 6, 30), 'qqqqq')
113
+ assert_equal '3', format(Date.new(2010, 7, 1), 'qqqqq')
114
+ assert_equal '3', format(Date.new(2010, 9, 30), 'qqqqq')
115
+ assert_equal '4', format(Date.new(2010, 10, 1), 'qqqqq')
116
+ assert_equal '4', format(Date.new(2010, 12, 31), 'qqqqq')
117
+ end
118
+ end
@@ -0,0 +1,80 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateSecondFormat < 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: s" do
17
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1), 's')
18
+ assert_equal '11', format(Time.local(2000, 1, 1, 1, 1, 11), 's')
19
+ end
20
+
21
+ define_method "test: ss" do
22
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1), 'ss')
23
+ assert_equal '11', format(Time.local(2000, 1, 1, 1, 1, 11), 'ss')
24
+ end
25
+
26
+ # have i gotten the spec right here?
27
+ define_method "test: S" do
28
+ assert_equal '0', format(Time.local(2000, 1, 1, 1, 1, 1, 7), 'S')
29
+ assert_equal '0', format(Time.local(2000, 1, 1, 1, 1, 1, 77), 'S')
30
+ assert_equal '0', format(Time.local(2000, 1, 1, 1, 1, 1, 777), 'S')
31
+ assert_equal '0', format(Time.local(2000, 1, 1, 1, 1, 1, 7777), 'S')
32
+ assert_equal '1', format(Time.local(2000, 1, 1, 1, 1, 1, 77777), 'S')
33
+ assert_equal '8', format(Time.local(2000, 1, 1, 1, 1, 1, 777777), 'S')
34
+ end
35
+
36
+ define_method "test: SS" do
37
+ assert_equal '00', format(Time.local(2000, 1, 1, 1, 1, 1, 7), 'SS')
38
+ assert_equal '00', format(Time.local(2000, 1, 1, 1, 1, 1, 77), 'SS')
39
+ assert_equal '00', format(Time.local(2000, 1, 1, 1, 1, 1, 777), 'SS')
40
+ assert_equal '01', format(Time.local(2000, 1, 1, 1, 1, 1, 7777), 'SS')
41
+ assert_equal '08', format(Time.local(2000, 1, 1, 1, 1, 1, 77777), 'SS')
42
+ assert_equal '78', format(Time.local(2000, 1, 1, 1, 1, 1, 777777), 'SS')
43
+ end
44
+
45
+ define_method "test: SSS" do
46
+ assert_equal '000', format(Time.local(2000, 1, 1, 1, 1, 1, 7), 'SSS')
47
+ assert_equal '000', format(Time.local(2000, 1, 1, 1, 1, 1, 77), 'SSS')
48
+ assert_equal '001', format(Time.local(2000, 1, 1, 1, 1, 1, 777), 'SSS')
49
+ assert_equal '008', format(Time.local(2000, 1, 1, 1, 1, 1, 7777), 'SSS')
50
+ assert_equal '078', format(Time.local(2000, 1, 1, 1, 1, 1, 77777), 'SSS')
51
+ assert_equal '778', format(Time.local(2000, 1, 1, 1, 1, 1, 777777), 'SSS')
52
+ end
53
+
54
+ define_method "test: SSSS" do
55
+ assert_equal '0000', format(Time.local(2000, 1, 1, 1, 1, 1, 7), 'SSSS')
56
+ assert_equal '0001', format(Time.local(2000, 1, 1, 1, 1, 1, 77), 'SSSS')
57
+ assert_equal '0008', format(Time.local(2000, 1, 1, 1, 1, 1, 777), 'SSSS')
58
+ assert_equal '0078', format(Time.local(2000, 1, 1, 1, 1, 1, 7777), 'SSSS')
59
+ assert_equal '0778', format(Time.local(2000, 1, 1, 1, 1, 1, 77777), 'SSSS')
60
+ assert_equal '7778', format(Time.local(2000, 1, 1, 1, 1, 1, 777777), 'SSSS')
61
+ end
62
+
63
+ define_method "test: SSSSS" do
64
+ assert_equal '00001', format(Time.local(2000, 1, 1, 1, 1, 1, 7), 'SSSSS')
65
+ assert_equal '00008', format(Time.local(2000, 1, 1, 1, 1, 1, 77), 'SSSSS')
66
+ assert_equal '00078', format(Time.local(2000, 1, 1, 1, 1, 1, 777), 'SSSSS')
67
+ assert_equal '00778', format(Time.local(2000, 1, 1, 1, 1, 1, 7777), 'SSSSS')
68
+ assert_equal '07778', format(Time.local(2000, 1, 1, 1, 1, 1, 77777), 'SSSSS')
69
+ assert_equal '77778', format(Time.local(2000, 1, 1, 1, 1, 1, 777777), 'SSSSS')
70
+ end
71
+
72
+ define_method "test: SSSSSS" do
73
+ assert_equal '000007', format(Time.local(2000, 1, 1, 1, 1, 1, 7), 'SSSSSS')
74
+ assert_equal '000077', format(Time.local(2000, 1, 1, 1, 1, 1, 77), 'SSSSSS')
75
+ assert_equal '000777', format(Time.local(2000, 1, 1, 1, 1, 1, 777), 'SSSSSS')
76
+ assert_equal '007777', format(Time.local(2000, 1, 1, 1, 1, 1, 7777), 'SSSSSS')
77
+ assert_equal '077777', format(Time.local(2000, 1, 1, 1, 1, 1, 77777), 'SSSSSS')
78
+ assert_equal '777777', format(Time.local(2000, 1, 1, 1, 1, 1, 777777), 'SSSSSS')
79
+ end
80
+ end
@@ -0,0 +1,33 @@
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
+ def format(object, pattern)
13
+ Cldr::Format::Time.new(pattern, @calendar).apply(object)
14
+ end
15
+
16
+ # Timezone missing
17
+ #
18
+ # define_method "test: full time pattern :de" do
19
+ # assert_equal '13:12:11 zzzz', format(Time.local(2000, 1, 1, 13, 12, 11), 'HH:mm:ss zzzz')
20
+ # end
21
+
22
+ define_method "test: long time pattern :de" do
23
+ assert_equal '13:12:11 UTC', format(Time.utc(2010, 1, 1, 13, 12, 11), 'HH:mm:ss z')
24
+ end
25
+
26
+ define_method "test: medium time pattern :de" do
27
+ assert_equal '13:12:11', format(Time.utc(2010, 1, 1, 13, 12, 11), 'HH:mm:ss')
28
+ end
29
+
30
+ define_method "test: short time pattern :de" do
31
+ assert_equal '13:12', format(Time.utc(2010, 1, 1, 13, 12, 11), 'HH:mm')
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateTimezoneFormat < 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
+ # TIMEZONE
17
+
18
+ define_method "test: z, zz, zzz" do # TODO is this what's meant by the spec?
19
+ assert_equal 'CET', format(Time.local(2000, 1, 1, 1, 1, 1), 'z')
20
+ assert_equal 'CET', format(Time.local(2000, 1, 1, 1, 1, 1), 'zz')
21
+ assert_equal 'CET', format(Time.local(2000, 1, 1, 1, 1, 1), 'zzz')
22
+ end
23
+ end
@@ -0,0 +1,57 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../test_helper'
4
+ require 'date'
5
+
6
+ class TestCldrDateYearFormat < 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
+ # YEAR
17
+
18
+ define_method "test: pattern y" do
19
+ assert_equal '5', format(Date.new( 5, 1, 1), 'y')
20
+ assert_equal '45', format(Date.new( 45, 1, 1), 'y')
21
+ assert_equal '345', format(Date.new( 345, 1, 1), 'y')
22
+ assert_equal '2345', format(Date.new( 2345, 1, 1), 'y')
23
+ assert_equal '12345', format(Date.new(12345, 1, 1), 'y')
24
+ end
25
+
26
+ define_method "test: pattern yy" do
27
+ assert_equal '05', format(Date.new( 5, 1, 1), 'yy')
28
+ assert_equal '45', format(Date.new( 45, 1, 1), 'yy')
29
+ assert_equal '45', format(Date.new( 345, 1, 1), 'yy')
30
+ assert_equal '45', format(Date.new( 2345, 1, 1), 'yy')
31
+ assert_equal '45', format(Date.new(12345, 1, 1), 'yy')
32
+ end
33
+
34
+ define_method "test: pattern yyy" do
35
+ assert_equal '005', format(Date.new( 5, 1, 1), 'yyy')
36
+ assert_equal '045', format(Date.new( 45, 1, 1), 'yyy')
37
+ assert_equal '345', format(Date.new( 345, 1, 1), 'yyy')
38
+ assert_equal '2345', format(Date.new( 2345, 1, 1), 'yyy')
39
+ assert_equal '12345', format(Date.new(12345, 1, 1), 'yyy')
40
+ end
41
+
42
+ define_method "test: pattern yyyy" do
43
+ assert_equal '0005', format(Date.new( 5, 1, 1), 'yyyy')
44
+ assert_equal '0045', format(Date.new( 45, 1, 1), 'yyyy')
45
+ assert_equal '0345', format(Date.new( 345, 1, 1), 'yyyy')
46
+ assert_equal '2345', format(Date.new( 2345, 1, 1), 'yyyy')
47
+ assert_equal '12345', format(Date.new(12345, 1, 1), 'yyyy')
48
+ end
49
+
50
+ define_method "test: pattern yyyyy" do
51
+ assert_equal '00005', format(Date.new( 5, 1, 1), 'yyyyy')
52
+ assert_equal '00045', format(Date.new( 45, 1, 1), 'yyyyy')
53
+ assert_equal '00345', format(Date.new( 345, 1, 1), 'yyyyy')
54
+ assert_equal '02345', format(Date.new( 2345, 1, 1), 'yyyyy')
55
+ assert_equal '12345', format(Date.new(12345, 1, 1), 'yyyyy')
56
+ end
57
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class TestCldrDecimalFractionFormatWithInteger < Test::Unit::TestCase
4
+ define_method "test: formats a fraction" do
5
+ assert_equal '.45', Cldr::Format::Decimal::Fraction.new('###.##').apply('45')
6
+ end
7
+
8
+ define_method "test: pads zero digits on the right side" do
9
+ assert_equal '.4500', Cldr::Format::Decimal::Fraction.new('###.0000#').apply('45')
10
+ end
11
+
12
+ define_method "test: :precision option overrides format precision" do
13
+ assert_equal '.78901', Cldr::Format::Decimal::Fraction.new('###.##').apply('78901', :precision => 5)
14
+ end
15
+ end
16
+
17
+
@@ -0,0 +1,67 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class TestCldrDecimalIntegerFormatWithInteger < Test::Unit::TestCase
4
+ define_method "test: interpolates a number" do
5
+ assert_equal '123', Cldr::Format::Decimal::Integer.new('###').apply(123)
6
+ end
7
+
8
+ define_method "test: interpolates a number on the right side" do
9
+ assert_equal '0123', Cldr::Format::Decimal::Integer.new('0###').apply(123)
10
+ end
11
+
12
+ define_method "test: strips optional digits" do
13
+ assert_equal '123', Cldr::Format::Decimal::Integer.new('######').apply(123)
14
+ end
15
+
16
+ define_method "test: single group" do
17
+ assert_equal '1,23', Cldr::Format::Decimal::Integer.new('#,##').apply(123)
18
+ end
19
+
20
+ define_method "test: multiple groups with a primary group size" do
21
+ assert_equal '1,23,45,67,89', Cldr::Format::Decimal::Integer.new('#,##').apply(123456789)
22
+ end
23
+
24
+ define_method "test: multiple groups with a primary and secondary group size" do
25
+ assert_equal '12,34,56,789', Cldr::Format::Decimal::Integer.new('#,##,##0').apply(123456789)
26
+ end
27
+
28
+ define_method "test: does not group when no digits left of the grouping position" do
29
+ assert_equal '123', Cldr::Format::Decimal::Integer.new('#,###').apply(123)
30
+ end
31
+
32
+ define_method "test: does not include a fraction for a float" do
33
+ assert_equal '123', Cldr::Format::Decimal::Integer.new('###').apply(123.45)
34
+ end
35
+
36
+ define_method "test: does not round when given a float" do
37
+ assert_equal '123', Cldr::Format::Decimal::Integer.new('###').apply(123.55)
38
+ end
39
+
40
+ define_method "test: does not round with :precision => 1" do
41
+ assert_equal '123', Cldr::Format::Decimal::Integer.new('###').apply(123.55, :precision => 1)
42
+ end
43
+
44
+ define_method "test: ignores a fraction part given in the format string" do
45
+ assert_equal '1,234', Cldr::Format::Decimal::Integer.new('#,##0.##').apply(1234.567)
46
+ end
47
+
48
+ define_method "test: cldr example #,##0.## => 1 234" do
49
+ assert_equal '1,234', Cldr::Format::Decimal::Integer.new('#,##0.##').apply(1234.567)
50
+ end
51
+
52
+ define_method "test: cldr example #,##0.### => 1 234" do
53
+ assert_equal '1 234', Cldr::Format::Decimal::Integer.new('#,##0.###', :group => ' ').apply(1234.567)
54
+ end
55
+
56
+ define_method "test: cldr example ###0.##### => 1234" do
57
+ assert_equal '1234', Cldr::Format::Decimal::Integer.new('###0.#####', :group => ' ').apply(1234.567)
58
+ end
59
+
60
+ define_method "test: cldr example ###0.0000# => 1234" do
61
+ assert_equal '1234', Cldr::Format::Decimal::Integer.new('###0.0000#', :group => ' ').apply(1234.567)
62
+ end
63
+
64
+ define_method "test: cldr example 00000.0000 => 01234" do
65
+ assert_equal '01234', Cldr::Format::Decimal::Integer.new('00000.0000', :group => ' ').apply(1234.567)
66
+ end
67
+ end
@@ -0,0 +1,77 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class TestCldrDecimalNumberFormat < Test::Unit::TestCase
4
+ define_method "test: interpolates a number" do
5
+ assert_equal '123', Cldr::Format::Decimal::Number.new('###').apply(123)
6
+ end
7
+
8
+ define_method "test: interpolates a number on the right side" do
9
+ assert_equal '0123', Cldr::Format::Decimal::Number.new('0###').apply(123)
10
+ end
11
+
12
+ define_method "test: strips optional digits" do
13
+ assert_equal '123', Cldr::Format::Decimal::Number.new('######').apply(123)
14
+ end
15
+
16
+ define_method "test: single group" do
17
+ assert_equal '1,23', Cldr::Format::Decimal::Number.new('#,##').apply(123)
18
+ end
19
+
20
+ define_method "test: multiple groups with a primary group size" do
21
+ assert_equal '1,23,45,67,89', Cldr::Format::Decimal::Number.new('#,##').apply(123456789)
22
+ end
23
+
24
+ define_method "test: multiple groups with a primary and secondary group size" do
25
+ assert_equal '12,34,56,789', Cldr::Format::Decimal::Number.new('#,##,##0').apply(123456789)
26
+ end
27
+
28
+ define_method "test: does not group when no digits left of the grouping position" do
29
+ assert_equal '123', Cldr::Format::Decimal::Number.new('#,###').apply(123)
30
+ end
31
+
32
+ define_method "test: interpolates a fraction when defined by the format" do
33
+ assert_equal '123.45', Cldr::Format::Decimal::Number.new('###.##').apply(123.45)
34
+ end
35
+
36
+ define_method "test: interpolates a fraction when not defined by the format but :precision given" do
37
+ assert_equal '123.45', Cldr::Format::Decimal::Number.new('###').apply(123.45, :precision => 2)
38
+ end
39
+
40
+ define_method "test: rounds a fraction" do
41
+ assert_equal '123.46', Cldr::Format::Decimal::Number.new('###.##').apply(123.456)
42
+ end
43
+
44
+ define_method "test: interpolates fraction on the left side" do
45
+ assert_equal '123.4500', Cldr::Format::Decimal::Number.new('###.0000#').apply(123.45)
46
+ end
47
+
48
+ define_method "test: rounds with precision => 0" do
49
+ assert_equal '124', Cldr::Format::Decimal::Number.new('###.##').apply(123.55, :precision => 0)
50
+ end
51
+
52
+ define_method "test: rounds with precision => 1" do
53
+ assert_equal '124', Cldr::Format::Decimal::Number.new('###.##').apply(123.55, :precision => 0)
54
+ end
55
+
56
+ define_method "test: cldr example #,##0.## => 1 234,57" do
57
+ assert_equal '1 234,57', Cldr::Format::Decimal::Number.new('#,##0.##', :decimal => ',', :group => ' ').apply(1234.567)
58
+ end
59
+
60
+ define_method "test: cldr example #,##0.### => 1 234,567" do
61
+ assert_equal '1 234,567', Cldr::Format::Decimal::Number.new('#,##0.###', :decimal => ',', :group => ' ').apply(1234.567)
62
+ end
63
+
64
+ define_method "test: cldr example ###0.##### => 1234,567" do
65
+ assert_equal '1234,567', Cldr::Format::Decimal::Number.new('###0.#####', :decimal => ',', :group => ' ').apply(1234.567)
66
+ end
67
+
68
+ define_method "test: cldr example ###0.0000# => 1234,5670" do
69
+ assert_equal '1234,5670', Cldr::Format::Decimal::Number.new('###0.0000#', :decimal => ',', :group => ' ').apply(1234.567)
70
+ end
71
+
72
+ define_method "test: cldr example 00000.0000 => 01234,5670" do
73
+ assert_equal '01234,5670', Cldr::Format::Decimal::Number.new('00000.0000', :decimal => ',', :group => ' ').apply(1234.567)
74
+ end
75
+ end
76
+
77
+
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TestCldrDecimalFormat < Test::Unit::TestCase
4
+ define_method "test: single pattern, positive number" do
5
+ assert_equal '123', Cldr::Format::Decimal.new('#').apply(123)
6
+ end
7
+
8
+ define_method "test: single pattern, negative number" do
9
+ assert_equal '-123', Cldr::Format::Decimal.new('#').apply(-123)
10
+ end
11
+
12
+ define_method "test: positive/negative patterns, positive number" do
13
+ assert_equal '123', Cldr::Format::Decimal.new('#;-#').apply(123)
14
+ end
15
+
16
+ define_method "test: positive/negative patterns, negative number" do
17
+ assert_equal '-123', Cldr::Format::Decimal.new('#;-#').apply(-123)
18
+ end
19
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'date'
4
+
5
+ class TestCldrFormat < Test::Unit::TestCase
6
+ class Cldr
7
+ include ::Cldr::Format
8
+
9
+ def lookup_format(locale, type, format)
10
+ key = case type
11
+ when :date, :datetime, :time
12
+ ::Cldr::Data::Calendars.new(locale)[:calendars][:gregorian][:formats][type][format][:pattern]
13
+ else
14
+ ::Cldr::Data::Numbers.new(locale)[:numbers][:formats][type][:patterns][format || :default]
15
+ end
16
+ end
17
+
18
+ def lookup_format_data(locale, type)
19
+ case type
20
+ when :date, :datetime, :time
21
+ ::Cldr::Data::Calendars.new(locale)[:calendars][:gregorian]
22
+ else
23
+ ::Cldr::Data::Numbers.new(locale)[:numbers][:symbols]
24
+ end
25
+ end
26
+
27
+ def lookup_currency(locale, currency, count)
28
+ key = count == 1 ? :one : :other
29
+ ::Cldr::Data::Currencies.new(locale)[:currencies][currency.to_sym][:key]
30
+ end
31
+ end
32
+
33
+ def setup
34
+ @cldr = Cldr.new
35
+ end
36
+
37
+ define_method :"test: format" do
38
+ assert_equal '123.456,78', @cldr.format(:de, 123456.78)
39
+ end
40
+
41
+ define_method :"test: format_currency" do
42
+ assert_equal '123.456,78 EUR', @cldr.format(:de, 123456.78, :currency => 'EUR')
43
+ end
44
+
45
+ define_method :"test: format_percent" do
46
+ assert_equal '123.457 %', @cldr.format(:de, 123456.78, :as => :percent)
47
+ end
48
+
49
+ define_method :"test: format_date" do
50
+ assert_equal 'Freitag, 1. Januar 2010', @cldr.format(:de, Date.new(2010, 1, 1), :format => :full)
51
+ end
52
+
53
+ define_method :"test: format_time :long" do
54
+ assert_equal '13:15:17 UTC', @cldr.format(:de, Time.utc(2010, 1, 1, 13, 15, 17), :format => :long)
55
+ end
56
+
57
+ define_method :"test: format_datetime :long" do
58
+ datetime = DateTime.new(2010, 11, 12, 13, 14, 15)
59
+ assert_equal '12. November 2010 13:14:15 +00:00', @cldr.format(:de, datetime, :format => :long)
60
+ end
61
+
62
+ define_method :"test: format_datetime mixed :long + :short" do
63
+ datetime = DateTime.new(2010, 11, 12, 13, 14, 15)
64
+ assert_equal '12. November 2010 13:14', @cldr.format(:de, datetime, :format => :long, :date_format => :long, :time_format => :short)
65
+ end
66
+ end
@@ -0,0 +1,3 @@
1
+ Dir["#{File.dirname(__FILE__)}/**/*_test.rb"].each do |filename|
2
+ require filename
3
+ end
@@ -0,0 +1,56 @@
1
+ # # encoding: utf-8
2
+ # require File.dirname(__FILE__) + '/../../test_helper'
3
+ #
4
+ # class TestCldrFormatIntegerRailsCompat < Test::Unit::TestCase
5
+ # def setup
6
+ # @options = { :decimal => ".", :group => ",", :format => "#,##0.###" }
7
+ # end
8
+ #
9
+ # def format_integer(number, options = {})
10
+ # Cldr::Format.format_integer(number, @options.merge(options))
11
+ # end
12
+ #
13
+ # define_method :"test: compatible with number_with_delimiter: 12345678 => 12,345,678" do
14
+ # assert_equal '12,345,678', format_integer(12345678)
15
+ # end
16
+ #
17
+ # define_method :"test: compatible with number_with_delimiter: 0 => 0" do
18
+ # assert_equal '0', format_integer(0)
19
+ # end
20
+ #
21
+ # define_method :"test: compatible with number_with_delimiter: 123 => 123" do
22
+ # assert_equal '123', format_integer(123)
23
+ # end
24
+ #
25
+ # define_method :"test: compatible with number_with_delimiter: 123456 => 123,456" do
26
+ # assert_equal '123,456', format_integer(123456)
27
+ # end
28
+ #
29
+ # define_method :"test: NOT compatible with number_with_delimiter: 123456.78 => 123,457" do
30
+ # assert_equal '123,457', format_integer(123456.78)
31
+ # end
32
+ #
33
+ # define_method :"test: NOT compatible with number_with_delimiter: 123456.789 => 123,457" do
34
+ # assert_equal '123,457', format_integer(123456.789)
35
+ # end
36
+ #
37
+ # define_method :"test: NOT compatible with number_with_delimiter: 123456.78901 => 123,457" do
38
+ # assert_equal '123,457', format_integer(123456.78901)
39
+ # end
40
+ #
41
+ # define_method :"test: NOT compatible with number_with_delimiter: 123456789.78901 => 123,456,790" do
42
+ # assert_equal '123,456,790', format_integer(123456789.78901)
43
+ # end
44
+ #
45
+ # define_method :"test: NOT compatible with number_with_delimiter: 0.78901 => 0" do
46
+ # assert_equal '1', format_integer(0.78901)
47
+ # end
48
+ #
49
+ # define_method :"test: compatible with number_with_delimiter: 'x' => 'x'" do
50
+ # assert_equal 'x', format_integer('x')
51
+ # end
52
+ #
53
+ # define_method :"test: compatible with number_with_delimiter: nil => nil" do
54
+ # assert_nil format_integer(nil)
55
+ # end
56
+ # end