Example #1
0
 def test_dpt_subclasses_no_duplicate_dpt_number(self):
     """Test for duplicate value_type values in subclasses of DPTBase."""
     dpt_tuples = []
     for dpt in DPTBase.__recursive_subclasses__():
         if hasattr(dpt, "dpt_main_number") and hasattr(dpt, "dpt_sub_number"):
             dpt_tuples.append((dpt.dpt_main_number, dpt.dpt_sub_number))
     self.assertCountEqual(dpt_tuples, set(dpt_tuples))
Example #2
0
 def test_dpt_subclasses_no_duplicate_value_types(self):
     """Test for duplicate value_type values in subclasses of DPTBase."""
     value_types = []
     for dpt in DPTBase.__recursive_subclasses__():
         if hasattr(dpt, "value_type"):
             value_types.append(dpt.value_type)
     self.assertCountEqual(value_types, set(value_types))
Example #3
0
 def test_dpt_subclasses_no_duplicate_value_types(self):
     """Test for duplicate value_type values in subclasses of DPTBase."""
     value_types = []
     for dpt in DPTBase.__recursive_subclasses__():
         if dpt.value_type is not None:
             value_types.append(dpt.value_type)
     assert len(value_types) == len(set(value_types))
Example #4
0
 def test_dpt_subclasses_have_both_dpt_number_attributes(self):
     """Test DPTBase subclasses for having both dpt number attributes set."""
     for dpt in DPTBase.__recursive_subclasses__():
         if hasattr(dpt, "dpt_main_number"):
             self.assertTrue(
                 hasattr(dpt, "dpt_sub_number"), "No dpt_sub_number in %s" % dpt
             )
Example #5
0
 def test_dpt_subclasses_no_duplicate_dpt_number(self):
     """Test for duplicate value_type values in subclasses of DPTBase."""
     dpt_tuples = []
     for dpt in DPTBase.__recursive_subclasses__():
         if dpt.dpt_main_number is not None and dpt.dpt_sub_number is not None:
             dpt_tuples.append((dpt.dpt_main_number, dpt.dpt_sub_number))
     assert len(dpt_tuples) == len(set(dpt_tuples))
Example #6
0
 def test_dpt_subclasses_definition_types(self):
     """Test value_type and dpt_*_number values for correct type in subclasses of DPTBase."""
     for dpt in DPTBase.__recursive_subclasses__():
         if dpt.value_type is not None:
             assert isinstance(
                 dpt.value_type, str
             ), f"Wrong type for value_type in {dpt} : {type(dpt.value_type)} - str `None` expected"
         if dpt.dpt_main_number is not None:
             assert isinstance(
                 dpt.dpt_main_number, int
             ), f"Wrong type for dpt_main_number in {dpt} : {type(dpt.dpt_main_number)} - int or `None` expected"
         if dpt.dpt_sub_number is not None:
             assert isinstance(
                 dpt.dpt_sub_number, int
             ), f"Wrong type for dpt_sub_number in {dpt} : {type(dpt.dpt_sub_number)} - int or `None` expected"
def print_table():
    """Read the values and print the table to stdout."""
    rows = []
    for dpt in DPTBase.__recursive_subclasses__():
        if dpt.has_distinct_value_type():
            rows.append(DPTRow(dpt_class=dpt))

    rows.sort(key=lambda row: row.dpt_number_int())

    table_header = Row()
    rows.insert(0, table_header)

    # Insert at last to have correct column_widths.
    rows.insert(1, table_delimiter())

    for row in rows:
        print(row)
Example #8
0
 def test_dpt_subclasses_definition_types(self):
     """Test value_type and dpt_*_number values for correct type in subclasses of DPTBase."""
     for dpt in DPTBase.__recursive_subclasses__():
         if hasattr(dpt, 'value_type'):
             self.assertTrue(
                 isinstance(dpt.value_type, str),
                 msg="Wrong type for value_type in %s - str expected" % dpt)
         if hasattr(dpt, 'dpt_main_number'):
             self.assertTrue(
                 isinstance(dpt.dpt_main_number, int),
                 msg="Wrong type for dpt_main_number in %s - int expected" %
                 dpt)
         if hasattr(dpt, 'dpt_sub_number'):
             self.assertTrue(
                 isinstance(dpt.dpt_sub_number, (int, type(None))),
                 msg=
                 "Wrong type for dpt_sub_number in %s - int or `None` expected"
                 % dpt)
Example #9
0
 def test_dpt_subclasses_definition_types(self):
     """Test value_type and dpt_*_number values for correct type in subclasses of DPTBase."""
     for dpt in DPTBase.__recursive_subclasses__():
         if dpt.value_type is not None:
             self.assertTrue(
                 isinstance(dpt.value_type, str),
                 msg=
                 "Wrong type for value_type in %s : %s - str `None` expected"
                 % (dpt, type(dpt.value_type)),
             )
         if dpt.dpt_main_number is not None:
             self.assertTrue(
                 isinstance(dpt.dpt_main_number, int),
                 msg=
                 "Wrong type for dpt_main_number in %s : %s - int or `None` expected"
                 % (dpt, type(dpt.dpt_main_number)),
             )
         if dpt.dpt_sub_number is not None:
             self.assertTrue(
                 isinstance(dpt.dpt_sub_number, int),
                 msg=
                 "Wrong type for dpt_sub_number in %s : %s - int or `None` expected"
                 % (dpt, type(dpt.dpt_sub_number)),
             )
 def test_payload_length_defined(self):
     """Test if all members of DPTMAP implement payload_length."""
     for dpt_class in DPTBase.__recursive_subclasses__():
         assert isinstance(dpt_class.payload_length, int)
Example #11
0
 def test_dpt_abstract_subclasses_ignored(self):
     """Test if abstract base classes are ignored by __recursive_subclasses__."""
     for dpt in DPTBase.__recursive_subclasses__():
         assert dpt is not DPTNumeric