exchange 0.12.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.travis.yml +1 -0
  2. data/README.rdoc +34 -6
  3. data/Rakefile +3 -30
  4. data/changelog.rdoc +6 -0
  5. data/exchange.gemspec +3 -6
  6. data/iso4217.yml +238 -81
  7. data/lib/exchange.rb +2 -1
  8. data/lib/exchange/base.rb +3 -2
  9. data/lib/exchange/cache.rb +1 -0
  10. data/lib/exchange/cache/base.rb +2 -1
  11. data/lib/exchange/cache/configuration.rb +2 -1
  12. data/lib/exchange/cache/file.rb +2 -1
  13. data/lib/exchange/cache/memcached.rb +2 -1
  14. data/lib/exchange/cache/memory.rb +2 -1
  15. data/lib/exchange/cache/no_cache.rb +2 -1
  16. data/lib/exchange/cache/rails.rb +2 -1
  17. data/lib/exchange/cache/redis.rb +2 -1
  18. data/lib/exchange/configurable.rb +3 -2
  19. data/lib/exchange/configuration.rb +8 -5
  20. data/lib/exchange/core_extensions.rb +2 -1
  21. data/lib/exchange/core_extensions/cachify.rb +2 -1
  22. data/lib/exchange/core_extensions/float/error_safe.rb +2 -1
  23. data/lib/exchange/core_extensions/numeric/conversability.rb +2 -1
  24. data/lib/exchange/external_api.rb +3 -1
  25. data/lib/exchange/external_api/base.rb +2 -1
  26. data/lib/exchange/external_api/call.rb +2 -1
  27. data/lib/exchange/external_api/configuration.rb +18 -3
  28. data/lib/exchange/external_api/ecb.rb +2 -1
  29. data/lib/exchange/external_api/json.rb +2 -1
  30. data/lib/exchange/external_api/open_exchange_rates.rb +2 -1
  31. data/lib/exchange/external_api/random.rb +31 -0
  32. data/lib/exchange/external_api/xavier_media.rb +2 -1
  33. data/lib/exchange/external_api/xml.rb +2 -1
  34. data/lib/exchange/gem_loader.rb +2 -1
  35. data/lib/exchange/helper.rb +2 -1
  36. data/lib/exchange/iso.rb +29 -13
  37. data/lib/exchange/money.rb +35 -9
  38. data/lib/exchange/typecasting.rb +2 -1
  39. data/spec/exchange/cache/base_spec.rb +2 -1
  40. data/spec/exchange/cache/configuration_spec.rb +4 -1
  41. data/spec/exchange/cache/file_spec.rb +2 -1
  42. data/spec/exchange/cache/memcached_spec.rb +2 -1
  43. data/spec/exchange/cache/memory_spec.rb +4 -2
  44. data/spec/exchange/cache/no_cache_spec.rb +2 -1
  45. data/spec/exchange/cache/rails_spec.rb +2 -1
  46. data/spec/exchange/cache/redis_spec.rb +2 -1
  47. data/spec/exchange/configuration_spec.rb +6 -2
  48. data/spec/exchange/core_extensions/array/cachify_spec.rb +2 -1
  49. data/spec/exchange/core_extensions/float/error_safe_spec.rb +2 -1
  50. data/spec/exchange/core_extensions/hash/cachify_spec.rb +2 -1
  51. data/spec/exchange/core_extensions/numeric/cachify_spec.rb +2 -1
  52. data/spec/exchange/core_extensions/numeric/conversability_spec.rb +2 -1
  53. data/spec/exchange/core_extensions/string/cachify_spec.rb +2 -1
  54. data/spec/exchange/core_extensions/symbol/cachify_spec.rb +2 -1
  55. data/spec/exchange/external_api/base_spec.rb +2 -1
  56. data/spec/exchange/external_api/call_spec.rb +2 -1
  57. data/spec/exchange/external_api/configuration_spec.rb +18 -2
  58. data/spec/exchange/external_api/ecb_spec.rb +2 -1
  59. data/spec/exchange/external_api/open_exchange_rates_spec.rb +2 -1
  60. data/spec/exchange/external_api/random_spec.rb +40 -0
  61. data/spec/exchange/external_api/xavier_media_spec.rb +2 -1
  62. data/spec/exchange/gem_loader_spec.rb +2 -1
  63. data/spec/exchange/helper_spec.rb +2 -1
  64. data/spec/exchange/iso_spec.rb +214 -189
  65. data/spec/exchange/money_spec.rb +65 -2
  66. data/spec/exchange/typecasting_spec.rb +2 -1
  67. data/spec/spec_helper.rb +3 -1
  68. metadata +10 -10
  69. data/benchmark/benchmark.rb +0 -50
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe "Exchange::ExternalAPI::XavierMedia" do
@@ -63,4 +64,4 @@ describe "Exchange::ExternalAPI::XavierMedia" do
63
64
  subject.convert(70, :sek, :usd, :at => Time.gm(Time.now.year - 1,3,1)).round(2).should == 10.35
64
65
  end
65
66
  end
66
- end
67
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe "Exchange::Gemloader" do
@@ -26,4 +27,4 @@ describe "Exchange::Gemloader" do
26
27
  end
27
28
  end
28
29
 
29
- end
30
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe "Exchange::Helper" do
@@ -27,4 +28,4 @@ describe "Exchange::Helper" do
27
28
  end
28
29
  end
29
30
  end
30
- end
31
+ end
@@ -1,4 +1,4 @@
1
- # encoding: UTF-8
1
+ # -*- encoding : utf-8 -*-
2
2
 
3
3
  require 'spec_helper'
4
4
 
@@ -6,175 +6,171 @@ describe "Exchange::ISO" do
6
6
  let(:subject) { Exchange::ISO }
7
7
  describe "self.definitions" do
8
8
  it "should be a hash of exactly the ISO standard definitions loaded from the yaml file" do
