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.dpt_class_tree(): 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))
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.dpt_class_tree(): if dpt.value_type is not None: value_types.append(dpt.value_type) assert len(value_types) == len(set(value_types))
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.dpt_class_tree(): 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 test_dpt_abstract_subclasses_ignored(self): """Test if abstract base classes are ignored by dpt_class_tree and __recursive_subclasses__.""" for dpt in DPTBase.dpt_class_tree(): assert dpt not in (DPTBase, DPTNumeric)