formatted-money 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/test/test_all.rb ADDED
@@ -0,0 +1,138 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test-unit'
4
+ require 'formatted_money'
5
+
6
+ class TestFormattedMoney < Test::Unit::TestCase
7
+
8
+ def test_conversion_to_cents
9
+ # Defaults to European style
10
+ assert_equal Integer(0), FormattedMoney.cents('0')
11
+ assert_equal Integer(0), FormattedMoney.cents('0,00')
12
+ assert_equal Integer(400056), FormattedMoney.cents('4.000,56')
13
+ assert_equal Integer(4200056), FormattedMoney.cents('42.000,56')
14
+ assert_equal Integer(139400056), FormattedMoney.cents('1.394.000,56')
15
+ assert_equal Integer(789999400056), FormattedMoney.cents('7.899.994.000,56')
16
+ end
17
+
18
+ def test_european_conversion_to_cents
19
+ assert_equal Integer(0), FormattedMoney::European.cents('0')
20
+ assert_equal Integer(0), FormattedMoney::European.cents('0,00')
21
+ assert_equal Integer(400056), FormattedMoney::European.cents('4.000,56')
22
+ assert_equal Integer(4200056), FormattedMoney::European.cents('42.000,56')
23
+ assert_equal Integer(139400056), FormattedMoney::European.cents('1.394.000,56')
24
+ assert_equal Integer(789999400056), FormattedMoney::European.cents('7.899.994.000,56')
25
+ end
26
+
27
+ def test_american_conversion_to_cents
28
+ assert_equal Integer(0), FormattedMoney::American.cents('0')
29
+ assert_equal Integer(0), FormattedMoney::American.cents('0.00')
30
+ assert_equal Integer(400056), FormattedMoney::American.cents('4,000.56')
31
+ assert_equal Integer(4200056), FormattedMoney::American.cents('42,000.56')
32
+ assert_equal Integer(139400056), FormattedMoney::American.cents('1,394,000.56')
33
+ assert_equal Integer(789999400056), FormattedMoney::American.cents('7,899,994,000.56')
34
+ end
35
+
36
+ def test_formatted_amount
37
+ # Defaults to European style
38
+ assert_equal '0,00', FormattedMoney.amount(Integer(0))
39
+ assert_equal '0,00', FormattedMoney.amount(Integer(00))
40
+ assert_equal '1.000,00', FormattedMoney.amount(Integer(100000))
41
+ assert_equal '1.234,56', FormattedMoney.amount(Integer(123456))
42
+ assert_equal '138.200,00', FormattedMoney.amount(Integer(13820000))
43
+ assert_equal '138.555.200,00', FormattedMoney.amount(Integer(13855520000))
44
+ assert_equal '26.897.200,00', FormattedMoney.amount(Integer(2689720000))
45
+ end
46
+
47
+ def test_formatted_amount_from_string
48
+ # Strings containing only numbers should be fine as well
49
+ assert_equal '0,00', FormattedMoney.amount(String('0'))
50
+ assert_equal '0,00', FormattedMoney.amount(String('00'))
51
+ assert_equal '138.555.200,00', FormattedMoney.amount('13855520000')
52
+ end
53
+
54
+ def test_europen_formatted_amount
55
+ assert_equal '0,00', FormattedMoney::European.amount(Integer(0))
56
+ assert_equal '0,00', FormattedMoney::European.amount(Integer(00))
57
+ assert_equal '1.000,00', FormattedMoney::European.amount(Integer(100000))
58
+ assert_equal '1.234,56', FormattedMoney::European.amount(Integer(123456))
59
+ assert_equal '138.200,00', FormattedMoney::European.amount(Integer(13820000))
60
+ assert_equal '138.555.200,00', FormattedMoney::European.amount(Integer(13855520000))
61
+ assert_equal '26.897.200,00', FormattedMoney::European.amount(Integer(2689720000))
62
+ end
63
+
64
+ def test_american_formatted_amount
65
+ assert_equal '0.00', FormattedMoney::American.amount(Integer(0))
66
+ assert_equal '0.00', FormattedMoney::American.amount(Integer(00))
67
+ assert_equal '1,000.00', FormattedMoney::American.amount(Integer(100000))
68
+ assert_equal '1,234.56', FormattedMoney::American.amount(Integer(123456))
69
+ assert_equal '138,200.00', FormattedMoney::American.amount(Integer(13820000))
70
+ assert_equal '138,555,200.00', FormattedMoney::American.amount(Integer(13855520000))
71
+ assert_equal '26,897,200.00', FormattedMoney::American.amount(Integer(2689720000))
72
+ end
73
+
74
+ def test_check_float
75
+ FormattedMoney.check_float('123,254')
76
+ FormattedMoney.check_float('3,254.456')
77
+
78
+ assert_raises (ArgumentError) {
79
+ FormattedMoney.check_float('123254d')
80
+ }
81
+ end
82
+
83
+ def test_check_integer
84
+ FormattedMoney.check_integer('123254')
85
+ FormattedMoney.check_integer(123254)
86
+
87
+ assert_raises (ArgumentError) {
88
+ FormattedMoney.check_integer('123254d')
89
+ }
90
+ end
91
+
92
+ def test_number_with_delimiter
93
+ assert_equal '1.000.000', FormattedMoney.number_with_delimiter('1000000','.')
94
+ assert_equal '400|000', FormattedMoney.number_with_delimiter('400000','|')
95
+ assert_equal '21,000,000,156', FormattedMoney.number_with_delimiter('21000000156',',')
96
+
97
+ assert_equal '1 000 000', FormattedMoney.number_with_delimiter('1000000',' ')
98
+ assert_equal '400 000', FormattedMoney.number_with_delimiter('400000',' ')
99
+ assert_equal '21 000 000 156', FormattedMoney.number_with_delimiter('21000000156',' ')
100
+
101
+ assert_equal '1.000.000', FormattedMoney.number_with_delimiter(1000000,'.')
102
+ assert_equal '400|000', FormattedMoney.number_with_delimiter(400000,'|')
103
+ assert_equal '21,000,000,156', FormattedMoney.number_with_delimiter(21000000156,',')
104
+ end
105
+
106
+ def test_trim_leading_zeros
107
+ assert_equal '0', FormattedMoney.trim_leading_zeros('0')
108
+ assert_equal '525', FormattedMoney.trim_leading_zeros('0525')
109
+ assert_equal '2', FormattedMoney.trim_leading_zeros('0002')
110
+ assert_equal '300', FormattedMoney.trim_leading_zeros('0300')
111
+ end
112
+
113
+ def test_separator_regex
114
+ FormattedMoney.escape_chars = ['.', '^', '$', '*']
115
+
116
+ assert_equal '\\.', FormattedMoney.separator_regex('.')
117
+ assert_equal ',', FormattedMoney.separator_regex(',')
118
+
119
+ FormattedMoney.escape_chars = []
120
+
121
+ assert_equal '.', FormattedMoney.separator_regex('.')
122
+ end
123
+
124
+ def test_only_zeros
125
+ delimiter = '\.'
126
+ cents_separator = ','
127
+
128
+ assert_equal true, FormattedMoney.only_zeros?('0', delimiter, cents_separator)
129
+ assert_equal true, FormattedMoney.only_zeros?('0,0', delimiter, cents_separator)
130
+ assert_equal true, FormattedMoney.only_zeros?('0,00', delimiter, cents_separator)
131
+ assert_equal true, FormattedMoney.only_zeros?('0.00', delimiter, cents_separator)
132
+ assert_equal true, FormattedMoney.only_zeros?('0.000,0', delimiter, cents_separator)
133
+ assert_equal true, FormattedMoney.only_zeros?(',0', delimiter, cents_separator)
134
+ assert_equal false, FormattedMoney.only_zeros?('01', delimiter, cents_separator)
135
+ assert_equal false, FormattedMoney.only_zeros?('0|0', delimiter, cents_separator)
136
+ assert_equal false, FormattedMoney.only_zeros?('000500', delimiter, cents_separator)
137
+ end
138
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: formatted-money
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Josef Strzibny
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-19 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: ! " For all Rubyist that use Integer for storing money
15
+ values as cents.\n This is a dead simple gem for converting money
16
+ from user inputs to Integer values\n for storing and fast precise
17
+ calculations (and back). Does everything you need\n and nothing
18
+ else. Well tested.\n"
19
+ email: strzibny@strzibny.name
20
+ executables: []
21
+ extensions: []
22
+ extra_rdoc_files: []
23
+ files:
24
+ - LICENSE
25
+ - Rakefile
26
+ - README.md
27
+ - doc/FormattedMoney.html
28
+ - doc/FormattedMoney/American.html
29
+ - doc/FormattedMoney/European.html
30
+ - doc/FormattedMoney/NumberNotInFloatFormat.html
31
+ - doc/FormattedMoney/NumberNotInIntegerFormat.html
32
+ - doc/_index.html
33
+ - doc/class_list.html
34
+ - doc/css/common.css
35
+ - doc/css/full_list.css
36
+ - doc/css/style.css
37
+ - doc/file.README.html
38
+ - doc/file_list.html
39
+ - doc/frames.html
40
+ - doc/index.html
41
+ - doc/js/app.js
42
+ - doc/js/full_list.js
43
+ - doc/js/jquery.js
44
+ - doc/method_list.html
45
+ - doc/top-level-namespace.html
46
+ - lib/formatted-money.rb
47
+ - test/test_all.rb
48
+ homepage: http://github.com/strzibny/formatted-money
49
+ licenses: []
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: 1.9.0
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project:
68
+ rubygems_version: 1.8.6
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: A dead simple library for converting human-readable money inputs to Integer
72
+ and back
73
+ test_files: []