]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Add tests for serializer
authorHenryk Plötz <henryk@ploetzli.ch>
Thu, 9 Aug 2018 21:04:09 +0000 (23:04 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:17 +0000 (19:34 +0100)
.gitignore
tests/test_message_serializer.py [new file with mode: 0644]

index 1617022d3e41635c116872318f7e00a158822efc..23086fb410b037c1aaa34cfd67940db2d8597257 100644 (file)
@@ -5,5 +5,5 @@ dist/
 env
 .idea/
 test*.py
-!tests
+!tests/*
 *.pyc
diff --git a/tests/test_message_serializer.py b/tests/test_message_serializer.py
new file mode 100644 (file)
index 0000000..838f3f8
--- /dev/null
@@ -0,0 +1,52 @@
+from fints.parser import FinTS3Serializer, FinTS3Parser
+from fints.segments import FinTS3Segment
+from fints.formals import NumericField
+import pytest
+
+def test_serialize_1():
+    class ITST1(FinTS3Segment):
+        a = NumericField(count=3)
+
+    i1 = ITST1(a=[1,3])
+    i1.header.number = 42
+
+    serialization = rb"""ITST:42:1+1+3+'"""
+
+    assert FinTS3Serializer().serialize_message(i1) == serialization
+
+def test_implode_1():
+    m = [
+        [
+            ['IIMPTST', '1', '1'],
+            '1\'',
+            '2+',
+            [
+                '1@',
+                '2:',
+                b'5@+\':',
+            ],
+        ],
+        [
+            ['IIMPTST', '2', '1'],
+            '3?',
+            '4',
+        ]
+    ]
+
+    s = FinTS3Serializer.implode_segments(m)
+
+    assert s == rb"""IIMPTST:1:1+1?'+2?++1?@:2?::@5@5@+':'IIMPTST:2:1+3??+4'"""
+
+    assert FinTS3Parser.explode_segments(s) == m
+
+def test_escape():
+    assert b"a" == FinTS3Serializer.escape_value('a')
+
+    assert b"??" == FinTS3Serializer.escape_value('?')
+
+    assert b"??ab?:" == FinTS3Serializer.escape_value('?ab:')
+
+    assert b"@1@c" == FinTS3Serializer.escape_value(b'c')
+
+    with pytest.raises(TypeError):
+        FinTS3Serializer.escape_value(1)