more_money 0.0.5
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.
- data/History.txt +0 -0
- data/Manifest.txt +11 -0
- data/README.txt +3 -0
- data/Rakefile +50 -0
- data/lib/more_money/core_extensions.rb +32 -0
- data/lib/more_money/more_money.rb +291 -0
- data/lib/more_money/version.rb +9 -0
- data/lib/more_money.rb +1 -0
- data/setup.rb +1585 -0
- data/test/more_money_test.rb +117 -0
- data/test/test_helper.rb +2 -0
- metadata +64 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
include MoreMoney
|
4
|
+
class MoreMoneyTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
Money.load_std_currencies
|
8
|
+
Money.default_currency = 'USD'
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_create
|
12
|
+
a = Money.new(100)
|
13
|
+
assert_equal 100, a.cents
|
14
|
+
b = Money.new(1000)
|
15
|
+
assert_equal 1000, b.cents
|
16
|
+
Money.default_currency = 'JPY'
|
17
|
+
c = Money.new(1000)
|
18
|
+
assert_equal 1000, c.cents
|
19
|
+
assert_equal 'JPY', c.currency
|
20
|
+
assert_equal 'USD', a.currency
|
21
|
+
assert_equal 'USD', b.currency
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_generated_creator
|
25
|
+
a = Money.us_dollar(100)
|
26
|
+
assert_equal 100, a.cents
|
27
|
+
assert_equal 'USD', a.currency
|
28
|
+
b = Money.jp_yen(100)
|
29
|
+
assert_equal 100, b.cents
|
30
|
+
assert_equal 'JPY', b.currency
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_format
|
34
|
+
a = Money.us_dollar(100)
|
35
|
+
b = Money.jp_yen(100)
|
36
|
+
c = Money.gb_pound(100)
|
37
|
+
assert_equal "$ 1.00", a.format
|
38
|
+
assert_equal "¥ 1.00", b.format
|
39
|
+
assert_equal "£ 1.00", c.format
|
40
|
+
assert_equal "$ 1.00 USD", a.format(:with_currency)
|
41
|
+
assert_equal "¥ 1.00 JPY", b.format(:with_currency)
|
42
|
+
assert_equal "£ 1.00 GBP", c.format(:with_currency)
|
43
|
+
test_format = lambda do |cents, code, symbol, rules|
|
44
|
+
if rules.include?(:no_cents)
|
45
|
+
formatted = sprintf("test %d", cents.to_f / 100 )
|
46
|
+
else
|
47
|
+
formatted = sprintf("test %.2f", cents.to_f / 100 )
|
48
|
+
end
|
49
|
+
formatted = "#{formatted} #{symbol}"
|
50
|
+
if rules.include?(:with_currency)
|
51
|
+
formatted << " "
|
52
|
+
formatted << '<span class="currency">' if rules.include?(:html)
|
53
|
+
formatted << code
|
54
|
+
formatted << '</span>' if rules.include?(:html)
|
55
|
+
end
|
56
|
+
formatted
|
57
|
+
end
|
58
|
+
Money.add_currency(:code => 'TST', :description => 'test_currency', :symbol => '!', :format => test_format)
|
59
|
+
d = Money.test_currency(1000)
|
60
|
+
assert_equal "test 10.00 !", d.format
|
61
|
+
assert_equal "test 10.00 ! TST", d.format(:with_currency)
|
62
|
+
assert_equal "$ 0.00", Money.us_dollar(0).format
|
63
|
+
Money.add_currency({:code => 'USD', :symbol => '$', :description => 'us_dollar', :format_defaults => { 0 => 'free' }})
|
64
|
+
assert_equal "free", Money.us_dollar(0).format
|
65
|
+
assert_equal "£ 0.00", Money.gb_pound(0).format
|
66
|
+
Money.set_default_format(0, 'free as in a beer')
|
67
|
+
assert_equal "free", Money.us_dollar(0).format
|
68
|
+
assert_equal "free as in a beer", Money.gb_pound(0).format
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_nil
|
72
|
+
a = Money.new(nil)
|
73
|
+
assert_equal nil, a.cents
|
74
|
+
assert_equal 'USD', a.currency
|
75
|
+
assert_equal nil, (a * 2).cents
|
76
|
+
assert_equal nil, (a / 2).cents
|
77
|
+
b = Money.new(100)
|
78
|
+
assert(b > a)
|
79
|
+
assert_equal 100, (a + b).cents
|
80
|
+
assert_equal(-100, (a - b).cents)
|
81
|
+
assert_equal 100, (b + a).cents
|
82
|
+
assert_equal 100, (b - a).cents
|
83
|
+
c = nil.to_money
|
84
|
+
assert_equal nil, c.cents
|
85
|
+
assert_equal 'USD', c.currency
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_thousands
|
89
|
+
a = Money.us_dollar(100)
|
90
|
+
assert_equal "$ 1.00", a.format(:with_thousands)
|
91
|
+
a = Money.us_dollar(10000)
|
92
|
+
assert_equal "$ 100.00", a.format(:with_thousands)
|
93
|
+
a = Money.us_dollar(100000)
|
94
|
+
assert_equal "$ 1,000.00", a.format(:with_thousands)
|
95
|
+
a = Money.us_dollar(1000000)
|
96
|
+
assert_equal "$ 10,000.00", a.format(:with_thousands)
|
97
|
+
a = Money.us_dollar(10000000)
|
98
|
+
assert_equal "$ 100,000.00", a.format(:with_thousands)
|
99
|
+
a = Money.us_dollar(100000000)
|
100
|
+
assert_equal "$ 1,000,000.00", a.format(:with_thousands)
|
101
|
+
assert_equal "$ 1,000,000", a.format(:with_thousands, :no_cents)
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_exchange
|
105
|
+
a = Money.us_dollar(100)
|
106
|
+
b = Money.jp_yen(10000)
|
107
|
+
c = Money.gb_pound(100)
|
108
|
+
d = Money.au_dollar(100)
|
109
|
+
Money.set_exchange_rate('USD', 'GBP', 0.51)
|
110
|
+
Money.set_exchange_rate('JPY', 'GBP', 0.0043)
|
111
|
+
Money.set_exchange_rate('JPY', 'GBP', 0.0043)
|
112
|
+
assert_equal [ 51, 'GBP'], a.exchange_to('GBP').instance_eval("[cents, currency]")
|
113
|
+
assert_equal [ 43, 'GBP'], b.exchange_to('GBP').instance_eval("[cents, currency]")
|
114
|
+
assert_equal [ 100, 'GBP'], c.exchange_to('GBP').instance_eval("[cents, currency]")
|
115
|
+
assert_raise(MoreMoney::MoneyMissingExchangeRate) { d.exchange_to('GBP') }
|
116
|
+
end
|
117
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.0
|
3
|
+
specification_version: 1
|
4
|
+
name: more_money
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.5
|
7
|
+
date: 2007-01-08 00:00:00 +00:00
|
8
|
+
summary: handles money objects using just integer as backend
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: your contact email for bug fixes and info
|
12
|
+
homepage: http://more_money.rubyforge.org
|
13
|
+
rubyforge_project: more_money
|
14
|
+
description: handles money objects using just integer as backend
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- blank
|
31
|
+
files:
|
32
|
+
- History.txt
|
33
|
+
- Manifest.txt
|
34
|
+
- README.txt
|
35
|
+
- Rakefile
|
36
|
+
- setup.rb
|
37
|
+
- lib/more_money.rb
|
38
|
+
- lib/more_money/version.rb
|
39
|
+
- lib/more_money/core_extensions.rb
|
40
|
+
- lib/more_money/more_money.rb
|
41
|
+
- test/test_helper.rb
|
42
|
+
- test/more_money_test.rb
|
43
|
+
test_files:
|
44
|
+
- test/more_money_test.rb
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
extra_rdoc_files: []
|
48
|
+
|
49
|
+
executables: []
|
50
|
+
|
51
|
+
extensions: []
|
52
|
+
|
53
|
+
requirements: []
|
54
|
+
|
55
|
+
dependencies:
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: hoe
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.1.6
|
64
|
+
version:
|