icu 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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