9
- subject.definitions.should === {
10
- :aed => {:format=>"#,###.##", :minor_unit=>2, :currency=>"UAE Dirham", :symbol=>nil},
11
- :afn => {:minor_unit=>2, :currency=>"Afghani", :symbol=>"؋"},
12
- :all => {:minor_unit=>2, :currency=>"Lek", :symbol=>"Lek"},
13
- :amd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Armenian Dram", :symbol=>nil},
14
- :ang => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Netherlands Antillean Guilder", :symbol=>"ƒ"},
15
- :aoa => {:minor_unit=>2, :currency=>"Kwanza", :symbol=>nil},
16
- :ars => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Argentine Peso", :symbol=>"$"},
17
- :aud => {:format=>"# ###.##", :minor_unit=>2, :currency=>"Australian Dollar", :symbol=>"$"},
18
- :awg => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Aruban Florin", :symbol=>"ƒ"},
19
- :azn => {:minor_unit=>2, :currency=>"Azerbaijanian Manat", :symbol=>"ман"},
20
- :bam => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Convertible Mark", :symbol=>"KM"},
21
- :bbd => {:minor_unit=>2, :currency=>"Barbados Dollar", :symbol=>"$"},
22
- :bdt => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Taka", :symbol=>nil},
23
- :bgn => {:minor_unit=>2, :currency=>"Bulgarian Lev", :symbol=>"лв"},
24
- :bhd => {:format=>"#,###.###", :minor_unit=>3, :currency=>"Bahraini Dinar", :symbol=>nil},
25
- :bif => {:minor_unit=>0, :currency=>"Burundi Franc", :symbol=>nil},
26
- :bmd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Bermudian Dollar", :symbol=>"$"},
27
- :bnd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Brunei Dollar", :symbol=>"$"},
28
- :bob => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Boliviano", :symbol=>"$b"},
29
- :bov => {:minor_unit=>2, :currency=>"Mvdol", :symbol=>nil},
30
- :brl => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Brazilian Real", :symbol=>"R$"},
31
- :bsd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Bahamian Dollar", :symbol=>"$"},
32
- :btn => {:minor_unit=>2, :currency=>"Ngultrum", :symbol=>nil},
33
- :bwp => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Pula", :symbol=>"P"},
34
- :byr => {:minor_unit=>0, :currency=>"Belarussian Ruble", :symbol=>"p."},
35
- :bzd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Belize Dollar", :symbol=>"BZ$"},
36
- :cad => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Canadian Dollar", :symbol=>"$"},
37
- :cdf => {:minor_unit=>2, :currency=>"Congolese Franc", :symbol=>nil},
38
- :chf => {:format=>"#'###.##", :minor_unit=>2, :currency=>"Swiss Franc", :symbol=>"CHF"},
39
- :chw => {:minor_unit=>2, :currency=>"WIR Franc", :symbol=>nil},
40
- :clf => {:minor_unit=>0, :currency=>"Unidades de fomento", :symbol=>nil},
41
- :clp => {:format=>"#.###", :minor_unit=>0, :currency=>"Chilean Peso", :symbol=>"$"},
42
- :cny => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Yuan Renminbi", :symbol=>"¥"},
43
- :cop => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Colombian Peso", :symbol=>"$"},
44
- :cou => {:minor_unit=>2, :currency=>"Unidad de Valor Real", :symbol=>nil},
45
- :crc => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Costa Rican Colon", :symbol=>"₡"},
46
- :cuc => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Peso Convertible", :symbol=>nil},
47
- :cup => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Cuban Peso", :symbol=>"₱"},
48
- :cve => {:minor_unit=>2, :currency=>"Cape Verde Escudo", :symbol=>nil},
49
- :czk => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Czech Koruna", :symbol=>"Kč"},
50
- :djf => {:minor_unit=>0, :currency=>"Djibouti Franc", :symbol=>nil},
51
- :dkk => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Danish Krone", :symbol=>"kr"},
52
- :dop => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Dominican Peso", :symbol=>"RD$"},
53
- :dzd => {:minor_unit=>2, :currency=>"Algerian Dinar", :symbol=>nil},
54
- :egp => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Egyptian Pound", :symbol=>"£"},
55
- :ern => {:minor_unit=>2, :currency=>"Nakfa", :symbol=>nil},
56
- :etb => {:minor_unit=>2, :currency=>"Ethiopian Birr", :symbol=>nil},
57
- :eur => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Euro", :symbol=>"€"},
58
- :fjd => {:minor_unit=>2, :currency=>"Fiji Dollar", :symbol=>"$"},
59
- :fkp => {:minor_unit=>2, :currency=>"Falkland Islands Pound", :symbol=>"£"},
60
- :gbp => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Pound Sterling", :symbol=>"£"},
61
- :gel => {:minor_unit=>2, :currency=>"Lari", :symbol=>nil},
62
- :ghs => {:minor_unit=>2, :currency=>"Ghana Cedi", :symbol=>nil},
63
- :gip => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Gibraltar Pound", :symbol=>"£"},
64
- :gmd => {:minor_unit=>2, :currency=>"Dalasi", :symbol=>nil},
65
- :gnf => {:minor_unit=>0, :currency=>"Guinea Franc", :symbol=>nil},
66
- :gtq => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Quetzal", :symbol=>"Q"},
67
- :gyd => {:minor_unit=>2, :currency=>"Guyana Dollar", :symbol=>"$"},
68
- :hkd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Hong Kong Dollar", :symbol=>"$"},
69
- :hnl => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Lempira", :symbol=>"L"},
70
- :hrk => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Croatian Kuna", :symbol=>"kn"},
71
- :htg => {:minor_unit=>2, :currency=>"Gourde", :symbol=>nil},
72
- :huf => {:format=>"#.###", :minor_unit=>2, :currency=>"Forint", :symbol=>"Ft"},
73
- :idr => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Rupiah", :symbol=>"Rp"},
74
- :ils => {:format=>"#,###.##", :minor_unit=>2, :currency=>"New Israeli Sheqel", :symbol=>""},
75
- :inr => {:format=>"#,##,###.##", :minor_unit=>2, :currency=>"Indian Rupee", :symbol=>""},
76
- :iqd => {:minor_unit=>3, :currency=>"Iraqi Dinar", :symbol=>nil},
77
- :irr => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Iranian Rial", :symbol=>"﷼"},
78
- :isk => {:format=>"#.###", :minor_unit=>0, :currency=>"Iceland Krona", :symbol=>"kr"},
79
- :jmd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Jamaican Dollar", :symbol=>"J$"},
80
- :jod => {:format=>"#,###.###", :minor_unit=>3, :currency=>"Jordanian Dinar", :symbol=>nil},
81
- :jpy => {:format=>"#,###", :minor_unit=>0, :currency=>"Yen", :symbol=>"¥"},
82
- :kes => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Kenyan Shilling", :symbol=>nil},
83
- :kgs => {:minor_unit=>2, :currency=>"Som", :symbol=>"лв"},
84
- :khr => {:minor_unit=>2, :currency=>"Riel", :symbol=>"៛"},
85
- :kmf => {:minor_unit=>0, :currency=>"Comoro Franc", :symbol=>nil},
86
- :kpw => {:minor_unit=>2, :currency=>"North Korean Won", :symbol=>"₩"},
87
- :krw => {:format=>"#,###", :minor_unit=>0, :currency=>"Won", :symbol=>""},
88
- :kwd => {:format=>"#,###.###", :minor_unit=>3, :currency=>"Kuwaiti Dinar", :symbol=>nil},
89
- :kyd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Cayman Islands Dollar", :symbol=>"$"},
90
- :kzt => {:minor_unit=>2, :currency=>"Tenge", :symbol=>"лв"},
91
- :lak => {:minor_unit=>2, :currency=>"Kip", :symbol=>""},
92
- :lbp => {:format=>"# ###", :minor_unit=>2, :currency=>"Lebanese Pound", :symbol=>"£"},
93
- :lkr => {:minor_unit=>2, :currency=>"Sri Lanka Rupee", :symbol=>"₨"},
94
- :lrd => {:minor_unit=>2, :currency=>"Liberian Dollar", :symbol=>"$"},
95
- :lsl => {:minor_unit=>2, :currency=>"Loti", :symbol=>nil},
96
- :ltl => {:format=>"# ###,##", :minor_unit=>2, :currency=>"Lithuanian Litas", :symbol=>"Lt"},
97
- :lvl => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Latvian Lats", :symbol=>"Ls"},
98
- :lyd => {:minor_unit=>3, :currency=>"Libyan Dinar", :symbol=>nil},
99
- :mad => {:minor_unit=>2, :currency=>"Moroccan Dirham", :symbol=>nil},
100
- :mdl => {:minor_unit=>2, :currency=>"Moldovan Leu", :symbol=>nil},
101
- :mga => {:minor_unit=>2, :currency=>"Malagasy Ariary", :symbol=>nil},
102
- :mkd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Denar", :symbol=>"ден"},
103
- :mmk => {:minor_unit=>2, :currency=>"Kyat", :symbol=>nil},
104
- :mnt => {:minor_unit=>2, :currency=>"Tugrik", :symbol=>""},
105
- :mop => {:minor_unit=>2, :currency=>"Pataca", :symbol=>nil},
106
- :mro => {:minor_unit=>2, :currency=>"Ouguiya", :symbol=>nil},
107
- :mur => {:format=>"#,###", :minor_unit=>2, :currency=>"Mauritius Rupee", :symbol=>"₨"},
108
- :mvr => {:minor_unit=>2, :currency=>"Rufiyaa", :symbol=>nil},
109
- :mwk => {:minor_unit=>2, :currency=>"Kwacha", :symbol=>nil},
110
- :mxn => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Mexican Peso", :symbol=>"$"},
111
- :mxv => {:minor_unit=>2, :currency=>"Mexican Unidad de Inversion (UDI)", :symbol=>nil},
112
- :myr => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Malaysian Ringgit", :symbol=>"RM"},
113
- :mzn => {:minor_unit=>2, :currency=>"Mozambique Metical", :symbol=>"MT"},
114
- :nad => {:minor_unit=>2, :currency=>"Namibia Dollar", :symbol=>"$"},
115
- :ngn => {:minor_unit=>2, :currency=>"Naira", :symbol=>"₦"},
116
- :nio => {:minor_unit=>2, :currency=>"Cordoba Oro", :symbol=>"C$"},
117
- :nok => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Norwegian Krone", :symbol=>"kr"},
118
- :npr => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Nepalese Rupee", :symbol=>""},
119
- :nzd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"New Zealand Dollar", :symbol=>"$"},
120
- :omr => {:format=>"#,###.###", :minor_unit=>3, :currency=>"Rial Omani", :symbol=>""},
121
- :pab => {:minor_unit=>2, :currency=>"Balboa", :symbol=>"B/."},
122
- :pen => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Nuevo Sol", :symbol=>"S/."},
123
- :pgk => {:minor_unit=>2, :currency=>"Kina", :symbol=>nil},
124
- :php => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Philippine Peso", :symbol=>""},
125
- :pkr => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Pakistan Rupee", :symbol=>""},
126
- :pln => {:format=>"# ###,##", :minor_unit=>2, :currency=>"Zloty", :symbol=>"zł"},
127
- :pyg => {:minor_unit=>0, :currency=>"Guarani", :symbol=>"Gs"},
128
- :qar => {:minor_unit=>2, :currency=>"Qatari Rial", :symbol=>""},
129
- :ron => {:format=>"#.###,##", :minor_unit=>2, :currency=>"New Romanian Leu", :symbol=>"lei"},
130
- :rsd => {:minor_unit=>2, :currency=>"Serbian Dinar", :symbol=>"Дин."},
131
- :rub => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Russian Ruble", :symbol=>"руб"},
132
- :rwf => {:minor_unit=>0, :currency=>"Rwanda Franc", :symbol=>nil},
133
- :sar => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Saudi Riyal", :symbol=>""},
134
- :sbd => {:minor_unit=>2, :currency=>"Solomon Islands Dollar", :symbol=>"$"},
135
- :scr => {:minor_unit=>2, :currency=>"Seychelles Rupee", :symbol=>""},
136
- :sdg => {:minor_unit=>2, :currency=>"Sudanese Pound", :symbol=>nil},
137
- :sek => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Swedish Krona", :symbol=>"kr"},
138
- :sgd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Singapore Dollar", :symbol=>"$"},
139
- :shp => {:minor_unit=>2, :currency=>"Saint Helena Pound", :symbol=>"£"},
140
- :sll => {:minor_unit=>2, :currency=>"Leone", :symbol=>nil},
141
- :sos => {:minor_unit=>2, :currency=>"Somali Shilling", :symbol=>"S"},
142
- :srd => {:minor_unit=>2, :currency=>"Surinam Dollar", :symbol=>"$"},
143
- :ssp => {:minor_unit=>2, :currency=>"South Sudanese Pound", :symbol=>nil},
144
- :std => {:minor_unit=>2, :currency=>"Dobra", :symbol=>nil},
145
- :svc => {:format=>"#,###.##", :minor_unit=>2, :currency=>"El Salvador Colon", :symbol=>"$"},
146
- :syp => {:minor_unit=>2, :currency=>"Syrian Pound", :symbol=>"£"},
147
- :szl => {:format=>"#, ###.##", :minor_unit=>2, :currency=>"Lilangeni", :symbol=>nil},
148
- :thb => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Baht", :symbol=>"฿"},
149
- :tjs => {:minor_unit=>2, :currency=>"Somoni", :symbol=>nil},
150
- :tmt => {:minor_unit=>2, :currency=>"Turkmenistan New Manat", :symbol=>nil},
151
- :tnd => {:minor_unit=>3, :currency=>"Tunisian Dinar", :symbol=>nil},
152
- :top => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Pa\xE2\x80\x99anga", :symbol=>nil},
153
- :try => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Turkish Lira", :symbol=>""},
154
- :ttd => {:minor_unit=>2, :currency=>"Trinidad and Tobago Dollar", :symbol=>"TT$"},
155
- :twd => {:minor_unit=>2, :currency=>"New Taiwan Dollar", :symbol=>"NT$"},
156
- :tzs => {:format=>"#,###.##", :minor_unit=>2, :currency=>"Tanzanian Shilling", :symbol=>nil},
157
- :uah => {:format=>"# ###,##", :minor_unit=>2, :currency=>"Hryvnia", :symbol=>"₴"},
158
- :ugx => {:minor_unit=>2, :currency=>"Uganda Shilling", :symbol=>nil},
159
- :usd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"US Dollar", :symbol=>"$"},
160
- :usn => {:minor_unit=>2, :currency=>"US Dollar (Next day)", :symbol=>nil},
161
- :uss => {:minor_unit=>2, :currency=>"US Dollar (Same day)", :symbol=>nil},
162
- :uyi => {:minor_unit=>0, :currency=>"Uruguay Peso en Unidades Indexadas (URUIURUI)", :symbol=>nil},
163
- :uyu => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Peso Uruguayo", :symbol=>"$U"},
164
- :uzs => {:minor_unit=>2, :currency=>"Uzbekistan Sum", :symbol=>"лв"},
165
- :vef => {:format=>"#.###,##", :minor_unit=>2, :currency=>"Bolivar Fuerte", :symbol=>"Bs"},
166
- :vnd => {:format=>"#.###", :minor_unit=>0, :currency=>"Dong", :symbol=>""},
167
- :vuv => {:format=>"#,###", :minor_unit=>0, :currency=>"Vatu", :symbol=>nil},
168
- :wst => {:minor_unit=>2, :currency=>"Tala", :symbol=>nil},
169
- :xaf => {:minor_unit=>0, :currency=>"CFA Franc BEAC", :symbol=>nil},
170
- :xcd => {:format=>"#,###.##", :minor_unit=>2, :currency=>"East Caribbean Dollar", :symbol=>"$"},
171
- :xof => {:minor_unit=>0, :currency=>"CFA Franc BCEAO", :symbol=>nil},
172
- :xpf => {:minor_unit=>0, :currency=>"CFP Franc", :symbol=>nil},
173
- :yer => {:minor_unit=>2, :currency=>"Yemeni Rial", :symbol=>"﷼"},
174
- :zar => {:format=>"# ###.##", :minor_unit=>2, :currency=>"Rand", :symbol=>"R"},
175
- :zmk => {:minor_unit=>2, :currency=>"Zambian Kwacha", :symbol=>nil},
176
- :zwl => {:minor_unit=>2, :currency=>"Zimbabwe Dollar", :symbol=>nil}
177
- }
9
+ subject.definitions.should === {
10
+ :nio=>{:minor_unit=>2, :currency=>"Cordoba Oro", :symbol=>"C$"},
11
+ :lak=>{:minor_unit=>2, :currency=>"Kip", :symbol=>""},
12
+ :sar=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Saudi Riyal", :symbol=>""},
13
+ :nok=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Norwegian Krone", :symbol=>"kr"},
14
+ :usd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"US Dollar", :symbol=>"$"},
15
+ :rub=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Russian Ruble", :symbol=>"руб"},
16
+ :xcd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"East Caribbean Dollar", :symbol=>"$"},
17
+ :omr=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>3, :currency=>"Rial Omani", :symbol=>""},
18
+ :amd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Armenian Dram", :symbol=>nil},
19
+ :cdf=>{:minor_unit=>2, :currency=>"Congolese Franc", :symbol=>nil},
20
+ :kpw=>{:minor_unit=>2, :currency=>"North Korean Won", :symbol=>""},
21
+ :cny=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Yuan Renminbi", :symbol=>"¥"},
22
+ :kes=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Kenyan Shilling", :symbol=>nil},
23
+ :khr=>{:minor_unit=>2, :currency=>"Riel", :symbol=>""},
24
+ :pln=>{:separators=>{:major=>" ", :minor=>","}, :minor_unit=>2, :currency=>"Zloty", :symbol=>"zł"},
25
+ :mvr=>{:minor_unit=>2, :currency=>"Rufiyaa", :symbol=>nil},
26
+ :gtq=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Quetzal", :symbol=>"Q"},
27
+ :clp=>{:separators=>{:major=>"."}, :minor_unit=>0, :currency=>"Chilean Peso", :symbol=>"$"},
28
+ :inr=>{:separators=>{:major=>",", :minor=>"."}, :format=>"#,##,###.##", :minor_unit=>2, :currency=>"Indian Rupee", :symbol=>""},
29
+ :bzd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Belize Dollar", :symbol=>"BZ$"},
30
+ :myr=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Malaysian Ringgit", :symbol=>"RM"},
31
+ :hkd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Hong Kong Dollar", :symbol=>"$"},
32
+ :cop=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Colombian Peso", :symbol=>"$"},
33
+ :dkk=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Danish Krone", :symbol=>"kr"},
34
+ :sek=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Swedish Krona", :symbol=>"kr"},
35
+ :byr=>{:minor_unit=>0, :currency=>"Belarussian Ruble", :symbol=>"p."},
36
+ :lyd=>{:minor_unit=>3, :currency=>"Libyan Dinar", :symbol=>nil},
37
+ :ron=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"New Romanian Leu", :symbol=>"lei"},
38
+ :dzd=>{:minor_unit=>2, :currency=>"Algerian Dinar", :symbol=>nil}, :bif=>{:minor_unit=>0, :currency=>"Burundi Franc", :symbol=>nil},
39
+ :ars=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Argentine Peso", :symbol=>"$"},
40
+ :gip=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Gibraltar Pound", :symbol=>"£"},
41
+ :uyi=>{:minor_unit=>0, :currency=>"Uruguay Peso en Unidades Indexadas (URUIURUI)", :symbol=>nil},
42
+ :bob=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Boliviano", :symbol=>"$b"},
43
+ :ssp=>{:minor_unit=>2, :currency=>"South Sudanese Pound", :symbol=>nil},
44
+ :ngn=>{:minor_unit=>2, :currency=>"Naira", :symbol=>"₦"},
45
+ :pgk=>{:minor_unit=>2, :currency=>"Kina", :symbol=>nil},
46
+ :std=>{:minor_unit=>2, :currency=>"Dobra", :symbol=>nil},
47
+ :xof=>{:minor_unit=>0, :currency=>"CFA Franc BCEAO", :symbol=>nil},
48
+ :aed=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"UAE Dirham", :symbol=>nil},
49
+ :ern=>{:minor_unit=>2, :currency=>"Nakfa", :symbol=>nil}, :mwk=>{:minor_unit=>2, :currency=>"Kwacha", :symbol=>nil},
50
+ :cup=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Cuban Peso", :symbol=>"₱"},
51
+ :usn=>{:minor_unit=>2, :currency=>"US Dollar (Next day)", :symbol=>nil},
52
+ :gmd=>{:minor_unit=>2, :currency=>"Dalasi", :symbol=>nil},
53
+ :cve=>{:minor_unit=>2, :currency=>"Cape Verde Escudo", :symbol=>nil},
54
+ :tzs=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Tanzanian Shilling", :symbol=>nil},
55
+ :cou=>{:minor_unit=>2, :currency=>"Unidad de Valor Real", :symbol=>nil},
56
+ :btn=>{:minor_unit=>2, :currency=>"Ngultrum", :symbol=>nil},
57
+ :zwl=>{:minor_unit=>2, :currency=>"Zimbabwe Dollar", :symbol=>nil},
58
+ :ugx=>{:minor_unit=>2, :currency=>"Uganda Shilling", :symbol=>nil},
59
+ :syp=>{:minor_unit=>2, :currency=>"Syrian Pound", :symbol=>"£"},
60
+ :mad=>{:minor_unit=>2, :currency=>"Moroccan Dirham", :symbol=>nil},
61
+ :mnt=>{:minor_unit=>2, :currency=>"Tugrik", :symbol=>"₮"},
62
+ :lsl=>{:minor_unit=>2, :currency=>"Loti", :symbol=>nil},
63
+ :xaf=>{:minor_unit=>0, :currency=>"CFA Franc BEAC", :symbol=>nil},
64
+ :shp=>{:minor_unit=>2, :currency=>"Saint Helena Pound", :symbol=>"£"},
65
+ :htg=>{:minor_unit=>2, :currency=>"Gourde", :symbol=>nil},
66
+ :rsd=>{:minor_unit=>2, :currency=>"Serbian Dinar", :symbol=>"Дин."},
67
+ :mga=>{:minor_unit=>2, :currency=>"Malagasy Ariary", :symbol=>nil},
68
+ :top=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Pa’anga", :symbol=>nil},
69
+ :mzn=>{:minor_unit=>2, :currency=>"Mozambique Metical", :symbol=>"MT"},
70
+ :lvl=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Latvian Lats", :symbol=>"Ls"},
71
+ :fkp=>{:minor_unit=>2, :currency=>"Falkland Islands Pound", :symbol=>"£"},
72
+ :uss=>{:minor_unit=>2, :currency=>"US Dollar (Same day)", :symbol=>nil},
73
+ :bwp=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Pula", :symbol=>"P"},
74
+ :hnl=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Lempira", :symbol=>"L"},
75
+ :eur=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Euro", :symbol=>""},
76
+ :egp=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Egyptian Pound", :symbol=>"£"},
77
+ :chf=>{:separators=>{:major=>"'", :minor=>"."}, :minor_unit=>2, :currency=>"Swiss Franc"},
78
+ :ils=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"New Israeli Sheqel", :symbol=>""},
79
+ :pyg=>{:minor_unit=>0, :currency=>"Guarani", :symbol=>"Gs"},
80
+ :lbp=>{:separators=>{:major=>" ", :minor=>"."}, :minor_unit=>2, :currency=>"Lebanese Pound", :symbol=>"£"},
81
+ :ang=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Netherlands Antillean Guilder", :symbol=>"ƒ"},
82
+ :kzt=>{:minor_unit=>2, :currency=>"Tenge", :symbol=>"лв"},
83
+ :gyd=>{:minor_unit=>2, :currency=>"Guyana Dollar", :symbol=>"$"},
84
+ :wst=>{:minor_unit=>2, :currency=>"Tala", :symbol=>nil},
85
+ :npr=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Nepalese Rupee", :symbol=>"₨"},
86
+ :kmf=>{:minor_unit=>0, :currency=>"Comoro Franc", :symbol=>nil},
87
+ :thb=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Baht", :symbol=>"฿"},
88
+ :irr=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Iranian Rial", :symbol=>"﷼"},
89
+ :srd=>{:minor_unit=>2, :currency=>"Surinam Dollar", :symbol=>"$"},
90
+ :jpy=>{:separators=>{:major=>","}, :minor_unit=>0, :currency=>"Yen", :symbol=>"¥"},
91
+ :brl=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Brazilian Real", :symbol=>"R$"},
92
+ :uyu=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Peso Uruguayo", :symbol=>"$U"},
93
+ :mop=>{:minor_unit=>2, :currency=>"Pataca", :symbol=>nil},
94
+ :bmd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Bermudian Dollar", :symbol=>"$"},
95
+ :szl=>{:separators=>{:major=>", ", :minor=>"."}, :minor_unit=>2, :currency=>"Lilangeni", :symbol=>nil},
96
+ :etb=>{:minor_unit=>2, :currency=>"Ethiopian Birr", :symbol=>nil},
97
+ :jod=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>3, :currency=>"Jordanian Dinar", :symbol=>nil},
98
+ :idr=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Rupiah", :symbol=>"Rp"},
99
+ :mdl=>{:minor_unit=>2, :currency=>"Moldovan Leu", :symbol=>nil},
100
+ :xpf=>{:minor_unit=>0, :currency=>"CFP Franc", :symbol=>nil},
101
+ :mro=>{:minor_unit=>2, :currency=>"Ouguiya", :symbol=>nil},
102
+ :yer=>{:minor_unit=>2, :currency=>"Yemeni Rial", :symbol=>""},
103
+ :bam=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Convertible Mark", :symbol=>"KM"},
104
+ :awg=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Aruban Florin", :symbol=>"ƒ"},
105
+ :nzd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"New Zealand Dollar", :symbol=>"$"},
106
+ :pen=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Nuevo Sol", :symbol=>"S/."},
107
+ :aoa=>{:minor_unit=>2, :currency=>"Kwanza", :symbol=>nil},
108
+ :kyd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Cayman Islands Dollar", :symbol=>"$"},
109
+ :sll=>{:minor_unit=>2, :currency=>"Leone", :symbol=>nil},
110
+ :try=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Turkish Lira", :symbol=>""},
111
+ :vef=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Bolivar Fuerte", :symbol=>"Bs"},
112
+ :isk=>{:format=>"#.###", :minor_unit=>0, :currency=>"Iceland Krona", :symbol=>"kr"},
113
+ :gnf=>{:minor_unit=>0, :currency=>"Guinea Franc", :symbol=>nil},
114
+ :bsd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Bahamian Dollar", :symbol=>"$"},
115
+ :djf=>{:minor_unit=>0, :currency=>"Djibouti Franc", :symbol=>nil},
116
+ :huf=>{:separators=>{:major=>".", :minor=>"."}, :minor_unit=>2, :currency=>"Forint", :symbol=>"Ft"},
117
+ :ltl=>{:separators=>{:major=>" ", :minor=>","}, :minor_unit=>2, :currency=>"Lithuanian Litas", :symbol=>"Lt"},
118
+ :mxn=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Mexican Peso", :symbol=>"$"},
119
+ :scr=>{:minor_unit=>2, :currency=>"Seychelles Rupee", :symbol=>""},
120
+ :sgd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Singapore Dollar", :symbol=>"$"},
121
+ :lkr=>{:minor_unit=>2, :currency=>"Sri Lanka Rupee", :symbol=>""},
122
+ :tjs=>{:minor_unit=>2, :currency=>"Somoni", :symbol=>nil},
123
+ :tnd=>{:minor_unit=>3, :currency=>"Tunisian Dinar", :symbol=>nil},
124
+ :dop=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Dominican Peso", :symbol=>"RD$"},
125
+ :fjd=>{:minor_unit=>2, :currency=>"Fiji Dollar", :symbol=>"$"},
126
+ :gel=>{:minor_unit=>2, :currency=>"Lari", :symbol=>nil}, :sdg=>{:minor_unit=>2, :currency=>"Sudanese Pound", :symbol=>nil},
127
+ :vuv=>{:separators=>{:major=>","}, :minor_unit=>0, :currency=>"Vatu", :symbol=>nil},
128
+ :bbd=>{:minor_unit=>2, :currency=>"Barbados Dollar", :symbol=>"$"},
129
+ :lrd=>{:minor_unit=>2, :currency=>"Liberian Dollar", :symbol=>"$"},
130
+ :krw=>{:separators=>{:major=>","}, :minor_unit=>0, :currency=>"Won", :symbol=>""},
131
+ :mmk=>{:minor_unit=>2, :currency=>"Kyat", :symbol=>nil},
132
+ :mur=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Mauritius Rupee", :symbol=>"₨"},
133
+ :php=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Philippine Peso", :symbol=>""},
134
+ :zar=>{:separators=>{:major=>" ", :minor=>"."}, :minor_unit=>2, :currency=>"Rand", :symbol=>"R"},
135
+ :kgs=>{:minor_unit=>2, :currency=>"Som", :symbol=>"лв"},
136
+ :gbp=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Pound Sterling", :symbol=>"£"},
137
+ :bgn=>{:minor_unit=>2, :currency=>"Bulgarian Lev", :symbol=>"лв"},
138
+ :iqd=>{:minor_unit=>3, :currency=>"Iraqi Dinar", :symbol=>nil},
139
+ :tmt=>{:minor_unit=>2, :currency=>"Turkmenistan New Manat", :symbol=>nil},
140
+ :uah=>{:separators=>{:major=>" ", :minor=>","}, :minor_unit=>2, :currency=>"Hryvnia", :symbol=>"₴"},
141
+ :vnd=>{:separators=>{:major=>"."}, :minor_unit=>0, :currency=>"Dong", :symbol=>""},
142
+ :zmk=>{:minor_unit=>2, :currency=>"Zambian Kwacha", :symbol=>nil},
143
+ :bov=>{:minor_unit=>2, :currency=>"Mvdol", :symbol=>nil},
144
+ :hrk=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Croatian Kuna", :symbol=>"kn"},
145
+ :ttd=>{:minor_unit=>2, :currency=>"Trinidad and Tobago Dollar", :symbol=>"TT$"},
146
+ :bhd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>3, :currency=>"Bahraini Dinar", :symbol=>nil},
147
+ :clf=>{:minor_unit=>0, :currency=>"Unidades de fomento", :symbol=>nil},
148
+ :rwf=>{:minor_unit=>0, :currency=>"Rwanda Franc", :symbol=>nil},
149
+ :mkd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Denar", :symbol=>"ден"},
150
+ :aud=>{:separators=>{:major=>" ", :minor=>"."}, :minor_unit=>2, :currency=>"Australian Dollar", :symbol=>"$"},
151
+ :crc=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Costa Rican Colon", :symbol=>"₡"},
152
+ :pkr=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Pakistan Rupee", :symbol=>"₨"},
153
+ :twd=>{:minor_unit=>2, :currency=>"New Taiwan Dollar", :symbol=>"NT$"},
154
+ :uzs=>{:minor_unit=>2, :currency=>"Uzbekistan Sum", :symbol=>"лв"},
155
+ :czk=>{:separators=>{:major=>".", :minor=>","}, :minor_unit=>2, :currency=>"Czech Koruna", :symbol=>""},
156
+ :azn=>{:minor_unit=>2, :currency=>"Azerbaijanian Manat", :symbol=>"ман"},
157
+ :bdt=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Taka", :symbol=>nil},
158
+ :nad=>{:minor_unit=>2, :currency=>"Namibia Dollar", :symbol=>"$"},
159
+ :afn=>{:minor_unit=>2, :currency=>"Afghani", :symbol=>"؋"},
160
+ :mxv=>{:minor_unit=>2, :currency=>"Mexican Unidad de Inversion (UDI)", :symbol=>nil},
161
+ :cuc=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Peso Convertible", :symbol=>nil},
162
+ :pab=>{:minor_unit=>2, :currency=>"Balboa", :symbol=>"B/."},
163
+ :qar=>{:minor_unit=>2, :currency=>"Qatari Rial", :symbol=>""},
164
+ :sos=>{:minor_unit=>2, :currency=>"Somali Shilling", :symbol=>"S"},
165
+ :chw=>{:minor_unit=>2, :currency=>"WIR Franc", :symbol=>nil},
166
+ :cad=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Canadian Dollar", :symbol=>"$"},
167
+ :jmd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Jamaican Dollar", :symbol=>"J$"},
168
+ :bnd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"Brunei Dollar", :symbol=>"$"},
169
+ :all=>{:minor_unit=>2, :currency=>"Lek", :symbol=>"Lek"},
170
+ :svc=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>2, :currency=>"El Salvador Colon", :symbol=>"$"},
171
+ :sbd=>{:minor_unit=>2, :currency=>"Solomon Islands Dollar", :symbol=>"$"},
172
+ :ghs=>{:minor_unit=>2, :currency=>"Ghana Cedi", :symbol=>nil},
173
+ :kwd=>{:separators=>{:major=>",", :minor=>"."}, :minor_unit=>3, :currency=>"Kuwaiti Dinar", :symbol=>nil}}
178
174
  end
