From 2922381e5e922f395965ad6ef255d95692f28812 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Henryk=20Pl=C3=B6tz?= Date: Wed, 8 Aug 2018 04:40:03 +0200 Subject: [PATCH] Add test for parsing of count-repeated fields --- tests/test_message_parser.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tests/test_message_parser.py b/tests/test_message_parser.py index 3fa825c..76561f7 100644 --- a/tests/test_message_parser.py +++ b/tests/test_message_parser.py @@ -30,7 +30,35 @@ def test_parse_complicated(): assert len(m.segments) == 4 assert m.segments[3].__class__.__name__ == "HNHBS1" -def test_HIRMG2_parse(): +def test_parse_counted(): + from fints.segments import FinTS3Segment + from fints.formals import NumericField + + class ITST1(FinTS3Segment): + a = NumericField(count=3) + + m1 = FinTS3Parser().parse_message(b"ITST:1:1+1+2+3'") + assert m1.segments[0].header.type == 'ITST' + assert len(m1.segments[0].a) == 3 + assert m1.segments[0].a[0] == 1 + assert m1.segments[0].a[1] == 2 + assert m1.segments[0].a[2] == 3 + + class ITST2(FinTS3Segment): + a = NumericField(max_count=3) + + m2 = FinTS3Parser().parse_message(b"ITST:1:2+1+2+3'") + assert m1.segments[0].a[2] == 3 + + with pytest.raises(IndexError): + FinTS3Parser().parse_message(b"ITST:1:2+1+2+3+4'") + + m = FinTS3Parser().parse_message(b"ITST:1:2+1+2'") + assert len(m2.segments[0].a) == 2 + assert m2.segments[0].a[1] == 2 + + +def test_parse_HIRMG2(): d = b"HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'" m = FinTS3Parser().parse_message(d) -- 2.47.3