icu 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu.so'))
@@ -0,0 +1,73 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu'))
3
+
4
+ class TestLocale < Test::Unit::TestCase
5
+ def setup
6
+ ICU::Locale.default = 'en_US'
7
+ end
8
+
9
+ def test_default
10
+ ICU::Locale.default = 'es_ES'
11
+ assert_equal('es_ES', ICU::Locale.default.locale_id)
12
+ ICU::Locale.default = ICU::Locale.get('en_US')
13
+ assert_equal('en_US', ICU::Locale.default.locale_id)
14
+ assert_raise(ArgumentError) { ICU::Locale.default = 'worg locale' }
15
+ end
16
+
17
+ def test_get
18
+ assert_equal(ICU::Locale.get('es_ES').object_id, ICU::Locale.get('es_ES').object_id)
19
+ assert_equal(ICU::Locale.get('en_US').object_id, ICU::Locale.get('en_US').object_id)
20
+ assert_raise(ArgumentError) { ICU::Locale.get('worg locale') }
21
+ end
22
+
23
+ def test_parent
24
+ locale = ICU::Locale.get('es_ES').parent
25
+ assert_equal('es', locale.locale_id)
26
+ locale = locale.parent
27
+ assert_equal(nil, locale)
28
+
29
+ assert_equal(nil, ICU::Locale.get('es_ES').parent.parent)
30
+ end
31
+
32
+ def test_country
33
+ country = ICU::Locale.get('es_ES').country
34
+ assert_equal(ICU::Locale::Country.get('ES').object_id, country.object_id)
35
+ assert_equal('ES', country.code)
36
+ assert_equal('Spain', country.name)
37
+ assert_equal('España', country.name('es_ES'))
38
+ assert_equal('España', country.name(ICU::Locale.get('es_ES')))
39
+ assert_nil(ICU::Locale.get('es').country)
40
+ assert_raise(ArgumentError) { ICU::Locale::Country.get('worg country') }
41
+ end
42
+
43
+ def test_language
44
+ language = ICU::Locale.get('es_ES').language
45
+ assert_equal(ICU::Locale::Language.get('es').object_id, language.object_id)
46
+ assert_equal('es', language.code)
47
+ assert_equal('Spanish', language.name)
48
+ assert_equal('español', language.name('es_ES'))
49
+ assert_equal('español', language.name(ICU::Locale.get('es_ES')))
50
+ assert_nil(ICU::Locale.get('_ES').language)
51
+ assert_raise(ArgumentError) { ICU::Locale::Language.get('worg language') }
52
+ end
53
+
54
+ def test_available
55
+ assert_equal(["Afrikaans", "af"], ICU::Locale.available[0])
56
+ assert_equal(["afrikaans (Afrique du Sud)", "af_ZA"], ICU::Locale.available(:locale => 'fr_FR')[1])
57
+ assert_equal(["albanski (Albanija)", "sq_AL"], ICU::Locale.available(:locale => ICU::Locale.get('hr_HR'))[3])
58
+
59
+ assert_equal([["English (United States)", "en_US"], ["Spanish (Spain)", "es_ES"]], ICU::Locale.available(:allowed => ['es_ES', 'en_US']))
60
+ assert_equal(["English", "en"], ICU::Locale.available(:languages => ['es', 'en'])[0])
61
+ assert_equal(["Basque (Spain)", "eu_ES"], ICU::Locale.available(:countries => ['ES', 'US'])[0])
62
+ assert_equal(
63
+ [["Spanish (Spain)", "es_ES"], ["Spanish (United States)", "es_US"]],
64
+ ICU::Locale.available(:allowed => ['es_ES', 'ca_ES', 'en_US', 'en_GB', 'es_US'], :languages => ['es'], :countries => ['ES', 'US'])
65
+ )
66
+
67
+ assert_equal(["Albanian", [["Albanian", "sq"], ["Albanian (Albania)", "sq_AL"]]], ICU::Locale.available(:group => true)[1])
68
+ end
69
+
70
+ def test_determine
71
+ assert_equal('es_ES', ICU::Locale.determine_from_http('es_ES,us_US'))
72
+ end
73
+ end
@@ -0,0 +1,78 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu'))
3
+
4
+ class TestNumeric < Test::Unit::TestCase
5
+ def setup
6
+ ICU::Locale.default = 'en_US'
7
+ end
8
+
9
+ def test_types
10
+ assert_raise(TypeError) { 13243412.233.localize(false) }
11
+ assert_raise(TypeError) { 13243412.233.localize(:currency, false) }
12
+ assert_raise(TypeError) { 13243412.233.localize(:currency, :locale => false) }
13
+ assert_raise(TypeError) { 13243412.233.localize(:currency, :round_increment => false) }
14
+ assert_raise(TypeError) { 13243412.233.localize(:currency, :round_mode => false) }
15
+ assert_raise(TypeError) { 13243412.233.localize(:currency, :precision => false) }
16
+ end
17
+
18
+ def test_limits
19
+ # Fixnum
20
+ assert_equal('1,073,741,823', 1073741823.localize)
21
+ assert_equal('-1,073,741,823', -1073741823.localize)
22
+ # Bignum
23
+ assert_equal('9,223,372,036,854,775,807', 9223372036854775807.localize)
24
+ assert_equal('-9,223,372,036,854,775,807', -9223372036854775807.localize)
25
+ assert_raise(RangeError) { 9223372036854775808.localize }
26
+ # Float
27
+ assert_equal('13,243,412.233', 13243412.233.localize)
28
+ assert_equal('-13,243,412.233', -13243412.233.localize)
29
+ end
30
+
31
+ def test_decimal
32
+ assert_equal('3,490,835,234.656', 3490835234.6556.localize)
33
+ assert_equal('3.490.835.234,656', 3490835234.6556.localize(:decimal, :locale => 'es_ES'))
34
+ assert_equal('٣٤٩٠٨٣٥٢٣٤٫٦٥٦', 3490835234.6556.localize(:decimal, :locale => ICU::Locale.get('ar_SY')))
35
+ end
36
+
37
+ def test_currency
38
+ assert_equal('$1,073,741,823.32', 1073741823.323.localize(:currency))
39
+ assert_equal('($1,073,741,823.32)', -1073741823.323.localize(:currency))
40
+ assert_equal('€1,073,741,823.32', 1073741823.323.localize(:currency, :currency => 'EUR'))
41
+
42
+ assert_equal('1.073.741.823,32 €', 1073741823.323.localize(:currency, :locale => 'es_ES'))
43
+ assert_equal('-1.073.741.823,32 €', -1073741823.323.localize(:currency, :locale => 'es_ES'))
44
+ assert_equal('1.073.741.823,32 US$', 1073741823.323.localize(:currency, :locale => 'es_ES', :currency => 'USD'))
45
+
46
+ assert_equal('1,073,741,823.32 ₪', 1073741823.323.localize(:currency, :locale => 'he_IL'))
47
+ assert_equal('-1,073,741,823.32 ₪', -1073741823.323.localize(:currency, :locale => 'he_IL'))
48
+ assert_equal('1,073,741,823.32 $', 1073741823.323.localize(:currency, :locale => 'he_IL', :currency => 'USD'))
49
+ end
50
+
51
+ def test_rounding
52
+ assert_equal('$2,314.30', 2314.3289.localize(:currency, :round_increment => 0.1))
53
+ assert_equal('$2,314.40', 2314.3289.localize(:currency, :round_increment => 0.1, :round_mode => :ceil))
54
+ end
55
+
56
+ def test_precision
57
+ assert_equal('$2,314.3290', 2314.32896.localize(:currency, :precision => 4))
58
+ assert_equal('$1,234.674', 1234.67433.localize(:currency, :precision => 3))
59
+ end
60
+
61
+ def test_percent
62
+ assert_equal('12%', 0.12.localize(:percent))
63
+ assert_equal('1,200%', 12.localize(:percent))
64
+ end
65
+
66
+ def test_scientific
67
+ assert_equal('4.3289E4', 43289.localize(:scientific))
68
+ assert_equal('1.1239087212E0', 1.1239087212.localize(:scientific))
69
+ end
70
+
71
+ def test_spellout
72
+ assert_equal('forty-three thousand two hundred and eighty-nine', 43289.localize(:spellout))
73
+ assert_equal('one point one two three nine', 1.1239.localize(:spellout))
74
+
75
+ assert_equal('cuarenta y tres mil doscientos ochenta y nueve', 43289.localize(:spellout, :locale => 'es_ES'))
76
+ assert_equal('uno punto uno dos tres nueve', 1.1239.localize(:spellout, :locale => 'es_ES'))
77
+ end
78
+ end
@@ -0,0 +1,75 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'icu'))
3
+
4
+ class TestTime < Test::Unit::TestCase
5
+ def setup
6
+ ICU::Locale.default = 'en_US'
7
+ end
8
+
9
+ def test_localize_zone
10
+ Time.default_zone = 'Europe/Paris'
11
+ assert_equal('10:31:34 AM CEDT', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
12
+ assert_equal('8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full, :zone => 'GMT'))
13
+ assert_equal('3:31:34 AM GMT-05:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full, :zone => 'GMT-05:00'))
14
+ end
15
+
16
+ def test_localize_style
17
+ assert_equal('Monday, May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :full))
18
+ assert_equal('May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :long))
19
+ assert_equal('May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :medium))
20
+ assert_equal('5/8/06 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :short))
21
+ assert_equal('8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false))
22
+ assert_equal('May 8, 2006 8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :full))
23
+ assert_equal('May 8, 2006 8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :long))
24
+ assert_equal('May 8, 2006 8:31:34 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :medium))
25
+ assert_equal('May 8, 2006 8:31 AM', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => :short))
26
+ assert_equal('May 8, 2006', Time.utc(2006, 5, 8, 8, 31, 34).localize(:time => false))
27
+ end
28
+
29
+ def test_localize_locale
30
+ assert_equal('lunes 8 de mayo de 2006 8:31:34', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :full, :locale => 'es_ES'))
31
+ assert_equal('08:31:34 8 מאי 2006', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :long, :locale => ICU::Locale.get('he_IL')))
32
+ assert_equal('2006. svibnja 08 08:31:34', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => :long, :locale => 'hr_HR'))
33
+ end
34
+
35
+ def test_zones
36
+ assert_instance_of(Array, Time.zones)
37
+ assert_equal(["Africa/Ceuta", "Atlantic/Canary", "Europe/Madrid"], Time.zones(:countries => ['ES']))
38
+ assert_equal(
39
+ [["Central European Standard Time", "ECT"], ["Central European Standard Time", "Europe/Paris"], ["Greenwich Mean Time", "Europe/London"], ["Greenwich Mean Time", "Europe/Belfast"], ["Greenwich Mean Time", "GB"], ["Greenwich Mean Time", "GB-Eire"]],
40
+ Time.zones(:countries => ['FR', 'GB'], :type => :standard)
41
+ )
42
+ assert_equal([["Spain", ["Africa/Ceuta", "Atlantic/Canary", "Europe/Madrid"]]], Time.zones(:countries => ['ES'], :group => true))
43
+ end
44
+
45
+ def test_default_zone
46
+ Time.default_zone = 'Europe/Paris'
47
+ assert_equal('Europe/Paris', Time.default_zone)
48
+ assert_equal('10:31:34 AM CEDT', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
49
+ Time.default_zone = 'UTC'
50
+ assert_equal('UTC', Time.default_zone)
51
+ assert_equal('8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
52
+ Time.default_zone = 'worg time zone'
53
+ assert_equal('GMT', Time.default_zone)
54
+ assert_equal('8:31:34 AM GMT+00:00', Time.utc(2006, 5, 8, 8, 31, 34).localize(:date => false, :time => :full))
55
+ end
56
+
57
+ def test_pattern
58
+ assert_equal("EEEE d' de 'MMMM' de 'yyyy H:mm:ss", Time.pattern(:date => :full, :locale => 'es_ES'))
59
+ assert_equal('yyyy. MMMM dd HH:mm:ss', Time.pattern(:date => :long, :locale => ICU::Locale.get('hr_HR')))
60
+ assert_equal('HH:mm:ss dd/MM/yyyy', Time.pattern(:date => :medium, :locale => 'he_IL'))
61
+ assert_equal('M/d/yy h:mm:ss a', Time.pattern(:date => :short))
62
+ assert_equal('h:mm:ss a', Time.pattern(:date => false))
63
+ assert_equal("dd/MM/yyyy HH'H'mm''ss\" z", Time.pattern(:time => :full, :locale => 'es_ES'))
64
+ assert_equal('yyyy.MM.dd HH:mm:ss z', Time.pattern(:time => :long, :locale => 'hr_HR'))
65
+ assert_equal('HH:mm:ss dd/MM/yyyy', Time.pattern(:time => :medium, :locale => 'he_IL'))
66
+ assert_equal('MMM d, yyyy h:mm a', Time.pattern(:time => :short))
67
+ assert_equal('MMM d, yyyy', Time.pattern(:time => false))
68
+ end
69
+
70
+ def test_week_start
71
+ assert_equal(1, Time.week_start)
72
+ assert_equal(2, Time.week_start(:locale => 'hr_HR'))
73
+ assert_equal(2, Time.week_start(:locale => ICU::Locale.get('hr_HR')))
74
+ end
75
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: icu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - Joshua Llorach
8
+ autorequire: icu
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2007-12-07 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: josh@vectrice.com
18
+ executables: []
19
+
20
+ extensions:
21
+ - ext/extconf.rb
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - ext/icu_locale_language.c
26
+ - ext/icu_locale_country.c
27
+ - ext/icu_time.c
28
+ - ext/icu.h
29
+ - ext/extconf.rb
30
+ - ext/icu_locale.c
31
+ - ext/icu.c
32
+ - ext/icu_numeric.c
33
+ - lib/icu.rb
34
+ - test/test_time.rb
35
+ - test/test_numeric.rb
36
+ - test/test_locale.rb
37
+ - README
38
+ has_rdoc: true
39
+ homepage: http://vectrice.com/
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ requirements: []
58
+
59
+ rubyforge_project: icu
60
+ rubygems_version: 0.9.5
61
+ signing_key:
62
+ specification_version: 2
63
+ summary: International Components for Unicode for Ruby
64
+ test_files:
65
+ - test/test_time.rb
66
+ - test/test_numeric.rb
67
+ - test/test_locale.rb