def testGetValues(self): enumValueList: List[str] = PyutVisibilityEnum.values() self.logger.info(f'{enumValueList}') self.assertIn(member=PyutVisibilityEnum.PROTECTED.value, container=enumValueList, msg='Ugh. missing value') self.assertIn(member=PyutVisibilityEnum.PRIVATE.value, container=enumValueList, msg='Ugh. missing value') self.assertIn(member=PyutVisibilityEnum.PUBLIC.value, container=enumValueList, msg='Ugh. missing value')
def read(self, umlObject, file): """ Read data from file format: ```Python class name <<stereotype_optional>> +method([param[:type]]*)[:type_return] +field[:type][=value_initial] ``` for example: ParentClass +strMethod(strParam : str = bogus) : str +intMethod(intParam = 1) : int +floatField : float = 1.0 +booleanField : bool = True Args: umlObject: file: """ className: str = file.readline().strip() pyutClass: PyutClass = umlObject.getPyutObject() pyutClass.setName(className) # process stereotype if present nextStereoType: str = file.readline().strip() if nextStereoType[0:2] == "<<": pyutClass.setStereotype(nextStereoType[2:-2].strip()) nextStereoType = file.readline().strip() methods = [] fields = [] pyutClass.methods = methods pyutClass.fields = fields # process methods and fields visValues: List[str] = PyutVisibilityEnum.values() while True: if nextStereoType == "": break # search visibility if nextStereoType[0] in visValues: visStr = nextStereoType[0] vis: PyutVisibilityEnum = PyutVisibilityEnum.toEnum(visStr) nextStereoType = nextStereoType[1:] else: vis: PyutVisibilityEnum = PyutVisibilityEnum.PUBLIC pos = nextStereoType.find("(") params = [] if pos != -1: # process method name = nextStereoType[0:pos].strip() nextStereoType = nextStereoType[pos + 1:] pos = nextStereoType.find(")") # TODO return typ should be PyutType returnType: str = "" if pos != -1: params = self._findParams(nextStereoType[:pos]) nextStereoType = nextStereoType[pos + 1:] pos = nextStereoType.find(":") if pos != -1: returnType = nextStereoType[pos + 1:].strip() else: returnType = "" method = PyutMethod(name, vis, returnType) method.setParams([PyutParam(x[0], x[1]) for x in params]) methods.append(method) else: # process field field = self._findParams(nextStereoType)[0] if field: fields.append(PyutField(field[0], field[1], visibility=vis)) nextStereoType = file.readline().strip()