179
175
  end
180
176
  describe "self.country_map" do
@@ -755,41 +751,70 @@ describe "Exchange::ISO" do
755
751
  subject.round(BigDecimal.new("23.232524"), :sar).should == BigDecimal.new("23.23")
756
752
  subject.round(BigDecimal.new("23.232524"), :clp).should == BigDecimal.new("23")
757
753
  end
754
+ it "should round psychologically if asked" do
755
+ subject.round(BigDecimal.new("23.232524"), :tnd, nil, {:psych => true}).should == BigDecimal.new("22.999")
756
+ subject.round(BigDecimal.new("23.232524"), :sar, nil, {:psych => true}).should == BigDecimal.new("22.99")
757
+ subject.round(BigDecimal.new("23.232524"), :clp, nil, {:psych => true}).should == BigDecimal.new("19")
758
+ end
759
+ end
760
+ describe "self.ceil" do
761
+ it "should ceil a currency according to ISO 4217 Definitions" do
762
+ subject.ceil(BigDecimal.new("23.232524"), :tnd).should == BigDecimal.new("23.233")
763
+ subject.ceil(BigDecimal.new("23.232524"), :sar).should == BigDecimal.new("23.24")
764
+ subject.ceil(BigDecimal.new("23.232524"), :clp).should == BigDecimal.new("24")
765
+ end
766
+ it "should ceil psychologically if asked" do
767
+ subject.ceil(BigDecimal.new("23.232524"), :tnd, nil, {:psych => true}).should == BigDecimal.new("23.999")
768
+ subject.ceil(BigDecimal.new("23.232524"), :sar, nil, {:psych => true}).should == BigDecimal.new("23.99")
769
+ subject.ceil(BigDecimal.new("23.232524"), :clp, nil, {:psych => true}).should == BigDecimal.new("29")
770
+ end
771
+ end
772
+ describe "self.floor" do
773
+ it "should floor a currency according to ISO 4217 Definitions" do
774
+ subject.floor(BigDecimal.new("23.232524"), :tnd).should == BigDecimal.new("23.232")
775
+ subject.floor(BigDecimal.new("23.232524"), :sar).should == BigDecimal.new("23.23")
776
+ subject.floor(BigDecimal.new("23.232524"), :clp).should == BigDecimal.new("23")
777
+ end
778
+ it "should floor psychologically if asked" do
779
+ subject.floor(BigDecimal.new("23.232524"), :tnd, nil, {:psych => true}).should == BigDecimal.new("22.999")
780
+ subject.floor(BigDecimal.new("23.232524"), :sar, nil, {:psych => true}).should == BigDecimal.new("22.99")
781
+ subject.floor(BigDecimal.new("23.232524"), :clp, nil, {:psych => true}).should == BigDecimal.new("19")
782
+ end
758
783
  end
