From: Henryk Plötz Date: Thu, 9 Aug 2018 21:04:09 +0000 (+0200) Subject: Add tests for serializer X-Git-Tag: v2.0.0~1^2~136 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6599f4632a7177b3d455a64bac59320a62b805c5;p=thirdparty%2Fpython-fints.git Add tests for serializer --- diff --git a/.gitignore b/.gitignore index 1617022..23086fb 100644 --- a/.gitignore +++ b/.gitignore @@ -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 index 0000000..838f3f8 --- /dev/null +++ b/tests/test_message_serializer.py @@ -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)