]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Add test for parsing of count-repeated fields
authorHenryk Plötz <henryk@ploetzli.ch>
Wed, 8 Aug 2018 02:40:03 +0000 (04:40 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:17 +0000 (19:34 +0100)
tests/test_message_parser.py

index 3fa825c6f9b0f2e9f552fdc14a3d71498133258f..76561f73bf4abb5092a92c5bf3210dd6a28ce482 100644 (file)
@@ -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)