759
784
  describe "self.stringify" do
760
785
  it "should stringify a currency according to ISO 4217 Definitions" do
761
- subject.stringify(BigDecimal.new("23.232524"), :tnd).should == "TND 23.233"
762
- subject.stringify(BigDecimal.new("23.232524"), :sar).should == "SAR 23.23"
763
- subject.stringify(BigDecimal.new("23.232524"), :clp).should == "CLP 23"
764
- subject.stringify(BigDecimal.new("23.2"), :tnd).should == "TND 23.200"
765
- subject.stringify(BigDecimal.new("23.4"), :sar).should == "SAR 23.40"
766
- subject.stringify(BigDecimal.new("23.0"), :clp).should == "CLP 23"
786
+ subject.stringify(BigDecimal.new("23234234.232524"), :tnd).should == "TND 23234234.233"
787
+ subject.stringify(BigDecimal.new("23234234.232524"), :sar).should == "SAR 23,234,234.23"
788
+ subject.stringify(BigDecimal.new("2323434223.232524"), :clp).should == "CLP 2.323.434.223"
789
+ subject.stringify(BigDecimal.new("232344.2"), :tnd).should == "TND 232344.200"
790
+ subject.stringify(BigDecimal.new("233432434.4"), :sar).should == "SAR 233,432,434.40"
791
+ subject.stringify(BigDecimal.new("23234234.0"), :clp).should == "CLP 23.234.234"
767
792
  end
