iso8583 0.2.1 → 0.2.2

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
2
  SHA1:
3
- metadata.gz: 1c29d5c3005b171e1a7e20ec6ef7803101030d96
4
- data.tar.gz: 6b68ceb577c6595e09ddeef78640481d95db2df4
3
+ metadata.gz: 31f7f975a6cd80dbfcdb1aa4e59ceb295d8fae42
4
+ data.tar.gz: d0521763d3f6aadaef2098709462488c73f160c6
5
5
  SHA512:
6
- metadata.gz: f38c9dfc7b540b2147aeb20dccd0f9f6f24475b19513e08b481ffad4a021cd4e5c5f2842b041491c03c366c3fdfc36d62df96ae5f19f427a629278a889059b81
7
- data.tar.gz: d97a0108d9f634e9e9adb0fb3f1839236af58bdbc8a85e6d7ec64ea5dccd01453c3ec0fb8ac9198e8f4f95cf523d06ea1a2c09de79cbf53ed45b408cdb61881e
6
+ metadata.gz: cfa7d0d9c6bf2a376f9485f59d2f5127a017213faa99ab624a2d966c1aaf6d251b0e59019ea6e4f0939912d0891a2d99dbd4c9a25b0fbb2dddbcd9253c624947
7
+ data.tar.gz: 76a1046d1c987139cad5f74be878983d7fbf06a5d831d1187696022852b2c60a54bdb9f40b869db085ff23c21b6b6ec4f9df431a7222c263a5843e5ade50c7f2
data/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+ 0.2.2
2
+ =========
3
+ Thu Feb 16 13:29:41 CET 2017
4
+
5
+ Added network big order codec
6
+
7
+
1
8
  0.2.0
2
9
  =========
3
10
  no more 1.8 compatibility, byte encoding for 1.9+, ci
@@ -53,6 +53,8 @@ module ISO8583
53
53
  # during encoding, no validity check during decoding.
54
54
  # [+ANS_Codec+] passes through ASCII string checking they conform to [\x20-\x7E]
55
55
  # during encoding, no validity check during decoding.
56
+ # [BE_U16] 16-bit unsigned, network (big-endian) byte order
57
+ # [BE_U32] 32-bit unsigned, network (big-endian) byte order
56
58
  # [+Null_Codec+] passes anything along untouched.
57
59
  # [<tt>Track2</tt>] rudimentary check that string conforms to Track2
58
60
  # [+MMDDhhmmssCodec+] encodes Time, Datetime or String to the described date format, checking
@@ -141,6 +143,23 @@ module ISO8583
141
143
  str
142
144
  }
143
145
  ANS_Codec.decoder = PASS_THROUGH_DECODER
146
+
147
+ BE_U16 = Codec.new
148
+ BE_U16.encoder = lambda {|num|
149
+ raise ISO8583Exception.new("Invalid value: #{num} must be 0<= X <=2^16-1") unless 0 <= num && num <= 2**16-1
150
+ [num].pack("n")
151
+ }
152
+ BE_U16.decoder = lambda { |encoded|
153
+ encoded.unpack("n")[0]
154
+ }
155
+ BE_U32 = Codec.new
156
+ BE_U32.encoder = lambda {|num|
157
+ raise ISO8583Exception.new("Invalid value: #{num} must be 0<= X <=2^32-1") unless 0 <= num && num <= 2**32-1
158
+ [num].pack("N")
159
+ }
160
+ BE_U32.decoder = lambda { |encoded|
161
+ encoded.unpack("N")[0]
162
+ }
144
163
 
145
164
  Null_Codec = Codec.new
146
165
  Null_Codec.encoder = lambda {|str|
@@ -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.1"
3
+ VERSION = "0.2.2"
4
4
  end
@@ -76,5 +76,16 @@ class BitmapTests < Test::Unit::TestCase
76
76
  assert_equal [2,3,5,6], arr
77
77
  end
78
78
 
79
+ def test_each_w_two_bitmaps_doesnt_yield_first_field
80
+ #10000000000000000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000
81
+ # generated by: 20.step(128,7) {|i| mp.set(i)}
82
+ tst = "\x80\x00\x10\x20\x40\x81\x02\x04\x08\x10\x20\x40\x81\x02\x04\x08"
83
+ bmp = Bitmap.new tst
84
+ arr = []
85
+ first = bmp.each{|bit|
86
+ arr.push bit
87
+ }
88
+ assert_equal 20, arr.first
89
+ end
79
90
  end
80
91
 
@@ -139,4 +139,42 @@ class FieldTest < Test::Unit::TestCase
139
139
  dt = Packed_Number.encode "F"
140
140
  }
