def test_split_split_e2bi_patterm_01(self): patt = "FK[_AA]" pw = pc.PatternWrapper(patt) (e2bipattern_parts, part_is_optional) = pw.split_e2bi_patterm(patt) if not e2bipattern_parts == ["FK", "{AA}"]: self.fail() if not part_is_optional == [False, True]: self.fail() patt = "FK[_AA][_BB]" pw = pc.PatternWrapper(patt) (e2bipattern_parts, part_is_optional) = pw.split_e2bi_patterm(patt) if not e2bipattern_parts == ["FK", "{AA}", "{BB}"]: self.fail() if not part_is_optional == [False, True, True]: self.fail()
def test_generate_regex_01(self): patt = 'FK[_<label>]' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) patt = 'FK[_ <label>]' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) patt = 'FK_<nome tabella padre senza prefisso T_>[_ <label>]' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) patt = "FK[_AA]" pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) patt = "FK[_AA/BB]" pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) patt = 'FK_{<sistema sorgente>/<sistema destinazione>/AA/BBB}' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt)
def test_ad_hoc(self): """ testa subito, da soli errori presi altrove""" patt = "T_DMT_<sistema sorgente>/<sistema BI>_{DM/FT/FA/LM}_<label>" pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) if not r == "^T_DMT_([^_]+?)(?:_DM|_FT|_FA|_LM)_(.+)$": self.fail() # NB. non sarebbe corretta patt = 'DBL[<_label>]' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) if not r == "^DBL(_.*)?$": self.fail() patt = 'DBL[_<_label>]' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) if not r == "^DBL(_.*)?$": self.fail() patt = 'DBL_BSC_<sistema sorgente>[<_label>]' pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) if not r == "^DBL_BSC_([^_]+?)(_.*)?$": self.fail() patt = "TS_MTD_<label>_D" pw = pc.PatternWrapper(patt) r = pw.generate_regex(patt) if not r == "^TS_MTD_([^_]+?)_D$": self.fail()
def generate_pattern_wrappers(self, pattern_lines_par = None): """from list of E2BI patterns build the parse objects that contain the objects is needed to check that e2bi pattern against a string """ self._pattern_lines = pattern_lines_par if pattern_lines_par is not None else self._pattern_lines mask_lines = [l.strip() for l in self._pattern_lines.split("\n")] pattern_wrappers_list = [] for l in mask_lines: if len(l) == 0: continue p = pc.PatternWrapper(l) pattern_wrappers_list.append(p) return pattern_wrappers_list
def check(self, p, token ): p = pc.PatternWrapper(p) return p.check_stmt_token(token)