768
793
  context "amount only" do
769
794
  it "should not render the currency" do
770
- subject.stringify(BigDecimal.new("23.232524"), :tnd, :amount_only => true).should == "23.233"
771
- subject.stringify(BigDecimal.new("23.232524"), :sar, :amount_only => true).should == "23.23"
772
- subject.stringify(BigDecimal.new("23.232524"), :clp, :amount_only => true).should == "23"
773
- subject.stringify(BigDecimal.new("23.2"), :tnd, :amount_only => true).should == "23.200"
774
- subject.stringify(BigDecimal.new("23.4"), :sar, :amount_only => true).should == "23.40"
775
- subject.stringify(BigDecimal.new("23.0"), :clp, :amount_only => true).should == "23"
795
+ subject.stringify(BigDecimal.new("23.232524"), :tnd, :format => :amount).should == "23.233"
796
+ subject.stringify(BigDecimal.new("223423432343.232524"), :chf, :format => :amount).should == "223'423'432'343.23"
797
+ subject.stringify(BigDecimal.new("23.232524"), :clp, :format => :amount).should == "23"
798
+ subject.stringify(BigDecimal.new("23.2"), :tnd, :format => :amount).should == "23.200"
799
+ subject.stringify(BigDecimal.new("25645645663.4"), :sar, :format => :amount).should == "25,645,645,663.40"
800
+ subject.stringify(BigDecimal.new("23.0"), :clp, :format => :amount).should == "23"
776
801
  end
