exchange 0.12.0 → 1.0.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.
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