Skip to content

Commit 754020f

Browse files
authored
Merge pull request #52 from da4089/50-support-unsigned-64-bit-integers-for-sequence-numbers
Check support for unsigned 64 bit integer values for sequence numbers
2 parents bac90ff + 60fd246 commit 754020f

File tree

4 files changed

+95
-7
lines changed

4 files changed

+95
-7
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ jobs:
55
runs-on: ubuntu-latest
66
strategy:
77
matrix:
8-
python-version: ['3.6', '3.7', '3.8', '3.9', '3.10']
8+
python-version: ['3.7', '3.8', '3.9', '3.10']
99
steps:
10-
- uses: actions/checkout@v2
10+
- uses: actions/checkout@v3
1111
- name: Setup Python ${{ matrix.python-version }}
12-
uses: actions/setup-python@v1
12+
uses: actions/setup-python@v4
1313
with:
1414
python-version: ${{ matrix.python-version }}
1515
- name: Install Requirements

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
'License :: OSI Approved :: MIT License',
4747
'Operating System :: OS Independent',
4848
'Programming Language :: Python',
49-
'Programming Language :: Python :: 3.6',
5049
'Programming Language :: Python :: 3.7',
5150
'Programming Language :: Python :: 3.8',
5251
'Programming Language :: Python :: 3.9',

test/test_message.py

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#! /usr/bin/env python
22
########################################################################
33
# SimpleFIX
4-
# Copyright (C) 2016-2022, David Arnold.
4+
# Copyright (C) 2016-2023, David Arnold.
55
#
66
# Permission is hereby granted, free of charge, to any person obtaining a copy
77
# of this software and associated documentation files (the "Software"), to deal
@@ -24,7 +24,6 @@
2424
########################################################################
2525

2626
import datetime
27-
import sys
2827
import time
2928
import unittest
3029

@@ -940,6 +939,48 @@ def test_val_str(self):
940939
self.assertEqual(b"123", fix_val("123"))
941940
self.assertEqual(bytes, type(fix_val("123")))
942941

942+
def test_int_value_zero(self):
943+
"""Test integer value: zero."""
944+
m = FixMessage()
945+
m.append_pair(34, 0)
946+
b = m.encode(raw=True)
947+
self.assertEqual(b, b'34=0\x01')
948+
949+
def test_int_value_one(self):
950+
"""Test integer value: one"""
951+
m = FixMessage()
952+
m.append_pair(34, 1)
953+
b = m.encode(raw=True)
954+
self.assertEqual(b, b'34=1\x01')
955+
956+
def test_int_value_32bit(self):
957+
"""Test integer value: 2**32-1"""
958+
m = FixMessage()
959+
m.append_pair(34, 0xffffffff)
960+
b = m.encode(raw=True)
961+
self.assertEqual(b, b'34=4294967295\x01')
962+
963+
def test_int_value_33bit(self):
964+
"""Test integer value: 2**32"""
965+
m = FixMessage()
966+
m.append_pair(34, 0xffffffff + 1)
967+
b = m.encode(raw=True)
968+
self.assertEqual(b, b'34=4294967296\x01')
969+
970+
def test_int_value_64bit(self):
971+
"""Test integer value: 2**64-1"""
972+
m = FixMessage()
973+
m.append_pair(34, 0xffffffffffffffff)
974+
b = m.encode(raw=True)
975+
self.assertEqual(b, b'34=18446744073709551615\x01')
976+
977+
def test_int_value_65bit(self):
978+
"""Test integer value: 2**64"""
979+
m = FixMessage()
980+
m.append_pair(34, 0xffffffffffffffff + 1)
981+
b = m.encode(raw=True)
982+
self.assertEqual(b, b'34=18446744073709551616\x01')
983+
943984

944985
if __name__ == "__main__":
945986
unittest.main()

test/test_parser.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#! /usr/bin/env python
22
########################################################################
33
# SimpleFIX
4-
# Copyright (C) 2016-2022, David Arnold.
4+
# Copyright (C) 2016-2023, David Arnold.
55
#
66
# Permission is hereby granted, free of charge, to any person obtaining a copy
77
# of this software and associated documentation files (the "Software"), to deal
@@ -161,6 +161,54 @@ def test_junk_pairs(self):
161161
msg = parser.get_message()
162162
self.assertIsNone(msg)
163163

164+
def test_int_value_zero(self):
165+
"""Test integer value: zero."""
166+
parser = FixParser()
167+
parser.append_buffer(b'8=FIX.4.2\x0134=0\x0110=0\x01')
168+
msg = parser.get_message()
169+
self.assertIsNotNone(msg)
170+
self.assertEqual(int(msg.get(34)), 0)
171+
172+
def test_int_value_one(self):
173+
"""Test integer value: zero."""
174+
parser = FixParser()
175+
parser.append_buffer(b'8=FIX.4.2\x0134=1\x0110=0\x01')
176+
msg = parser.get_message()
177+
self.assertIsNotNone(msg)
178+
self.assertEqual(int(msg.get(34)), 1)
179+
180+
def test_int_value_32bit(self):
181+
"""Test integer value: zero."""
182+
parser = FixParser()
183+
parser.append_buffer(b'8=FIX.4.2\x0134=4294967295\x0110=0\x01')
184+
msg = parser.get_message()
185+
self.assertIsNotNone(msg)
186+
self.assertEqual(int(msg.get(34)), 4294967295)
187+
188+
def test_int_value_33bit(self):
189+
"""Test integer value: zero."""
190+
parser = FixParser()
191+
parser.append_buffer(b'8=FIX.4.2\x0134=4294967296\x0110=0\x01')
192+
msg = parser.get_message()
193+
self.assertIsNotNone(msg)
194+
self.assertEqual(int(msg.get(34)), 4294967296)
195+
196+
def test_int_value_64bit(self):
197+
"""Test integer value: zero."""
198+
parser = FixParser()
199+
parser.append_buffer(b'8=FIX.4.2\x0134=18446744073709551615\x0110=0\x01')
200+
msg = parser.get_message()
201+
self.assertIsNotNone(msg)
202+
self.assertEqual(int(msg.get(34)), 18446744073709551615)
203+
204+
def test_int_value_65bit(self):
205+
"""Test integer value: zero."""
206+
parser = FixParser()
207+
parser.append_buffer(b'8=FIX.4.2\x0134=18446744073709551616\x0110=0\x01')
208+
msg = parser.get_message()
209+
self.assertIsNotNone(msg)
210+
self.assertEqual(int(msg.get(34)), 18446744073709551616)
211+
164212
def test_raw_data(self):
165213
"""Test parsing of raw data fields."""
166214
raw = b"raw\x01data"

0 commit comments

Comments
 (0)