diff --git a/config.txt b/config.txt index 748b11e..32a818a 100644 --- a/config.txt +++ b/config.txt @@ -3,4 +3,4 @@ HEIGHT=100 ENTRY=0,0 EXIT=19,14 OUTPUT_FILE=maze.txt -PERFECT=True \ No newline at end of file +PERFECT=Truee \ No newline at end of file diff --git a/src/parsing/Parsing.py b/src/parsing/Parsing.py index 7d66878..ca1cf8e 100644 --- a/src/parsing/Parsing.py +++ b/src/parsing/Parsing.py @@ -1,6 +1,4 @@ class DataMaze: - def __init__(self) -> None: - pass @staticmethod def get_data(name_file: str) -> str: @@ -14,5 +12,74 @@ class DataMaze: return data @staticmethod - def transform_data(data: str): - pass + def transform_data(data: str) -> dict: + tmp = data.split("\n") + tmp2 = [ + value.split("=", 1) for value in tmp + ] + data_t = { + value[0]: value[1] for value in tmp2 + } + return data_t + + @staticmethod + def verif_key_data(data: dict) -> dict: + key_test = { + "WIDTH", "HEIGHT", "ENTRY", "EXIT", "OUTPUT_FILE", "PERFECT" + } + set_key = { + key for key in data.keys() + } + try: + res_key = {} + if len(set_key) != len(key_test): + raise Exception("Missing some data the len do not correspond") + res_key = {key for key in set_key if key not in key_test} + if len(res_key) != 0: + raise Exception("Some Key " + f"do not correspond the keys: {res_key}") + return data + except Exception as e: + print(f"{e}") + exit() + + @staticmethod + def verif_value_data(data: dict): + key_int = {"WIDTH", "HEIGHT"} + key_tuple = {"ENTRY", "EXIT"} + key_bool = {"PERFECT"} + try: + res: dict = {} + for key in key_int: + res.update({key: int(data[key])}) + for key in key_tuple: + res.update({key: DataMaze.convert_tuple(data[key])}) + for key in key_bool: + res.update({key: DataMaze.convert_bool(data[key])}) + return res + except ValueError as e: + print("Error on the method verif_value_data" + f" in the class DataMaze: {e}") + + @staticmethod + def convert_tuple(data: str) -> tuple: + try: + data_t = data.split(",") + x, y = data_t + tup = (int(x), int(y)) + return tup + except ValueError as e: + print(f"On the convert Tuple: {e}") + exit() + + @staticmethod + def convert_bool(data: str) -> bool: + try: + if data != "True" and data != "False": + raise ValueError("This is not True or False") + if data == "True": + return True + return False + except ValueError as e: + print(f"Error on the convert_bool in class DataMaze: {e}") + exit() diff --git a/test/test_parsing.py b/test/test_parsing.py index 65404eb..df6c6d7 100644 --- a/test/test_parsing.py +++ b/test/test_parsing.py @@ -3,7 +3,11 @@ from parsing.Parsing import DataMaze def main() -> None: print("Unit Testing for parsing:") - DataMaze.get_data("config.txt") + data = DataMaze.get_data("config.txt") + data_t = DataMaze.transform_data(data) + data_t = DataMaze.verif_key_data(data_t) + data_t = DataMaze.verif_value_data(data_t) + print(data_t) if __name__ == "__main__":