npn47_iso8583 0.1.5.a

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.
@@ -0,0 +1,163 @@
1
+ require 'lib/iso8583'
2
+ require 'lib/iso8583/berlin'
3
+ require 'test/unit'
4
+
5
+ include ISO8583
6
+
7
+ class MessageTest < Test::Unit::TestCase
8
+ def test_create_empty
9
+ mes = BerlinMessage.new
10
+ mes.mti = 1100
11
+ pan = 474747474747
12
+ mes.pan = pan
13
+ assert_equal pan, mes.pan
14
+ assert_equal pan, mes[2]
15
+ assert_equal pan, mes["Primary Account Number (PAN)"]
16
+ assert_equal "1100@\000\000\000\000\000\000\00012474747474747", mes.to_b
17
+
18
+ mes = BerlinMessage.new
19
+ mes.mti = "Authorization Request Response Issuer Gateway"
20
+ pan = 474747474747
21
+ mes[2] = pan
22
+ assert_equal pan, mes.pan
23
+ assert_equal pan, mes[2]
24
+ assert_equal pan, mes["Primary Account Number (PAN)"]
25
+ assert_equal "1110@\000\000\000\000\000\000\00012474747474747", mes.to_b
26
+
27
+ mes = BerlinMessage.new
28
+ mes.mti = 1420
29
+ pan = 474747474747
30
+ mes["Primary Account Number (PAN)"] = pan
31
+ assert_equal pan, mes.pan
32
+ assert_equal pan, mes[2]
33
+ assert_equal pan, mes["Primary Account Number (PAN)"]
34
+ assert_equal "1420@\000\000\000\000\000\000\00012474747474747", mes.to_b
35
+ end
36
+
37
+ def test_parse
38
+ pan = 474747474747
39
+
40
+ assert_raises(ISO8583Exception) {
41
+ mes = BerlinMessage.parse "@\000\000\000\000\000\000\00012474747474747"
42
+ }
43
+ mes = BerlinMessage.parse "1430@\000\000\000\000\000\000\00012474747474747"
44
+ assert_equal pan, mes.pan
45
+ assert_equal 1430, mes.mti
46
+ end
47
+
48
+ def test_to_s
49
+ mes = BerlinMessage.new
50
+ mes.mti = "Network Management Request Response Issuer Gateway or Acquirer Gateway"
51
+ mes[2] = 12341234
52
+ mes[3] = 1111
53
+ mes[4] = 100
54
+ mes[6] = 101
55
+ mes[7] = "0808120000"
56
+ mes[10] = 100
57
+ mes[11] = 0
58
+ mes[12] = "740808120000"
59
+ mes[14] = "1010"
60
+ mes[22] = "POSDATACODE"
61
+ mes[23] = 0
62
+ mes[24] = 1
63
+ mes[25] = 90
64
+ mes[26] = 4444
65
+ mes[30] = 150
66
+ mes[32] = 321321
67
+ mes[35] = ";123123123=123?5"
68
+ mes[37] = "123 123"
69
+ mes[38] = "90"
70
+ mes[39] = 90
71
+ mes[41] = "TermLoc!"
72
+ mes[42] = "ID Code!"
73
+ mes[43] = "Card Acceptor Name Location"
74
+ mes[49] = "840"
75
+ mes[51] = 978
76
+ mes[52] = '\x00\x01\x02\x03'
77
+ mes[53] = '\x07\x06\x05\x04'
78
+ mes[54] = "No additional amount"
79
+ mes[55] = '\x07\x06\x05\x04'
80
+ mes[56] = 88888888888
81
+ mes[59] = "I'm you're private data, data for money..."
82
+ mes[64] = "\xF0\xF0\xF0\xF0"
83
+
84
+ expected = <<-END
85
+ MTI:1814 (Network Management Request Response Issuer Gateway or Acquirer Gateway)
86
+
87
+ 002 Primary Account Number (PAN) : 12341234
88
+ 003 Processing Code : 1111
89
+ 004 Amount (Transaction) : 100
90
+ 006 Amount, Cardholder Billing : 101
91
+ 007 Date and Time, Transmission : 0808120000
92
+ 010 Conversion Rate, Cardholder Billing : 100
93
+ 011 System Trace Audit Number (STAN) : 0
94
+ 012 Date and Time, Local Transaction : 740808120000
95
+ 014 Date, Expiration : 1010
96
+ 022 POS Data Code : POSDATACODE
97
+ 023 Card Sequence Number : 0
98
+ 024 Function Code : 1
99
+ 025 Message Reason Code : 90
100
+ 026 Card Acceptor Business Code : 4444
101
+ 030 Amounts, Original : 150
102
+ 032 Acquiring Institution Identification Code : 321321
103
+ 035 Track 2 Data : ;123123123=123?5
104
+ 037 Retrieval Reference Number : 123 123
105
+ 038 Approval Code : 90
106
+ 039 Action Code : 90
107
+ 041 Card Acceptor Terminal Identification : TermLoc!
108
+ 042 Card Acceptor Identification Code : ID Code!
109
+ 043 Card Acceptor Name/Location : Card Acceptor Name Location
110
+ 049 Currency Code, Transaction : 840
111
+ 051 Currency Code, Cardholder Billing : 978
112
+ 052 Personal Identification Number (PIN) Data : \\x00\\x01\\x02\\x03
113
+ 053 Security Related Control Information : \\x07\\x06\\x05\\x04
114
+ 054 Amounts, Additional : No additional amount
115
+ 055 Integrated Circuit Card (ICC) System Related Data : \\x07\\x06\\x05\\x04
116
+ 056 Original Data Elements : 88888888888
117
+ 059 Additional Data - Private : I'm you're private data, data for money...
118
+ 064 Message Authentication Code (MAC) Field : \360\360\360\360
119
+ END
120
+ assert_equal expected, mes.to_s
121
+ end
122
+
123
+ def test_round_trip
124
+ mes = BerlinMessage.new
125
+ mes.mti = "Network Management Request Response Issuer Gateway or Acquirer Gateway"
126
+ mes[2] = 12341234
127
+ mes[3] = 1111
128
+ mes[4] = 100
129
+ mes[6] = 101
130
+ mes[7] = "0808120000"
131
+ mes[10] = 100
132
+ mes[11] = 0
133
+ mes[12] = "740808120000"
134
+ mes[14] = "1010"
135
+ mes[22] = "POSDATACODE"
136
+ mes[23] = 0
137
+ mes[24] = 1
138
+ mes[25] = 90
139
+ mes[26] = 4444
140
+ mes[30] = 150
141
+ mes[32] = 321321
142
+ mes[35] = ";123123123=123?5"
143
+ mes[37] = "123 123"
144
+ mes[38] = "90"
145
+ mes[39] = 90
146
+ mes[41] = "TermLoc!"
147
+ mes[42] = "ID Code!"
148
+ mes[43] = "Card Acceptor Name Location"
149
+ mes[49] = "840"
150
+ mes[51] = 978
151
+ mes[52] = "\x00\x01\x02\x03"
152
+ mes[53] = "\x07\x06\x05\x04"
153
+ mes[54] = "No additional amount"
154
+ mes[55] = '\x07\x06\x05\x04'
155
+ mes[56] = 88888888888
156
+ mes[59] = "I'm you're private data, data for money..."
157
+ mes[64] = "\xF0\xF0\xF0\xF0"
158
+
159
+ bytes = mes.to_b
160
+ mes2 = BerlinMessage.parse(mes.to_b)
161
+ assert_equal(mes.to_b, mes2.to_b)
162
+ end
163
+ end
@@ -0,0 +1,124 @@
1
+ require 'test/unit'
2
+ require 'lib/iso8583'
3
+
4
+ include ISO8583
5
+
6
+ class FieldTest < Test::Unit::TestCase
7
+ def test_hhmmssCodec
8
+ dt = HhmmssCodec.decode "121212"
9
+ assert_equal DateTime, dt.class
10
+ assert_equal 12, dt.hour
11
+ assert_equal 12, dt.min
12
+ assert_equal 12, dt.sec
13
+ assert_equal DateTime, dt.class
14
+
15
+ assert_raise(ISO8583Exception) {
16
+ dt = HhmmssCodec.decode "261212"
17
+ }
18
+ assert_raise(ISO8583Exception) {
19
+ dt = HhmmssCodec.encode "121261"
20
+ }
21
+ t = Time.new(2002, 10, 31, 2, 2, 2, "+02:00")
22
+ assert_equal "020202", HhmmssCodec.encode(t)
23
+
24
+ end
25
+ def test_MMDDhhmmssCodec
26
+ dt = MMDDhhmmssCodec.decode "1212121212"
27
+ assert_equal DateTime, dt.class
28
+ assert_equal 12, dt.month
29
+ assert_equal 12, dt.day
30
+ assert_equal 12, dt.hour
31
+ assert_equal 12, dt.min
32
+ assert_equal 12, dt.sec
33
+ assert_equal DateTime, dt.class
34
+
35
+ assert_raise(ISO8583Exception) {
36
+ dt = MMDDhhmmssCodec.decode "1312121212"
37
+ }
38
+
39
+ assert_raise(ISO8583Exception) {
40
+ dt = MMDDhhmmssCodec.encode "1312121212"
41
+ }
42
+
43
+ assert_equal "1212121212", MMDDhhmmssCodec.encode("1212121212")
44
+ end
45
+
46
+ def test_YYMMDDhhmmssCodec
47
+ dt = YYMMDDhhmmssCodec.decode "081212121212"
48
+ assert_equal DateTime, dt.class
49
+ assert_equal 2008, dt.year
50
+ assert_equal 12, dt.month
51
+ assert_equal 12, dt.day
52
+ assert_equal 12, dt.hour
53
+ assert_equal 12, dt.min
54
+ assert_equal 12, dt.sec
55
+
56
+ assert_raise(ISO8583Exception) {
57
+ dt = YYMMDDhhmmssCodec.decode "091312121212"
58
+ }
59
+
60
+ assert_raise(ISO8583Exception) {
61
+ dt = YYMMDDhhmmssCodec.encode "091312121212"
62
+ }
63
+
64
+ assert_equal "091212121212", YYMMDDhhmmssCodec.encode("091212121212")
65
+ end
66
+
67
+ def test_YYMMCodec
68
+ dt = YYMMCodec.decode "0812"
69
+ assert_equal DateTime, dt.class
70
+ assert_equal 2008, dt.year
71
+ assert_equal 12, dt.month
72
+
73
+ assert_raise(ISO8583Exception) {
74
+ dt = YYMMCodec.decode "0913"
75
+ }
76
+
77
+ assert_raise(ISO8583Exception) {
78
+ dt = YYMMCodec.encode "0913"
79
+ }
80
+
81
+ assert_equal "0912", YYMMCodec.encode("0912")
82
+ end
83
+
84
+ def test_A_Codec
85
+ assert_raise(ISO8583Exception) {
86
+ dt = A_Codec.encode "!!!"
87
+ }
88
+ assert_equal "bla", AN_Codec.encode("bla")
89
+ assert_equal "bla", AN_Codec.decode("bla")
90
+ end
91
+
92
+ def test_AN_Codec
93
+ assert_raise(ISO8583Exception) {
94
+ dt = AN_Codec.encode "!!!"
95
+ }
96
+ assert_equal "bla", AN_Codec.encode("bla")
97
+ assert_equal "bla", AN_Codec.decode("bla")
98
+ end
99
+
100
+ def test_Track2_Codec
101
+ assert_raise(ISO8583Exception) {
102
+ dt = Track2.encode "!!!"
103
+ }
104
+ assert_raise(ISO8583Exception) {
105
+ dt = Track2.encode ";12312312=123?5"
106
+ }
107
+ assert_equal ";123123123=123?5", Track2.encode(";123123123=123?5")
108
+ assert_equal ";123123123=123?5", Track2.decode(";123123123=123?5")
109
+ end
110
+
111
+ def test_packed_codec
112
+ assert_equal "\x12", Packed_Number.encode(12)
113
+ assert_equal "\x12", Packed_Number.encode("12")
114
+ assert_equal "\x02", Packed_Number.encode("2")
115
+ assert_equal "\x02", Packed_Number.encode(2)
116
+ assert_equal "\x02\x55", Packed_Number.encode(0xff)
117
+ assert_raise(ISO8583Exception) {
118
+ dt = Packed_Number.encode ";12312312=123?5"
119
+ }
120
+ assert_raise(ISO8583Exception) {
121
+ dt = Packed_Number.encode "F"
122
+ }
123
+ end
124
+ end
@@ -0,0 +1,246 @@
1
+ require 'test/unit'
2
+ require 'lib/iso8583'
3
+
4
+ include ISO8583
5
+
6
+ class FieldTest < Test::Unit::TestCase
7
+ def test_LLL
8
+ value, rest = LLL.parse "123456"
9
+ assert_equal 123, value
10
+ assert_equal "456", rest
11
+
12
+ assert_raise(ISO8583ParseException) {
13
+ l,rest = LLL.parse "12"
14
+ }
15
+
16
+ enc = LLL.encode 123
17
+ assert_equal "\x31\x32\x33", enc
18
+
19
+ enc = LLL.encode "123"
20
+ assert_equal "\x31\x32\x33", enc
21
+
22
+ enc = LLL.encode 12
23
+ assert_equal "\x30\x31\x32", enc
24
+
25
+ #enc = LLL.encode "012"
26
+ #assert_equal "\x30\x31\x32", enc
27
+
28
+
29
+ assert_raise(ISO8583Exception) {
30
+ enc = LLL.encode 1234
31
+ }
32
+
33
+ assert_raise(ISO8583Exception) {
34
+ enc = LLL.encode "1234"
35
+ }
36
+ end
37
+
38
+ def test_LL_BCD
39
+ value, rest = LL_BCD.parse "\x123456"
40
+ assert_equal 12, value
41
+ assert_equal "3456", rest
42
+ end
43
+
44
+ def test_LLVAR_AN
45
+ value, rest = LLVAR_AN.parse "03123ABC"
46
+ assert_equal "123", value
47
+ assert_equal "ABC", rest
48
+
49
+ value, rest = LLLVAR_AN.parse "006123ABC"
50
+ assert_equal "123ABC", value
51
+ assert_equal "", rest
52
+ assert_raise(ISO8583ParseException) {
53
+ l,rest = LLLVAR_AN.parse "12"
54
+ }
55
+ assert_raise(ISO8583ParseException) {
56
+ l,rest = LLVAR_AN.parse "12123"
57
+ }
58
+
59
+ enc = LLVAR_AN.encode "123A"
60
+ assert_equal "04123A", enc
61
+
62
+ enc = LLVAR_AN.encode "123ABC123ABC"
63
+ assert_equal "12123ABC123ABC", enc
64
+
65
+ assert_raise(ISO8583Exception) {
66
+ enc = LLVAR_AN.encode "1234 ABCD"
67
+ }
68
+
69
+ enc = LLLVAR_AN.encode "123ABC123ABC"
70
+ assert_equal "012123ABC123ABC", enc
71
+
72
+ assert_raise(ISO8583Exception) {
73
+ enc = LLLVAR_AN.encode "1234 ABCD"
74
+ }
75
+ end
76
+
77
+ def test_LLVAR_N
78
+ value, rest = LLVAR_N.parse "021234"
79
+ assert_equal 12, value
80
+ assert_equal "34", rest
81
+
82
+ value, rest = LLLVAR_N.parse "0041234"
83
+ assert_equal 1234, value
84
+ assert_equal "", rest
85
+ assert_raise(ISO8583ParseException) {
86
+ l,rest = LLLVAR_N.parse "12"
87
+ }
88
+ assert_raise(ISO8583ParseException) {
89
+ l,rest = LLVAR_N.parse "12123"
90
+ }
91
+
92
+ enc = LLVAR_N.encode 1234
93
+ assert_equal "041234", enc
94
+
95
+ enc = LLVAR_N.encode 123412341234
96
+ assert_equal "12123412341234", enc
97
+
98
+ assert_raise(ISO8583Exception) {
99
+ enc = LLVAR_N.encode "1234ABCD"
100
+ }
101
+
102
+ enc = LLLVAR_N.encode "123412341234"
103
+ assert_equal "012123412341234", enc
104
+
105
+ assert_raise(ISO8583Exception) {
106
+ enc = LLLVAR_N.encode "1234ABCD"
107
+ }
108
+ end
109
+
110
+ def test_LLVAR_Z
111
+ value, rest = LLVAR_Z.parse "16;123123123=123?5"+"021234"
112
+ assert_equal ";123123123=123?5", value
113
+ assert_equal "021234", rest
114
+
115
+ value, rest = LLVAR_Z.parse "16;123123123=123?5"
116
+ assert_equal ";123123123=123?5", value
117
+ assert_equal "", rest
118
+ assert_raise(ISO8583ParseException) {
119
+ l,rest = LLVAR_Z.parse "12"
120
+ }
121
+ assert_raise(ISO8583ParseException) {
122
+ l,rest = LLVAR_Z.parse "17;123123123=123?5"
123
+ }
124
+
125
+ enc = LLVAR_Z.encode ";123123123=123?5"
126
+ assert_equal "16;123123123=123?5", enc
127
+
128
+
129
+ assert_raise(ISO8583Exception) {
130
+ enc = LLVAR_Z.encode "1234ABCD"
131
+ }
132
+ end
133
+
134
+ def test_A
135
+ fld = A.dup
136
+ fld.length = 3
137
+ value, rest = fld.parse "abcd"
138
+ assert_equal "abc", value
139
+ assert_equal "d", rest
140
+
141
+ assert_raise(ISO8583ParseException) {
142
+ fld.parse "ab"
143
+ }
144
+
145
+ assert_raise(ISO8583Exception) {
146
+ fld.encode "abcdef"
147
+ }
148
+ end
149
+
150
+ def test_AN
151
+ fld = AN.dup
152
+ fld.length = 3
153
+ value, rest = fld.parse "1234"
154
+ assert_equal "123", value
155
+ assert_equal "4", rest
156
+
157
+ assert_raise(ISO8583ParseException) {
158
+ fld.parse "12"
159
+ }
160
+
161
+ assert_raise(ISO8583Exception) {
162
+ fld.encode "888810"
163
+ }
164
+ end
165
+
166
+ def test_ANP
167
+ fld = ANP.dup
168
+ fld.length = 3
169
+ value, rest = fld.parse "1234"
170
+ assert_equal "123", value
171
+ assert_equal "4", rest
172
+
173
+ assert_raise(ISO8583ParseException) {
174
+ fld.parse "12"
175
+ }
176
+
177
+ assert_equal "10 ", fld.encode("10")
178
+ end
179
+
180
+ def test_ANS
181
+ fld = ANS.dup
182
+ fld.length = 3
183
+ value, rest = fld.parse "1234"
184
+ assert_equal "123", value
185
+ assert_equal "4", rest
186
+
187
+ assert_raise(ISO8583ParseException) {
188
+ fld.parse "12"
189
+ }
190
+
191
+ assert_equal "10 ", fld.encode("10")
192
+ assert_equal ["1!", "a"], fld.parse("1! a")
193
+ end
194
+
195
+ def test_B
196
+ fld = B.dup
197
+ fld.length = 3
198
+ value, rest = fld.parse "\000234"
199
+ assert_equal "\00023", value
200
+ assert_equal "4", rest
201
+
202
+ assert_raise(ISO8583ParseException) {
203
+ fld.parse "12"
204
+ }
205
+
206
+ assert_equal "10\000", fld.encode("10")
207
+ assert_equal ["1! ", "a"], fld.parse("1! a")
208
+ assert_equal ["1!", ""], fld.parse("1!\000")
209
+ end
210
+
211
+ def test_N_BCD
212
+ fld = N_BCD.dup
213
+ fld.length=3
214
+ value, rest = fld.parse "\x01\x23\x45"
215
+ assert_equal 123, value
216
+
217
+ assert_equal "\x01\x23", fld.encode(123)
218
+ assert_equal "\x01\x23", fld.encode("123")
219
+ assert_equal "\x01\x23", fld.encode("0123")
220
+
221
+ assert_raise(ISO8583Exception) {
222
+ fld.encode 12345
223
+ }
224
+
225
+ # There's a bug here. A 4 digit value encodes to 2 digits encoded,
226
+ # which passes the test for length ... This test doesn't pass:
227
+
228
+ #asssert_raise (ISO8583Exception) {
229
+ # fld.encode 1234
230
+ #}
231
+ end
232
+
233
+ def test_YYMMDDhhmmss
234
+ fld = YYMMDDhhmmss
235
+ assert_equal "740808120000", fld.encode("740808120000")
236
+ end
237
+ def test_Hhmmss
238
+ fld = Hhmmss
239
+ assert_equal "123456", fld.encode("123456")
240
+ dt, rest = fld.parse("123456")
241
+ assert_equal 12, dt.hour
242
+ assert_equal 34, dt.min
243
+ assert_equal 56, dt.sec
244
+
245
+ end
246
+ end
@@ -0,0 +1,22 @@
1
+ require 'lib/iso8583'
2
+ require 'lib/iso8583/berlin'
3
+ require 'test/unit'
4
+
5
+ include ISO8583
6
+
7
+ class SeperateTest < Test::Unit::TestCase
8
+
9
+
10
+
11
+ def test_test_separate_messages
12
+ mes1=BerlinMessage.new
13
+ mes1[2]="1234567890"
14
+ assert_equal(mes1[2], "1234567890")
15
+ mes2=BerlinMessage.new
16
+ mes2[2]="0987654321"
17
+ assert_equal(mes2[2], "0987654321")
18
+ # test that the original value of field 2 in mes1 hasn't changed
19
+ assert_equal(mes1[2], "1234567890") # this will fail, as the field 2 in mes1 has changed value too!!
20
+ end
21
+
22
+ end
data/test/test_util.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'lib/iso8583'
2
+ require 'test/unit'
3
+
4
+ include ISO8583
5
+
6
+ class UtilTest < Test::Unit::TestCase
7
+ def test_hex2b
8
+ assert_equal "\xab\xcd\x12", hex2b("abcd12")
9
+ assert_equal "\xab\xcd\x12", hex2b("a b c d 1 2")
10
+ assert_equal "\xab\xcd\x12", hex2b("ABCD12")
11
+ assert_raise(ISO8583Exception){
12
+ # non hex
13
+ hex2b("ABCDEFGH")
14
+ }
15
+ assert_raise(ISO8583Exception){
16
+ # odd num digits
17
+ hex2b("ABCDEF0")
18
+ }
19
+ end
20
+
21
+ def test_b2hex
22
+ assert_equal "abcd12", b2hex("\xab\xcd\x12")
23
+ end
24
+
25
+ def test_ebcdic2ascii
26
+ assert_equal "0123456789", ebcdic2ascii("\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9")
27
+ end
28
+
29
+ def test_ascii2ebcdic
30
+ assert_equal "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9", ascii2ebcdic("0123456789")
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: npn47_iso8583
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5.a
5
+ platform: ruby
6
+ authors:
7
+ - Tim Becker
8
+ - Slava Kravchenko
9
+ - Neeraj PN
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-06-16 00:00:00.000000000 Z
14
+ dependencies: []
15
+ description: Ruby implementation of ISO 8583 financial messaging
16
+ email:
17
+ - tim.becker@kuriositaet.de
18
+ - cordawyn@gmail.com
19
+ - neerajpn47@gmail.com
20
+ executables: []
21
+ extensions: []
22
+ extra_rdoc_files: []
23
+ files:
24
+ - lib/8583.rb
25
+ - lib/iso8583.rb
26
+ - lib/iso8583/berlin.rb
27
+ - lib/iso8583/bitmap.rb
28
+ - lib/iso8583/codec.rb
29
+ - lib/iso8583/exception.rb
30
+ - lib/iso8583/field.rb
31
+ - lib/iso8583/fields.rb
32
+ - lib/iso8583/message.rb
33
+ - lib/iso8583/util.rb
34
+ - lib/iso8583/version.rb
35
+ - test/BitmapTests.rb
36
+ - test/message_test.rb
37
+ - test/test_codec.rb
38
+ - test/test_fields.rb
39
+ - test/test_seperate_msg.rb
40
+ - test/test_util.rb
41
+ homepage: http://github.com/neerajpn47/8583/
42
+ licenses: []
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 1.3.6
58
+ requirements:
59
+ - none
60
+ rubyforge_project: iso8583
61
+ rubygems_version: 2.2.2
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: Ruby implementation of ISO 8583 financial messaging
65
+ test_files: []
66
+ has_rdoc: true