141
141
  end
142
+
143
+ def test_BE_U16
144
+ assert_raise(ISO8583Exception) {
145
+ BE_U16.encode 2**16
146
+ }
147
+ assert_raise(ISO8583Exception) {
148
+ BE_U16.encode -1
149
+ }
150
+ assert_equal "\0\0", BE_U16.encode(0)
151
+ expected = "\xff\xff".force_encoding('ASCII-8BIT')
152
+ assert_equal expected, BE_U16.encode(2**16-1)
153
+ expected = "\x0f\xf0".force_encoding('ASCII-8BIT')
154
+ assert_equal expected, BE_U16.encode(0x00000ff0)
155
+ expected = "\xf0\x0f".force_encoding('ASCII-8BIT')
156
+ assert_equal expected, BE_U16.encode(0x0000f00f)
157
+ expected = "\x5A\xA5".force_encoding('ASCII-8BIT')
158
+ assert_equal expected, BE_U16.encode(0b0101101010100101)
159
+
160
+ assert_equal 0x5aa5, BE_U16.decode(expected)
161
+ end
162
+ def test_BE_U32
163
+ assert_raise(ISO8583Exception) {
164
+ BE_U32.encode 2**32
165
+ }
166
+ assert_raise(ISO8583Exception) {
167
+ BE_U32.encode -1
168
+ }
169
+ assert_equal "\0\0\0\0", BE_U32.encode(0)
170
+ expected = "\xff\xff\xff\xff".force_encoding('ASCII-8BIT')
171
+ assert_equal expected, BE_U32.encode(2**32-1)
172
+ expected = "\xf0\xf0\x0f\x0f".force_encoding('ASCII-8BIT')
173
+ assert_equal expected, BE_U32.encode(0xf0f00f0f)
174
+ expected = "\0\0\0\x1".force_encoding('ASCII-8BIT')
175
+ assert_equal expected, BE_U32.encode(1)
176
+
177
+ assert_equal 1, BE_U32.decode(expected)
178
+ assert_equal 10, BE_U32.decode("\0\0\0\xa")
179
+ end
142
180
  end
@@ -0,0 +1,30 @@
1
+ require 'lib/iso8583'
2
+ require 'test/unit'
3
+
4
+
5
+ class TestMessage < Message
6
+ mti_format N, :length => 4
7
+ mti 1100, "Authorization Request Acquirer Gateway"
8
+ end
9
+
10
+ class TestMessage2 < Message
11
+ mti_format N_BCD, :length => 4
12
+ mti 1100, "Authorization Request Acquirer Gateway"
13
+ end
14
+
15
+ class MessageMetaclassTest < Test::Unit::TestCase
16
+ def test_mti
17
+ t = TestMessage.new
18
+ t.mti = 1100
19
+ expected = "1100\0\0\0\0\0\0\0\0"
20
+ bs = t.to_b
21
+ assert_equal expected, bs
22
+ end
23
+ def test_len_prefix
24
+ t = TestMessage2.new
25
+ t.mti = 1100
26
+ expected = "\x11\0\0\0\0\0\0\0\0\0"
27
+ bs = t.to_b
28
+ assert_equal expected, bs
29
+ end
30
+ end
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.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Becker
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-11-16 00:00:00.000000000 Z
12
+ date: 2017-02-16 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: |
15
15
  Ruby implementation of ISO 8583 financial messaging
@@ -43,6 +43,7 @@ files:
43
43
  - test/message_test.rb
44
44
  - test/test_codec.rb
45
45
  - test/test_fields.rb
46
+ - test/test_message_metaclass.rb
46
47
  - test/test_seperate_msg.rb
47
48
  - test/test_util.rb
48
49
  homepage: http://github.com/a2800276/8583/