コード例 #1
0
ファイル: test_urtext.py プロジェクト: andrewhead/StackSkim
class UrtestVisitorTest(unittest.TestCase):

    def setUp(self):
        dictionary = ["aaaa", "bbbb", "gfed", "yxxy"]
        self.visitor = UrtextVisitor(dictionary, messy_words=False)

    def test_visit_literal(self):
        lit_node = LiteralNode(ord('a'), "")
        msg = self.visitor.visit(lit_node)
        self.assertEqual(msg, 'a')

    def test_visit_in(self):
        in_node = InNode("")
        in_node.children.extend([
            LiteralNode(ord('a'), "")
        ])
        msg = self.visitor.visit(in_node)
        self.assertEqual(msg, "a")

    def test_visit_in_word_category(self):
        in_node = InNode("")
        in_node.children.extend([
            CategoryNode("word", ""),
        ])
        msg = self.visitor.visit(in_node)
        self.assertIn(msg, "".join([string.digits, string.ascii_letters]))

    def test_visit_in_space_category(self):
        in_node = InNode("")
        in_node.children.extend([
            CategoryNode("space", ""),
        ])
        msg = self.visitor.visit(in_node)
        self.assertIn(msg, string.whitespace)

    def test_visit_in_digit_category(self):
        in_node = InNode("")
        in_node.children.extend([
            CategoryNode("digit", ""),
        ])
        msg = self.visitor.visit(in_node)
        self.assertIn(msg, string.digits)

    def test_visit_branch_random_child(self):
        br_node = BranchNode("")
        choice1 = ChoiceNode("")
        choice1.children.extend([LiteralNode(ord('a'), "")])
        choice2 = ChoiceNode("")
        choice2.children.extend([LiteralNode(ord('b'), "")])
        br_node.children.extend([choice1, choice2])
        # br_node.choice = 0
        with mock.patch('random.choice', return_value=choice1):
            msg = self.visitor.visit(br_node)
            self.assertEqual(msg, 'a')
        with mock.patch('random.choice', return_value=choice2):
            msg = self.visitor.visit(br_node)
            self.assertEqual(msg, 'b')
コード例 #2
0
ファイル: test_urtext.py プロジェクト: andrewhead/StackSkim
 def setUp(self):
     dictionary = ["aaaa", "bbbb", "gfed", "yxxy"]
     self.visitor = UrtextVisitor(dictionary, messy_words=False)
コード例 #3
0
ファイル: test_urtext.py プロジェクト: andrewhead/StackSkim
class UrtextRepeatsText(unittest.TestCase):

    def setUp(self):
        dictionary = ["aaaa", "bbbb", "gfed", "yxxy"]
        self.visitor = UrtextVisitor(dictionary, messy_words=False)

    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(rpt_node)
        self.assertEqual(msg, 'c' * 2)

    def test_visit_repeat_skip_negated_characters(self):
        rpt_node = RepeatNode(True, 2, None)
        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(rpt_node)
        self.assertEqual(msg.lower(), 'yxxy')

    def test_visit_repeat_get_dict_word(self):
        rpt_node = RepeatNode(True, 1)
        in_node = InNode("")
        in_node.children.extend([
            LiteralNode(ord('a'), ""),
        ])
        rpt_node.children.append(in_node)
        msg = self.visitor.visit(rpt_node)
        self.assertEqual(msg, "aaaa")

    def test_visit_repeat_get_random_word(self):
        rpt_node = RepeatNode(True, 1)
        in_node = InNode("")
        in_node.children.extend([
            LiteralNode(ord('c'), ""),
        ])
        rpt_node.children.append(in_node)
        msg = self.visitor.visit(rpt_node)
        self.assertEqual(msg, 'c' * regex_examples.RANDOM_WORD_LEN)

    def test_visit_repeat_get_dict_word_case_changed(self):
        rpt_node = RepeatNode(True, 1)
        in_node = InNode("")
        in_node.children.extend([
            LiteralNode(ord('X'), ""),
            LiteralNode(ord('y'), ""),
        ])
        rpt_node.children.append(in_node)
        msg = self.visitor.visit(rpt_node)
        self.assertEqual(msg, "yXXy")

    def test_visit_repeat_charclass_with_literal_and_range(self):
        rpt_node = RepeatNode(True, 1)
        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(rpt_node)
        self.assertEqual(msg, 'gfed')