diff --git a/tests/test_primitive_data/__init__.py b/tests/test_primitive_data/__init__.py new file mode 100644 index 0000000..c0c458a --- /dev/null +++ b/tests/test_primitive_data/__init__.py @@ -0,0 +1,7 @@ +#!/usr/bin/python + +""" +Test Primitive Data Module +""" + +from . import test_integer diff --git a/tests/test_primitive_data/test_bit_string.py b/tests/test_primitive_data/test_bit_string.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_boolean.py b/tests/test_primitive_data/test_boolean.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_character_string.py b/tests/test_primitive_data/test_character_string.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_date.py b/tests/test_primitive_data/test_date.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_double.py b/tests/test_primitive_data/test_double.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_enumerated.py b/tests/test_primitive_data/test_enumerated.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_integer.py b/tests/test_primitive_data/test_integer.py new file mode 100644 index 0000000..9bb491a --- /dev/null +++ b/tests/test_primitive_data/test_integer.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Test Primitive Data Integer +--------------------------- +""" + +import unittest + +from bacpypes.debugging import bacpypes_debugging, ModuleLogger, xtob +from bacpypes.primitivedata import Integer, Tag + +# some debugging +_debug = 0 +_log = ModuleLogger(globals()) + + +@bacpypes_debugging +def integer_tag(x): + """Convert a hex string to an integer application tag.""" + if _debug: integer_tag._debug("integer_tag %r", x) + + b = xtob(x) + tag = Tag(Tag.applicationTagClass, Tag.integerAppTag, len(b), b) + if _debug: integer_endec._debug(" - tag: %r", tag) + + return tag + +@bacpypes_debugging +def integer_encode(obj): + """Encode an Integer object into a tag.""" + if _debug: integer_encode._debug("integer_encode %r", obj) + + tag = Tag() + obj.encode(tag) + if _debug: integer_endec._debug(" - tag: %r", tag) + + return tag + + +@bacpypes_debugging +def integer_decode(tag): + """Decode an integer application tag into an integer.""" + if _debug: integer_decode._debug("integer_decode %r", tag) + + obj = Integer(tag) + if _debug: integer_decode._debug(" - obj: %r", obj) + + return obj + + +@bacpypes_debugging +def integer_endec(value, x): + """Pass the value to Integer, construct a tag from the hex string, + and compare results of encode and decoding each other.""" + if _debug: integer_endec._debug("integer_endec %r %r", value, x) + + tag = integer_tag(x) + if _debug: integer_endec._debug(" - tag: %r, %r", tag, tag.tagData) + + obj = Integer(value) + if _debug: integer_endec._debug(" - obj: %r, %r", obj, obj.value) + + assert integer_encode(obj) == tag + assert integer_decode(tag) == obj + + +@bacpypes_debugging +class TestInteger(unittest.TestCase): + + def test_integer(self): + if _debug: TestInteger._debug("test_integer") + + obj = Integer() + assert obj.value == 0 + + def test_integer_int(self): + if _debug: TestInteger._debug("test_integer_int") + + obj = Integer(1) + assert obj.value == 1 + assert str(obj) == "Integer(1)" + + obj = Integer(-1) + assert obj.value == -1 + assert str(obj) == "Integer(-1)" + + def test_integer_integer(self): + if _debug: TestInteger._debug("test_integer_integer") + + obj1 = Integer(12) + obj2 = Integer(obj1) + assert obj2.value == 12 + + def test_integer_endec(self): + if _debug: TestInteger._debug("test_integer_endec") + + with self.assertRaises(IndexError): + obj = Integer(integer_tag('')) + + integer_endec(0, '00') + integer_endec(1, '01') + integer_endec(127, '7f') + integer_endec(-128, '80') + integer_endec(-1, 'ff') + + integer_endec(32767, '7fff') + integer_endec(-32768, '8000') + + integer_endec(8388607, '7fffff') + integer_endec(-8388608, '800000') + + integer_endec(2147483647, '7fffffff') + integer_endec(-2147483648, '80000000') diff --git a/tests/test_primitive_data/test_null.py b/tests/test_primitive_data/test_null.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_object_identifier.py b/tests/test_primitive_data/test_object_identifier.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_object_type.py b/tests/test_primitive_data/test_object_type.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_octet_string.py b/tests/test_primitive_data/test_octet_string.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_real.py b/tests/test_primitive_data/test_real.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_tag.py b/tests/test_primitive_data/test_tag.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_time.py b/tests/test_primitive_data/test_time.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_primitive_data/test_unsigned.py b/tests/test_primitive_data/test_unsigned.py new file mode 100644 index 0000000..e69de29