777
802
  end
778
803
  context "symbol" do
779
804
  context "with a symbol present" do
780
805
  it "should render a symbol for the currency" do
781
- subject.stringify(BigDecimal.new("23.232524"), :usd, :symbol => true).should == "$23.23"
782
- subject.stringify(BigDecimal.new("23.232524"), :irr, :symbol => true).should == "﷼23.23"
783
- subject.stringify(BigDecimal.new("23.232524"), :gbp, :symbol => true).should == "£23.23"
784
- subject.stringify(BigDecimal.new("23.232524"), :eur, :symbol => true).should == "€23.23"
806
+ subject.stringify(BigDecimal.new("23.232524"), :usd, :format => :symbol).should == "$23.23"
807
+ subject.stringify(BigDecimal.new("23.232524"), :irr, :format => :symbol).should == "﷼23.23"
808
+ subject.stringify(BigDecimal.new("345543453453.232524"), :gbp, :format => :symbol).should == "£345,543,453,453.23"
809
+ subject.stringify(BigDecimal.new("23.232524"), :eur, :format => :symbol).should == "€23.23"
785
810
  end
786
811
  end
787
812
  context "without a symbol present" do
788
813
  it "should render the currency abbreviation" do
789
- subject.stringify(BigDecimal.new("23.232524"), :chf, :symbol => true).should == "CHF23.23"
790
- subject.stringify(BigDecimal.new("23.232524"), :etb, :symbol => true).should == "ETB23.23"
814
+ subject.stringify(BigDecimal.new("32741393.232524"), :chf, :format => :symbol).should == "CHF 32'741'393.23"
815
+ subject.stringify(BigDecimal.new("23.232524"), :etb, :format => :symbol).should == "ETB 23.23"
791
816
  end
792
817
  end
793
818
  end
794
819
  end
795
- end
820
+ end