iso8583 0.2.3 → 0.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0881d56e13a87bfba361adb50daa0a22b61f2e02
4
- data.tar.gz: 8334f84528ecbad4c5481068706326f6fa7489ed
2
+ SHA256:
3
+ metadata.gz: 4c551d563390f55d323d8aea190eb31b20dcc98f786a9f872faa5df24fd229d1
4
+ data.tar.gz: c448bfe8446285da07c61ac8b5cfbb908477cf98a9e1bf703cfdae47d17cb2c9
5
5
  SHA512:
6
- metadata.gz: 8d259cbf42c0f4abde3af3622aa8792bbe89c6926628cc4adb091c8baf89023e2d1782f386ef1f001288743e60a29ac37db323b692ca58d1fd2bda2a6106da03
7
- data.tar.gz: e242b86a519584d7f9a0e6252b0691cb05f6bd2de8606564ad037615b8ba88906da8e23309bfd4b6696fad0fc13f6d41157cbb1698b69b47095387cf69896594
6
+ metadata.gz: 1fe629ddc4d985d96b63d20e6bacfb7e9c7d7cbe429232a9dcb8f5e972f9be5e0263bb675e11d78e272de4a3c58d0ced9a7a8b2646e2f94d64d0aea8b632f66c
7
+ data.tar.gz: 05bb98f645a560bf44bc2b64884a301b0869f7df1b7694291c82d991abe21538df5b8a08d57ab716e8e30482770e9db8dc6f49146de2ba36aa9640e355265329
data/AUTHORS CHANGED
@@ -5,3 +5,5 @@ Lasse Skindstad Ebert (https://github.com/lasseebert)
5
5
  Joel Ibaceta (https://github.com/joelibaceta)
6
6
  Jackson Harper <jackson@juvo.com>
7
7
  absrd (https://github.com/absrd)
8
+ Nicolas Leger (https://github.com/nicolasleger)
9
+ Jérémie Bonal (https://github.com/Aquaj)
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 0.2.4
2
+ =========
3
+ better errors for missing bitmap
4
+ cleanup warnings
5
+
1
6
  0.2.3
2
7
  =========
3
8
  Change Fixnum to Integer as Fixnum is deprecated
data/Rakefile CHANGED
@@ -84,7 +84,6 @@ spec = Gem::Specification.new do |s|
84
84
  s.requirements << "none"
85
85
  s.require_path = "lib"
86
86
  s.description = LONG_DESC
87
- s.has_rdoc = true
88
87
  s.authors = ["Tim Becker", "Slava Kravchenko"]
89
88
  s.email = ["tim.becker@kuriositaet.de","cordawyn@gmail.com"]
90
89
  s.homepage = "http://github.com/a2800276/8583/"
@@ -125,7 +124,7 @@ end
125
124
  Rake::TestTask.new do |t|
126
125
  t.libs << "test"
127
126
  t.libs << "."
128
- t.ruby_opts = ["-rubygems"]
127
+ t.ruby_opts = ["-rrubygems"]
129
128
  t.test_files = FileList["test/*.rb"]
130
129
  t.verbose = true
131
130
  end
@@ -72,7 +72,7 @@ if __FILE__==$0
72
72
  mes[2] = 474747474747
73
73
  mes["Processing Code"] = "123456"
74
74
 
75
- pan = mes["Primary Account Number (PAN)"]
75
+ #pan = mes["Primary Account Number (PAN)"]
76
76
  #mes.pan = 47474747474747
77
77
 
78
78
  #puts mes.pan
data/lib/iso8583/codec.rb CHANGED
@@ -113,7 +113,7 @@ module ISO8583
113
113
  [val].pack("H*")
114
114
  }
115
115
  Packed_Number.decoder = lambda{|encoded|
116
- d = encoded.unpack("H*")[0].to_i
116
+ encoded.unpack("H*")[0].to_i
117
117
  }
118
118
 
119
119
  A_Codec = Codec.new
@@ -57,63 +57,75 @@ module ISO8583
57
57
  }
58
58
 
59
59
  LL_BCD = BCDField.new
60
+ LL_BCD.name = "LL_BCD"
60
61
  LL_BCD.length = 2
61
62
  LL_BCD.codec = Packed_Number
62
63
 
63
64
  # Two byte variable length ASCII numeral, payload ASCII numerals
64
65
  LLVAR_N = Field.new
66
+ LLVAR_N.name = "LLVAR_N"
65
67
  LLVAR_N.length = LL
66
68
  LLVAR_N.codec = ASCII_Number
67
69
 
68
70
  # Three byte variable length ASCII numeral, payload ASCII numerals
69
71
  LLLVAR_N = Field.new
72
+ LLLVAR_N.name = "LLLVAR_N"
70
73
  LLLVAR_N.length = LLL
71
74
  LLLVAR_N.codec = ASCII_Number
72
75
 
73
76
  # Two byte variable length ASCII numeral, payload Track2 data
74
77
  LLVAR_Z = Field.new
78
+ LLVAR_Z.name = "LLVAR_Z"
75
79
  LLVAR_Z.length = LL
76
80
  LLVAR_Z.codec = Track2
77
81
 
78
82
  # Two byte variable length ASCII numeral, payload ASCII, fixed length, zeropadded (right)
79
83
  LLVAR_AN = Field.new
84
+ LLVAR_AN.name = "LLVAR_AN"
80
85
  LLVAR_AN.length = LL
81
86
  LLVAR_AN.codec = AN_Codec
82
87
 
83
88
  # Two byte variable length ASCII numeral, payload ASCII+special
84
89
  LLVAR_ANS = Field.new
90
+ LLVAR_ANS.name = "LLVAR_ANS"
85
91
  LLVAR_ANS.length = LL
86
92
  LLVAR_ANS.codec = ANS_Codec
87
93
 
88
94
  # Three byte variable length ASCII numeral, payload ASCII, fixed length, zeropadded (right)
89
95
  LLLVAR_AN = Field.new
96
+ LLLVAR_AN.name = "LLLVAR_AN"
90
97
  LLLVAR_AN.length = LLL
91
98
  LLLVAR_AN.codec = AN_Codec
92
99
 
93
100
  # Three byte variable length ASCII numeral, payload ASCII+special
94
101
  LLLVAR_ANS = Field.new
102
+ LLLVAR_ANS.name = "LLLVAR_ANS"
95
103
  LLLVAR_ANS.length = LLL
96
104
  LLLVAR_ANS.codec = ANS_Codec
97
105
 
98
106
  # Two byte variable length binary payload
99
107
  LLVAR_B = Field.new
108
+ LLVAR_B.name = "LLVAR_B"
100
109
  LLVAR_B.length = LL
101
110
  LLVAR_B.codec = Null_Codec
102
111
 
103
112
 
104
113
  # Three byte variable length binary payload
105
114
  LLLVAR_B = Field.new
115
+ LLLVAR_B.name = "LLLVAR_B"
106
116
  LLLVAR_B.length = LLL
107
117
  LLLVAR_B.codec = Null_Codec
108
118
 
109
119
  # Fixed lengh numerals, repesented in ASCII, padding right justified using zeros
110
120
  N = Field.new
121
+ N.name = "N"
111
122
  N.codec = ASCII_Number
112
123
  N.padding = lambda {|val, len|
113
124
  sprintf("%0#{len}d", val)
114
125
  }
115
126
 
116
127
  N_BCD = BCDField.new
128
+ N_BCD.name = "N_BCD"
117
129
  N_BCD.codec = Packed_Number
118
130
 
119
131
  PADDING_LEFT_JUSTIFIED_SPACES = lambda {|val, len|
@@ -122,25 +134,30 @@ module ISO8583
122
134
 
123
135
  # Fixed length ASCII letters [A-Za-z]
124
136
  A = Field.new
137
+ A.name = "A"
125
138
  A.codec = A_Codec
126
139
 
127
140
  # Fixed lengh ASCII [A-Za-z0-9], padding left justified using spaces.
128
141
  AN = Field.new
142
+ AN.name = "AN"
129
143
  AN.codec = AN_Codec
130
144
  AN.padding = PADDING_LEFT_JUSTIFIED_SPACES
131
145
 
132
146
  # Fixed lengh ASCII [A-Za-z0-9] and space, padding left, spaces
133
147
  ANP = Field.new
148
+ ANP.name = "ANP"
134
149
  ANP.codec = ANP_Codec
135
150
  ANP.padding = PADDING_LEFT_JUSTIFIED_SPACES
136
151
 
137
152
  # Fixed length ASCII [\x20-\x7E], padding left, spaces
138
153
  ANS = Field.new
154
+ ANS.name = ANS
139
155
  ANS.codec = ANS_Codec
140
156
  ANS.padding = PADDING_LEFT_JUSTIFIED_SPACES
141
157
 
142
158
  # Binary data, padding left using nulls (0x00)
143
159
  B = Field.new
160
+ B.name = "B"
144
161
  B.codec = Null_Codec
145
162
  B.padding = lambda {|val, len|
146
163
  while val.length < len
@@ -151,24 +168,29 @@ module ISO8583
151
168
 
152
169
  # Date, formatted as described in ASCII numerals
153
170
  MMDDhhmmss = Field.new
171
+ MMDDhhmmss.name = "MMDDhhmmss"
154
172
  MMDDhhmmss.codec = MMDDhhmmssCodec
155
173
  MMDDhhmmss.length = 10
156
174
 
157
175
  #Date, formatted as described in ASCII numerals
158
176
  YYMMDDhhmmss = Field.new
177
+ YYMMDDhhmmss.name = "YYMMDDhhmmss"
159
178
  YYMMDDhhmmss.codec = YYMMDDhhmmssCodec
160
179
  YYMMDDhhmmss.length = 12
161
180
 
162
181
  #Date, formatted as described in ASCII numerals
163
182
  YYMM = Field.new
183
+ YYMM.name = "YYMM"
164
184
  YYMM.codec = YYMMCodec
165
185
  YYMM.length = 4
166
186
 
167
187
  MMDD = Field.new
188
+ MMDD.name = "MMDD"
168
189
  MMDD.codec = MMDDCodec
169
190
  MMDD.length = 4
170
191
 
171
192
  Hhmmss = Field.new
193
+ Hhmmss.name = "Hhmmss"
172
194
  Hhmmss.codec = HhmmssCodec
173
195
  Hhmmss.length = 6
174
196
 
@@ -135,7 +135,7 @@ module ISO8583
135
135
  # mes = MyMessage.new
136
136
  # mes.mti = 1100 # or mes.mti = "Authorization Request Acquirer Gateway"
137
137
  def mti=(value)
138
- num, name = _get_mti_definition(value)
138
+ num, _ = _get_mti_definition(value)
139
139
  @mti = num
140
140
  end
141
141
 
@@ -343,15 +343,19 @@ module ISO8583
343
343
  # @values[bmp] = bmp_def
344
344
  }
345
345
  end
346
-
346
+
347
347
  # Parse the bytes `str` returning a message of the defined type.
348
+ #
349
+ # returns an instance of Message
350
+ #
351
+ # will raise an ISO8583Exception if the bitmap definition can't be found
348
352
  def parse(str)
349
353
  str = str.force_encoding('ASCII-8BIT')
350
354
  message = self.new
351
355
  message.mti, rest = _mti_format.parse(str)
352
356
  bmp,rest = Bitmap.parse(rest)
353
357
  bmp.each {|bit|
354
- bmp_def = _definitions[bit]
358
+ bmp_def = message._get_definition(bit)
355
359
  value, rest = bmp_def.field.parse(rest)
356
360
  message[bit] = value
357
361
  }
@@ -1,4 +1,4 @@
1
1
  # -*- mode: ruby; encoding: utf-8; tab-width: 2; indent-tabs-mode: nil -*-
2
2
  module ISO8583
3
- VERSION = "0.2.3"
3
+ VERSION = "0.2.4"
4
4
  end
data/test/BitmapTests.rb CHANGED
@@ -22,14 +22,14 @@ class BitmapTests < Test::Unit::TestCase
22
22
 
23
23
  assert_raises(ISO8583Exception) {b.set 1000 }
24
24
  assert_raises(ISO8583Exception) { b.set 1 }
25
- assert_raises(ISO8583Exception) { b.set -1 }
25
+ assert_raises(ISO8583Exception) { b.set(-1) }
26
26
  end
27
27
 
28
28
  def test_out_of_bounds_errors
29
29
  b = Bitmap.new
30
30
  assert_raises(ISO8583Exception) {b.set 1000 }
31
31
  assert_raises(ISO8583Exception) { b.set 1 }
32
- assert_raises(ISO8583Exception) { b.set -1 }
32
+ assert_raises(ISO8583Exception) { b.set(-1) }
33
33
  end
34
34
 
35
35
  def test_parse_bmp
@@ -82,7 +82,7 @@ class BitmapTests < Test::Unit::TestCase
82
82
  tst = "\x80\x00\x10\x20\x40\x81\x02\x04\x08\x10\x20\x40\x81\x02\x04\x08"
83
83
  bmp = Bitmap.new tst
84
84
  arr = []
85
- first = bmp.each{|bit|
85
+ bmp.each{|bit|
86
86
  arr.push bit
87
87
  }
88
88
  assert_equal 20, arr.first
data/test/message_test.rb CHANGED
@@ -38,18 +38,25 @@ class MessageTest < Test::Unit::TestCase
38
38
  pan = 474747474747
39
39
 
40
40
  assert_raises(ISO8583Exception) {
41
- mes = BerlinMessage.parse "@\000\000\000\000\000\000\00012474747474747"
41
+ BerlinMessage.parse "@\000\000\000\000\000\000\00012474747474747"
42
42
  }
43
43
  mes = BerlinMessage.parse "1430@\000\000\000\000\000\000\00012474747474747"
44
44
  assert_equal pan, mes.pan
45
45
  assert_equal 1430, mes.mti
46
46
  end
47
47
 
48
+ def test_unknown_field
49
+ assert_raises(ISO8583Exception.new("no definition for field: 8")) {
50
+ mes = BerlinMessage.parse "1430A\000\000\000\000\000\000\00012474747474747"
51
+ }
52
+ end
53
+
48
54
  def test_rescue_standard_error
49
55
  rescued = false
50
56
  begin
51
57
  BerlinMessage.parse("bogus")
52
58
  rescue => error
59
+ assert_instance_of ISO8583Exception, error
53
60
  rescued = true
54
61
  end
55
62
 
@@ -168,8 +175,8 @@ END
168
175
  mes[64] = "\xF0\xF0\xF0\xF0"
169
176
 
170
177
  bytes = mes.to_b
171
- mes2 = BerlinMessage.parse(mes.to_b)
172
- assert_equal(mes.to_b, mes2.to_b)
178
+ mes2 = BerlinMessage.parse(bytes)
179
+ assert_equal(bytes, mes2.to_b)
173
180
  end
174
181
 
175
182
  def test_remove_field
data/test/test_codec.rb CHANGED
@@ -101,7 +101,7 @@ class FieldTest < Test::Unit::TestCase
101
101
  end
102
102
  def test_A_Codec
103
103
  assert_raise(ISO8583Exception) {
104
- dt = A_Codec.encode "!!!"
104
+ A_Codec.encode "!!!"
105
105
  }
106
106
  assert_equal "bla", AN_Codec.encode("bla")
107
107
  assert_equal "bla", AN_Codec.decode("bla")
@@ -109,7 +109,7 @@ class FieldTest < Test::Unit::TestCase
109
109
 
110
110
  def test_AN_Codec
111
111
  assert_raise(ISO8583Exception) {
112
- dt = AN_Codec.encode "!!!"
112
+ AN_Codec.encode "!!!"
113
113
  }
114
114
  assert_equal "bla", AN_Codec.encode("bla")
115
115
  assert_equal "bla", AN_Codec.decode("bla")
@@ -117,10 +117,10 @@ class FieldTest < Test::Unit::TestCase
117
117
 
118
118
  def test_Track2_Codec
119
119
  assert_raise(ISO8583Exception) {
120
- dt = Track2.encode "!!!"
120
+ Track2.encode "!!!"
121
121
  }
122
122
  assert_raise(ISO8583Exception) {
123
- dt = Track2.encode ";12312312=123?5"
123
+ Track2.encode ";12312312=123?5"
124
124
  }
125
125
  assert_equal ";123123123=123?5", Track2.encode(";123123123=123?5")
126
126
  assert_equal ";123123123=123?5", Track2.decode(";123123123=123?5")
@@ -133,10 +133,10 @@ class FieldTest < Test::Unit::TestCase
133
133
  assert_equal "\x02", Packed_Number.encode(2)
134
134
  assert_equal "\x02\x55", Packed_Number.encode(0xff)
135
135
  assert_raise(ISO8583Exception) {
136
- dt = Packed_Number.encode ";12312312=123?5"
136
+ Packed_Number.encode ";12312312=123?5"
137
137
  }
138
138
  assert_raise(ISO8583Exception) {
139
- dt = Packed_Number.encode "F"
139
+ Packed_Number.encode "F"
140
140
  }
141
141
  end
142
142
 
@@ -145,7 +145,7 @@ class FieldTest < Test::Unit::TestCase
145
145
  BE_U16.encode 2**16
146
146
  }
147
147
  assert_raise(ISO8583Exception) {
148
- BE_U16.encode -1
148
+ BE_U16.encode(-1)
149
149
  }
150
150
  assert_equal "\0\0", BE_U16.encode(0)
151
151
  expected = "\xff\xff".force_encoding('ASCII-8BIT')
@@ -164,7 +164,7 @@ class FieldTest < Test::Unit::TestCase
164
164
  BE_U32.encode 2**32
165
165
  }
166
166
  assert_raise(ISO8583Exception) {
167
- BE_U32.encode -1
167
+ BE_U32.encode(-1)
168
168
  }
169
169
  assert_equal "\0\0\0\0", BE_U32.encode(0)
170
170
  expected = "\xff\xff\xff\xff".force_encoding('ASCII-8BIT')
data/test/test_fields.rb CHANGED
@@ -10,7 +10,7 @@ class FieldTest < Test::Unit::TestCase
10
10
  assert_equal "456", rest
11
11
 
12
12
  assert_raise(ISO8583ParseException) {
13
- l,rest = LLL.parse "12"
13
+ _,rest = LLL.parse "12"
14
14
  }
15
15
 
16
16
  enc = LLL.encode 123
@@ -50,10 +50,10 @@ class FieldTest < Test::Unit::TestCase
50
50
  assert_equal "123ABC", value
51
51
  assert_equal "", rest
52
52
  assert_raise(ISO8583ParseException) {
53
- l,rest = LLLVAR_AN.parse "12"
53
+ _,rest = LLLVAR_AN.parse "12"
54
54
  }
55
55
  assert_raise(ISO8583ParseException) {
56
- l,rest = LLVAR_AN.parse "12123"
56
+ _,rest = LLVAR_AN.parse "12123"
57
57
  }
58
58
 
59
59
  enc = LLVAR_AN.encode "123A"
@@ -83,10 +83,10 @@ class FieldTest < Test::Unit::TestCase
83
83
  assert_equal 1234, value
84
84
  assert_equal "", rest
85
85
  assert_raise(ISO8583ParseException) {
86
- l,rest = LLLVAR_N.parse "12"
86
+ _,rest = LLLVAR_N.parse "12"
87
87
  }
88
88
  assert_raise(ISO8583ParseException) {
89
- l,rest = LLVAR_N.parse "12123"
89
+ _,rest = LLVAR_N.parse "12123"
90
90
  }
91
91
 
92
92
  enc = LLVAR_N.encode 1234
@@ -116,10 +116,10 @@ class FieldTest < Test::Unit::TestCase
116
116
  assert_equal ";123123123=123?5", value
117
117
  assert_equal "", rest
118
118
  assert_raise(ISO8583ParseException) {
119
- l,rest = LLVAR_Z.parse "12"
119
+ _,rest = LLVAR_Z.parse "12"
120
120
  }
121
121
  assert_raise(ISO8583ParseException) {
122
- l,rest = LLVAR_Z.parse "17;123123123=123?5"
122
+ _,rest = LLVAR_Z.parse "17;123123123=123?5"
123
123
  }
124
124
 
125
125
  enc = LLVAR_Z.encode ";123123123=123?5"
@@ -213,6 +213,7 @@ class FieldTest < Test::Unit::TestCase
213
213
  fld.length=3
214
214
  value, rest = fld.parse "\x01\x23\x45"
215
215
  assert_equal 123, value
216
+ assert_equal "\x45", rest
216
217
 
217
218
  assert_equal "\x01\x23", fld.encode(123)
218
219
  assert_equal "\x01\x23", fld.encode("123")
@@ -241,6 +242,7 @@ class FieldTest < Test::Unit::TestCase
241
242
  assert_equal 12, dt.hour
242
243
  assert_equal 34, dt.min
243
244
  assert_equal 56, dt.sec
245
+ assert_equal "", rest
244
246
 
245
247
  assert_raise(ISO8583Exception) {
246
248
  fld.encode 1234567
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iso8583
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Becker
@@ -9,10 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-15 00:00:00.000000000 Z
12
+ date: 2021-07-04 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: |
15
- Ruby implementation of ISO 8583 financial messaging
14
+ description: 'Ruby implementation of ISO 8583 financial messaging
15
+
16
+ '
16
17
  email:
17
18
  - tim.becker@kuriositaet.de
18
19
  - cordawyn@gmail.com
@@ -20,6 +21,13 @@ executables: []
20
21
  extensions: []
21
22
  extra_rdoc_files: []
22
23
  files:
24
+ - AUTHORS
25
+ - CHANGELOG
26
+ - Gemfile
27
+ - LICENSE
28
+ - README.md
29
+ - Rakefile
30
+ - TODO
23
31
  - lib/8583.rb
24
32
  - lib/iso8583.rb
25
33
  - lib/iso8583/berlin.rb
@@ -31,14 +39,6 @@ files:
31
39
  - lib/iso8583/message.rb
32
40
  - lib/iso8583/util.rb
33
41
  - lib/iso8583/version.rb
34
- - AUTHORS
35
- - CHANGELOG
36
- - Gemfile
37
- - Gemfile.lock
38
- - LICENSE
39
- - README.md
40
- - Rakefile
41
- - TODO
42
42
  - test/BitmapTests.rb
43
43
  - test/message_test.rb
44
44
  - test/test_codec.rb
@@ -55,18 +55,17 @@ require_paths:
55
55
  - lib
56
56
  required_ruby_version: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  required_rubygems_version: !ruby/object:Gem::Requirement
62
62
  requirements:
63
- - - '>='
63
+ - - ">="
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  requirements:
67
67
  - none
68
- rubyforge_project: iso8583
69
- rubygems_version: 2.0.14.1
68
+ rubygems_version: 3.1.2
70
69
  signing_key:
71
70
  specification_version: 4
72
71
  summary: 'iso8583: Ruby implementation of ISO 8583 financial messaging'
data/Gemfile.lock DELETED
@@ -1,38 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- iso8583 (0.3.0)
5
- test-unit (~> 3.0.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- diff-lcs (1.2.5)
11
- power_assert (0.2.4)
12
- rake (10.4.2)
13
- rspec (3.3.0)
14
- rspec-core (~> 3.3.0)
15
- rspec-expectations (~> 3.3.0)
16
- rspec-mocks (~> 3.3.0)
17
- rspec-core (3.3.2)
18
- rspec-support (~> 3.3.0)
19
- rspec-expectations (3.3.1)
20
- diff-lcs (>= 1.2.0, < 2.0)
21
- rspec-support (~> 3.3.0)
22
- rspec-mocks (3.3.2)
23
- diff-lcs (>= 1.2.0, < 2.0)
24
- rspec-support (~> 3.3.0)
25
- rspec-support (3.3.0)
26
- test-unit (3.0.9)
27
- power_assert
28
-
29
- PLATFORMS
30
- ruby
31
-
32
- DEPENDENCIES
33
- iso8583!
34
- rake
35
- rspec (~> 3.3.0)
36
-
37
- BUNDLED WITH
38
- 1.10.6