fiscalizer 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +209 -0
- data/Rakefile +9 -0
- data/doc/FiskalizacijaSchema.xsd +780 -0
- data/doc/Tehnicka_specifikacija_za_korisnike_1.2.pdf +0 -0
- data/doc/fiskalizacija_faq_v2.1_objava.pdf +0 -0
- data/example/echo_P12.rb +13 -0
- data/example/echo_public_and_private_keys.rb +16 -0
- data/example/invoice_fiscalization_passing_object.rb +0 -0
- data/example/invoice_fiscalization_with_arguments.rb +44 -0
- data/fiscalizer.gemspec +25 -0
- data/lib/README.md +0 -0
- data/lib/fiscalizer.rb +8 -0
- data/lib/fiscalizer/README.md +9 -0
- data/lib/fiscalizer/communication.rb +296 -0
- data/lib/fiscalizer/echo.rb +11 -0
- data/lib/fiscalizer/fee.rb +20 -0
- data/lib/fiscalizer/fiscalizer.rb +148 -0
- data/lib/fiscalizer/invoice.rb +190 -0
- data/lib/fiscalizer/office.rb +66 -0
- data/lib/fiscalizer/response.rb +124 -0
- data/lib/fiscalizer/tax.rb +47 -0
- data/lib/fiscalizer/version.rb +3 -0
- data/test/test_echo.rb +20 -0
- data/test/test_fee +64 -0
- data/test/test_fiscalizer.rb +166 -0
- data/test/test_fiscalizer_communication.rb +28 -0
- data/test/test_invoice.rb +11 -0
- data/test/test_office.rb +11 -0
- data/test/test_tax.rb +89 -0
- metadata +139 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
class Fiscalizer
|
2
|
+
class Tax
|
3
|
+
|
4
|
+
attr_accessor :base, :rate, :name
|
5
|
+
|
6
|
+
def initialize base: 0.0, rate: 0.0, name: ""
|
7
|
+
@base = base
|
8
|
+
@rate = rate
|
9
|
+
@name = name
|
10
|
+
end # initialize
|
11
|
+
|
12
|
+
# Math
|
13
|
+
def base
|
14
|
+
return @base.to_f.round(2)
|
15
|
+
end # base
|
16
|
+
|
17
|
+
def rate
|
18
|
+
return @rate.to_f.round(2)
|
19
|
+
end # rate
|
20
|
+
|
21
|
+
def total
|
22
|
+
return (base * (rate / 100.0) ).round(2)
|
23
|
+
end # total
|
24
|
+
|
25
|
+
def summed
|
26
|
+
return (base + total).round(2)
|
27
|
+
end # summed
|
28
|
+
|
29
|
+
# Convert to string
|
30
|
+
def base_str
|
31
|
+
return ("%15.2f" % base).strip
|
32
|
+
end # base_str
|
33
|
+
|
34
|
+
def rate_str
|
35
|
+
return ("%3.2f" % rate).strip
|
36
|
+
end # rate_str
|
37
|
+
|
38
|
+
def total_str
|
39
|
+
return ("%15.2f" % total).strip
|
40
|
+
end # total_str
|
41
|
+
|
42
|
+
def summed_str
|
43
|
+
return ("%15.2f" % summed ).strip
|
44
|
+
end # summed_str
|
45
|
+
|
46
|
+
end # Tax
|
47
|
+
end # Fiscalizer
|
data/test/test_echo.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "fiscalizer"
|
3
|
+
|
4
|
+
class EchoTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_initialization
|
7
|
+
# Manual build
|
8
|
+
echo = Fiscalizer::Echo.new
|
9
|
+
echo.text = "This is a test of text assignment"
|
10
|
+
# Test
|
11
|
+
assert_equal "This is a test of text assignment", echo.text, "Text was not assigned"
|
12
|
+
|
13
|
+
# Automatic test
|
14
|
+
echo = nil
|
15
|
+
echo = Fiscalizer::Echo.new text: "This is a test of text assignment"
|
16
|
+
# Test
|
17
|
+
assert_equal "This is a test of text assignment", echo.text, "Text was not automatically assigned"
|
18
|
+
end # test_initialization
|
19
|
+
|
20
|
+
end # EchoTest
|
data/test/test_fee
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "fiscalizer"
|
3
|
+
|
4
|
+
class FeeTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_initialization
|
7
|
+
# Manual build
|
8
|
+
fee = Fiscalizer::Fee.new
|
9
|
+
fee.name = "My cool new fee"
|
10
|
+
fee.value = 234.16
|
11
|
+
assert_equal "My cool new fee", fee.name, "Fee's name not set"
|
12
|
+
assert_equal 234.16, fee.value, "Fee's value not set"
|
13
|
+
|
14
|
+
# Automatic build
|
15
|
+
fee = Fiscalizer::Fee.new name: "My cool new fee", value: 234.16
|
16
|
+
assert_equal "My cool new fee", fee.name, "Fee's name not set"
|
17
|
+
assert_equal 234.16, fee.value, "Fee's value not set"
|
18
|
+
end # test_initialization
|
19
|
+
|
20
|
+
def test_math
|
21
|
+
# Whole number
|
22
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 100
|
23
|
+
assert_equal 100, fee.value, "Whole number is wrong"
|
24
|
+
|
25
|
+
# Decimal number
|
26
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.67
|
27
|
+
assert_equal 13.67, fee.value, "Decimal number is wrong"
|
28
|
+
|
29
|
+
# Decimal whole number
|
30
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.00
|
31
|
+
assert_equal 13.00, fee.value, "Decimal whole number is wrong"
|
32
|
+
|
33
|
+
# Rounding down
|
34
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.674961205
|
35
|
+
assert_equal 13.67, fee.value, "Rounding down is wrong"
|
36
|
+
|
37
|
+
# Rounding up
|
38
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.675961205
|
39
|
+
assert_equal 13.68, fee.value, "Rounding down is wrong"
|
40
|
+
end # test_math
|
41
|
+
|
42
|
+
def test_string
|
43
|
+
# Whole number
|
44
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 100
|
45
|
+
assert_equal "100.00", fee.value_str, "Whole number string is wrong"
|
46
|
+
|
47
|
+
# Decimal number
|
48
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.67
|
49
|
+
assert_equal "13.67", fee.value_str, "Decimal number string is wrong"
|
50
|
+
|
51
|
+
# Decimal whole number
|
52
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.00
|
53
|
+
assert_equal "13.00", fee.value_str, "Decimal whole number string is wrong"
|
54
|
+
|
55
|
+
# Rounding down
|
56
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.674961205
|
57
|
+
assert_equal "13.67", fee.value_str, "Rounding down string is wrong"
|
58
|
+
|
59
|
+
# Rounding up
|
60
|
+
fee = Fiscalizer::Fee.new name: "Test", value: 13.675961205
|
61
|
+
assert_equal "13.68", fee.value_str, "Rounding down string is wrong"
|
62
|
+
end # test_string
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "fiscalizer"
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'openssl'
|
5
|
+
|
6
|
+
class FiscalizerTest < Test::Unit::TestCase
|
7
|
+
# Configure
|
8
|
+
KEY_PUBLIC_PATH = "/path/to/fiskal1.cert"
|
9
|
+
KEY_PRIVATE_PATH = "/path/to/privateKey.key"
|
10
|
+
CERTIFICATE_PATH = "/path/to/democacert.pem"
|
11
|
+
CERTIFICATE_P12_PATH = "/path/to/fiskal1.pfx"
|
12
|
+
URL_FISKAL = "https://cistest.apis-it.hr:8449/FiskalizacijaServiceTest"
|
13
|
+
CER_ISSUED = "OU=DEMO,O=FINA,C=HR"
|
14
|
+
PASSWORD = "12345678"
|
15
|
+
# Use P12
|
16
|
+
EXPORTED_KEYS = false
|
17
|
+
# Test specific info
|
18
|
+
UUID = "ca996cc7-fcc3-4c50-961b-40c8b875a5e8"
|
19
|
+
ECHO = "This is a simple test..."
|
20
|
+
# Personal information
|
21
|
+
PIN = "00000000000"
|
22
|
+
PIN_OPERATOR = "00000000000"
|
23
|
+
|
24
|
+
def test_initialization
|
25
|
+
# Manual build
|
26
|
+
fiscal = Fiscalizer.new
|
27
|
+
|
28
|
+
# Populate
|
29
|
+
fiscal.url = "www.somewhere.com"
|
30
|
+
fiscal.key_public_path = "path/to/my/cert.pem"
|
31
|
+
fiscal.key_private_path = "path/to/my/cert.cer"
|
32
|
+
|
33
|
+
# Test
|
34
|
+
assert_equal "www.somewhere.com", fiscal.url, "Manual URL assignment"
|
35
|
+
assert_equal "path/to/my/cert.pem", fiscal.key_public_path, "Manual public certificate location assignment"
|
36
|
+
assert_equal "path/to/my/cert.cer", fiscal.key_private_path, "Manual private certificate location assignment"
|
37
|
+
|
38
|
+
# Automatic Build
|
39
|
+
fiscal = nil
|
40
|
+
fiscal = Fiscalizer.new url: "www.somewhere.com",
|
41
|
+
key_public_path: "path/to/my/cert.pem",
|
42
|
+
key_private_path: "path/to/my/cert.cer"
|
43
|
+
|
44
|
+
# Test
|
45
|
+
assert_equal "www.somewhere.com", fiscal.url, "Automatic URL assignment"
|
46
|
+
assert_equal "path/to/my/cert.pem", fiscal.key_public_path, "Automatic public certificate location assignment"
|
47
|
+
assert_equal "path/to/my/cert.cer", fiscal.key_private_path, "Automatic private certificate location assignment"
|
48
|
+
end # fiscal_ruby_test
|
49
|
+
|
50
|
+
def test_echo
|
51
|
+
fiscal = Fiscalizer.new url: URL_FISKAL,
|
52
|
+
key_public_path: KEY_PUBLIC_PATH,
|
53
|
+
key_private_path: KEY_PRIVATE_PATH,
|
54
|
+
certificate_path: CERTIFICATE_PATH,
|
55
|
+
certificate_issued_by: CER_ISSUED
|
56
|
+
echo = fiscal.echo text: ECHO
|
57
|
+
assert_equal ECHO, echo.response, "Echo response message does not match sent message"
|
58
|
+
assert echo.echo?, "Automatic echo check failed"
|
59
|
+
end # test_echo
|
60
|
+
|
61
|
+
def test_office
|
62
|
+
# Configuration
|
63
|
+
use_exported_keys = true
|
64
|
+
# -- Here Be Dragons --
|
65
|
+
fiscal = nil
|
66
|
+
if use_exported_keys
|
67
|
+
fiscal = Fiscalizer.new url: URL_FISKAL,
|
68
|
+
key_public_path: KEY_PUBLIC_PATH,
|
69
|
+
key_private_path: KEY_PRIVATE_PATH,
|
70
|
+
certificate_path: CERTIFICATE_PATH,
|
71
|
+
certificate_issued_by: CER_ISSUED
|
72
|
+
else
|
73
|
+
fiscal = Fiscalizer.new url: URL_FISKAL,
|
74
|
+
certificate_path: CERTIFICATE_PATH,
|
75
|
+
certificate_p12_path: CERTIFICATE_P12_PATH,
|
76
|
+
certificate_issued_by: CER_ISSUED,
|
77
|
+
password: PASSWORD
|
78
|
+
end
|
79
|
+
|
80
|
+
assert fiscal!=nil, "Failed to initialize"
|
81
|
+
# Generate invoice
|
82
|
+
office = fiscal.office uuid: UUID,
|
83
|
+
time_sent: Time.now,
|
84
|
+
pin: PIN,
|
85
|
+
office_label: "Poslovnica1",
|
86
|
+
adress_street_name: "Somewhere",
|
87
|
+
adress_house_num: "42",
|
88
|
+
adress_house_num_addendum: "AD",
|
89
|
+
adress_post_num: "10000",
|
90
|
+
adress_settlement: "Block 25-C",
|
91
|
+
adress_township: "Vogsphere",
|
92
|
+
adress_other: nil,
|
93
|
+
office_time: "Pon-Pet: 8:00-16:00",
|
94
|
+
take_effect_date: Time.now + 3600 * 24 * 7,
|
95
|
+
closure_mark: nil,
|
96
|
+
specific_purpose: nil
|
97
|
+
assert !office.errors?, "Returned an error"
|
98
|
+
assert office.uuid != nil, "'UUID' was not returned"
|
99
|
+
assert office.processed_at != nil, "'Processed at' was not returned"
|
100
|
+
end # test_office
|
101
|
+
|
102
|
+
def test_invoice
|
103
|
+
use_exported_keys = true
|
104
|
+
# -- Here Be Dragons --
|
105
|
+
fiscal = nil
|
106
|
+
if use_exported_keys
|
107
|
+
fiscal = Fiscalizer.new url: URL_FISKAL,
|
108
|
+
key_public_path: KEY_PUBLIC_PATH,
|
109
|
+
key_private_path: KEY_PRIVATE_PATH,
|
110
|
+
certificate_path: CERTIFICATE_PATH,
|
111
|
+
certificate_issued_by: CER_ISSUED
|
112
|
+
else
|
113
|
+
fiscal = Fiscalizer.new url: URL_FISKAL,
|
114
|
+
certificate_path: CERTIFICATE_PATH,
|
115
|
+
certificate_p12_path: CERTIFICATE_P12_PATH,
|
116
|
+
certificate_issued_by: CER_ISSUED,
|
117
|
+
password: PASSWORD
|
118
|
+
end
|
119
|
+
# Generate taxes
|
120
|
+
taxes_vat = []
|
121
|
+
taxes_spending = []
|
122
|
+
taxes_other = []
|
123
|
+
(0..5).each do |i|
|
124
|
+
tax = Fiscalizer::Tax.new
|
125
|
+
tax.base = rand(10000 * 100).to_f / 100.0
|
126
|
+
tax.rate = rand(100 * 100).to_f / 100.0
|
127
|
+
taxes_vat << tax
|
128
|
+
end
|
129
|
+
(0..5).each do |i|
|
130
|
+
tax = Fiscalizer::Tax.new
|
131
|
+
tax.base = rand(10000 * 100).to_f / 100.0
|
132
|
+
tax.rate = rand(100 * 100).to_f / 100.0
|
133
|
+
taxes_spending << tax
|
134
|
+
end
|
135
|
+
(0..5).each do |i|
|
136
|
+
tax = Fiscalizer::Tax.new
|
137
|
+
tax.base = rand(10000 * 100).to_f / 100.0
|
138
|
+
tax.rate = rand(100 * 100).to_f / 100.0
|
139
|
+
tax.name = "My Test Tax #{i}"
|
140
|
+
taxes_other << tax
|
141
|
+
end
|
142
|
+
# Generate invoice
|
143
|
+
invoice = fiscal.invoice uuid: UUID,
|
144
|
+
time_sent: Time.now,
|
145
|
+
pin: PIN,
|
146
|
+
in_vat_system: true,
|
147
|
+
time_issued: Time.now - 3600,
|
148
|
+
consistance_mark: "P",
|
149
|
+
issued_number: "1",
|
150
|
+
issued_office: "Pm2",
|
151
|
+
issued_machine: "3",
|
152
|
+
tax_vat: taxes_vat,
|
153
|
+
tax_spending: taxes_spending,
|
154
|
+
tax_other: taxes_other,
|
155
|
+
payment_method: "g",
|
156
|
+
operator_pin: PIN_OPERATOR,
|
157
|
+
subsequent_delivery: false,
|
158
|
+
value_non_taxable: 200.0
|
159
|
+
|
160
|
+
assert !invoice.errors?, "Returned an error"
|
161
|
+
assert invoice.uuid != nil, "'UUID' was not returned"
|
162
|
+
assert invoice.processed_at != nil, "'Processed at' was not returned"
|
163
|
+
assert invoice.unique_identifier != nil, "Uniqe Identifier (JIR) was not returned"
|
164
|
+
end # test_invoice
|
165
|
+
|
166
|
+
end # FiscalizerRubyTest
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "fiscalizer"
|
3
|
+
|
4
|
+
class CommunicationTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_initialization
|
7
|
+
# Manual build
|
8
|
+
comm = Fiscalizer::Communication.new
|
9
|
+
assert comm, "Failed to initialize"
|
10
|
+
|
11
|
+
# Default value
|
12
|
+
assert_equal "http://www.apis-it.hr/fin/2012/types/f73", comm.tns, "Tns was not assigned by default"
|
13
|
+
assert_equal "http://www.apis-it.hr/fin/2012/types/f73 FiskalizacijaSchema.xsd", comm.schemaLocation, "Schema Location was not assigned by default"
|
14
|
+
|
15
|
+
# Manual assignment
|
16
|
+
comm.tns = "test.tns.hr"
|
17
|
+
comm.schemaLocation = "test.tns.hr/Schema.xml"
|
18
|
+
assert_equal "test.tns.hr", comm.tns, "Tns was not assigned"
|
19
|
+
assert_equal "test.tns.hr/Schema.xml", comm.schemaLocation, "Schema Location was not assigned"
|
20
|
+
|
21
|
+
# Automatic assignment
|
22
|
+
comm = nil
|
23
|
+
comm = Fiscalizer::Communication.new tns: "test.tns.hr", schemaLocation: "test.tns.hr/Schema.xml"
|
24
|
+
assert_equal "test.tns.hr", comm.tns, "Tns was not assigned"
|
25
|
+
assert_equal "test.tns.hr/Schema.xml", comm.schemaLocation, "Schema Location was not assigned"
|
26
|
+
end # test_initialization
|
27
|
+
|
28
|
+
end
|
data/test/test_office.rb
ADDED
data/test/test_tax.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "fiscalizer"
|
3
|
+
|
4
|
+
class TaxTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_initialization
|
7
|
+
# Manual build
|
8
|
+
tax = Fiscalizer::Tax.new
|
9
|
+
assert tax, "Failed to initialize"
|
10
|
+
tax.base = 100
|
11
|
+
tax.rate = 25
|
12
|
+
tax.name = "My test tax"
|
13
|
+
assert_equal 100, tax.base, "Wrong base assigned"
|
14
|
+
assert_equal 25, tax.rate, "Wrong rate assigned"
|
15
|
+
assert_equal "My test tax", tax.name, "Wrong name assigned"
|
16
|
+
|
17
|
+
tax = nil
|
18
|
+
tax = Fiscalizer::Tax.new base: 100, rate: 25, name: "My test tax"
|
19
|
+
assert tax, "Failed to initialize"
|
20
|
+
assert_equal 100, tax.base, "Automatically assigned wrong base"
|
21
|
+
assert_equal 25, tax.rate, "Automatically assigned wrong rate"
|
22
|
+
assert_equal "My test tax", tax.name, "Automatically assigned worng name"
|
23
|
+
end # test_initialization
|
24
|
+
|
25
|
+
def test_rounding
|
26
|
+
# Whole numbers
|
27
|
+
tax = Fiscalizer::Tax.new base: 100, rate: 1
|
28
|
+
assert_equal 100, tax.base, "Whole number base is wrong" # 100 -> 100
|
29
|
+
assert_equal 1, tax.rate, "Whole number rate is wrong" # 1 -> 1 -> 0.01
|
30
|
+
assert_equal 1, tax.total, "Whole number total is wrong" # 100 * 0.01 = 1
|
31
|
+
assert_equal 101, tax.summed, "Whole number summed is wrong" # 100 + 1 = 101
|
32
|
+
|
33
|
+
# Decimal numbers
|
34
|
+
tax = Fiscalizer::Tax.new base: 1.5, rate: 10.5
|
35
|
+
assert_equal 1.50, tax.base, "Decimal number base is wrong" # 1.5 -> 1.5
|
36
|
+
assert_equal 10.5, tax.rate, "Decimal number rate is wrong" # 10.5 -> 10.5 -> 0.105
|
37
|
+
assert_equal 0.16, tax.total, "Decimal number total is wrong" # 1.5 * 0.105 = 0.1575
|
38
|
+
assert_equal 1.66, tax.summed, "Decimal number summed is wrong" # 1.5 + 0.16 = 1.66
|
39
|
+
|
40
|
+
# Whole decimal numbers
|
41
|
+
tax = Fiscalizer::Tax.new base: 100.0, rate: 1.0
|
42
|
+
assert_equal 100.0, tax.base, "Whole decimal number base is wrong" # 100 -> 100
|
43
|
+
assert_equal 1.000, tax.rate, "Whole decimal number rate is wrong" # 1 -> 1 -> 0.01
|
44
|
+
assert_equal 1.000, tax.total, "Whole decimal number total is wrong" # 100 * 0.01 = 1
|
45
|
+
assert_equal 101.0, tax.summed, "Whole decimal number summed is wrong" # 100 + 1 = 101
|
46
|
+
|
47
|
+
# Round down
|
48
|
+
tax = Fiscalizer::Tax.new base: 13.111992, rate: 10.10499999999
|
49
|
+
assert_equal 13.11, tax.base, "Round down number base is wrong" # 13.111992 -> 13.11
|
50
|
+
assert_equal 10.10, tax.rate, "Round down number rate is wrong" # 10.10499999999 -> 10.10 -> 0.1010
|
51
|
+
assert_equal 1.320, tax.total, "Round down number total is wrong" # 13.11 * 0.1010 = 1.32411
|
52
|
+
assert_equal 14.43, tax.summed, "Round down number summed is wrong" # 13.11 + 1.32 = 14.43
|
53
|
+
|
54
|
+
# Round up
|
55
|
+
tax = Fiscalizer::Tax.new base: 13.2450000001, rate: 25.9989541
|
56
|
+
assert_equal 13.25, tax.base, "Round up number base is wrong" # 13.2450000001 -> 13.25
|
57
|
+
assert_equal 26.00, tax.rate, "Round up number rate is wrong" # 25.9989541 -> 26 -> 0.26
|
58
|
+
assert_equal 3.450, tax.total, "Round up number total is wrong" # 13.25 * 0.26 = 3.445
|
59
|
+
assert_equal 16.70, tax.summed, "Round up number summed is wrong" # 13.25 + 3.45 = 16.7
|
60
|
+
end # test_rounding
|
61
|
+
|
62
|
+
def test_string_conversion
|
63
|
+
# Whole numbers
|
64
|
+
tax = Fiscalizer::Tax.new base: 100, rate: 1
|
65
|
+
assert_equal "100.00", tax.base_str, "Whole number base is wrong"
|
66
|
+
assert_equal "1.00", tax.rate_str, "Whole number rate is wrong"
|
67
|
+
assert_equal "1.00", tax.total_str, "Whole number total is wrong"
|
68
|
+
assert_equal "101.00", tax.summed_str, "Whole number summed is wrong"
|
69
|
+
|
70
|
+
# Decimal numbers
|
71
|
+
tax = Fiscalizer::Tax.new base: 1.5, rate: 10.5
|
72
|
+
assert_equal "1.50", tax.base_str, "Decimal number base is wrong"
|
73
|
+
assert_equal "10.50", tax.rate_str, "Decimal number rate is wrong"
|
74
|
+
assert_equal "0.16", tax.total_str, "Decimal number total is wrong"
|
75
|
+
assert_equal "1.66", tax.summed_str, "Decimal number summed is wrong"
|
76
|
+
|
77
|
+
# Whole decimal numbers
|
78
|
+
tax = Fiscalizer::Tax.new base: 100.000, rate: 1.000
|
79
|
+
assert_equal "100.00", tax.base_str, "Whole decimal number base is wrong"
|
80
|
+
assert_equal "1.00", tax.rate_str, "Whole decimal number rate is wrong"
|
81
|
+
assert_equal "1.00", tax.total_str, "Whole decimal number total is wrong"
|
82
|
+
assert_equal "101.00", tax.summed_str, "Whole decimal number summed is wrong"
|
83
|
+
end # test_string_conversion
|
84
|
+
|
85
|
+
def test_math
|
86
|
+
|
87
|
+
end # test_math
|
88
|
+
|
89
|
+
end
|