Beispiel #1
0
 def test_visit_repeated_word_category_get_dictionary_word(self):
     rpt_node = RepeatNode(True, 1, sre_constants.MAXREPEAT)
     rpt_node.children.extend([
         CategoryNode("word", ""),
     ])
     msg = self.visitor.visit_node(rpt_node)
     self.assertIn(msg.lower(), self.dictionary)
Beispiel #2
0
 def test_visit_repeat_literal_specified_times(self):
     rpt_node = RepeatNode(False, 2, 2)
     rpt_node.children.extend([
         LiteralNode(ord('c'), ""),
     ])
     msg = self.visitor.visit_node(rpt_node)
     self.assertEqual(msg, 'c' * 2)
Beispiel #3
0
def getnode(line):
    line_type = LineType.getLineType(line.strip())
    if line_type == LineType.LITERAL:
        node = LiteralNode(parse_literal(line), line)
    elif line_type == LineType.RANGE:
        r = parse_range(line)
        node = RangeNode(r[0], r[1], line)
    elif line_type == LineType.IN:
        node = InNode(line)
    elif line_type == LineType.REPEAT:
        ranged, minr, maxr = parse_repeat(line.strip())
        node = RepeatNode(ranged, minr, maxr, line)
    elif line_type == LineType.BRANCH:
        node = ChoiceNode(line)
    elif line_type == LineType.OR:
        node = ChoiceNode(line)
    elif line_type == LineType.SUBPATTERN:
        node = GroupNode(line)
    elif line_type == LineType.NEGATE:
        node = NegateNode(line)
    elif line_type == LineType.CATEGORY:
        node = CategoryNode(parse_category(line), line)
    elif line_type == LineType.ANY:
        node = AnyNode(line)
    else:
        node = Node(line)
    return node
Beispiel #4
0
 def test_visit_repeat_get_random_word(self):
     rpt_node = RepeatNode(True, 1, sre_constants.MAXREPEAT)
     in_node = InNode("")
     in_node.children.extend([
         LiteralNode(ord('c'), ""),
     ])
     rpt_node.children.append(in_node)
     msg = self.visitor.visit_node(rpt_node)
     self.assertEqual(msg, 'c' * regex_examples.RANDOM_WORD_LEN)
Beispiel #5
0
 def test_visit_repeat_get_dict_word(self):
     rpt_node = RepeatNode(True, 1, sre_constants.MAXREPEAT)
     in_node = InNode("")
     in_node.children.extend([
         LiteralNode(ord('a'), ""),
     ])
     rpt_node.children.append(in_node)
     msg = self.visitor.visit_node(rpt_node)
     self.assertEqual(msg, "aaaa")
Beispiel #6
0
 def test_visit_repeat_charclass_with_literal_and_range(self):
     rpt_node = RepeatNode(True, 1, sre_constants.MAXREPEAT)
     in_node = InNode("")
     in_node.children.extend([
         LiteralNode(ord('d'), ""),
         RangeNode(ord('e'), ord('g'), ""),
     ])
     rpt_node.children.append(in_node)
     msg = self.visitor.visit_node(rpt_node)
     self.assertEqual(msg, 'gfed')
Beispiel #7
0
 def test_visit_repeat_once_if_child_not_in_and_repetitions_not_specified(
         self):
     rpt_node = RepeatNode(False, 0, sre_constants.MAXREPEAT)
     grp_node = GroupNode()
     grp_node.children.extend([
         LiteralNode(ord('a'), ""),
         LiteralNode(ord('b'), ""),
     ])
     rpt_node.children.append(grp_node)
     msg = self.visitor.visit_node(rpt_node)
     self.assertEqual(msg, 'ab')
Beispiel #8
0
 def test_visit_repeat_skip_negated_characters(self):
     rpt_node = RepeatNode(True, 2, sre_constants.MAXREPEAT)
     in_node = InNode("")
     in_node.children.extend([
         NegateNode(""),
         RangeNode(ord('a'), ord('g'), ""),
         RangeNode(ord('A'), ord('G'), ""),
     ])
     rpt_node.children.append(in_node)
     msg = self.visitor.visit_node(rpt_node)
     self.assertEqual(msg.lower(), 'yxxy')