Ejemplo n.º 1
0
 def test_zero_or_more(self):
     """
     Does it return the kleene star?
     """
     substring = Randomizer.letters()
     text = Randomizer.letters()
     complement = text + Randomizer.letters_complement(substring)
     expression = text + Quantifier.zero_or_more('(' + substring + ')')
     text_1 = text + substring * random.randint(0, 10) + Randomizer.letters()
     self.assertIsNotNone(re.search(expression, complement))
     self.assertIsNotNone(re.search(expression, text_1))
     return
Ejemplo n.º 2
0
    def test_one_or_more(self):
        """
        Does it return the one-or-more metacharachter?
        """
        character = random.choice(string.letters)
        complement = Randomizer.letters_complement(character)

        text = Randomizer.letters() + character * random.randint(1,100) + Randomizer.letters()
        expression = character + '+'
        self.assertIsNone(re.search(expression, complement))
        self.assertIsNotNone(re.search(expression, text))
        return
Ejemplo n.º 3
0
    def test_not(self):
        '''
        Does it convert the string to a non-matching class?
        '''
        sample = Randomizer.letters(maximum=10)
        complement = Randomizer.letters_complement(sample)
        expression = CharacterClass.not_in(sample)
        self.assertEqual(LEFT_BRACKET + '^' + sample + RIGHT_BRACKET,
                         expression)

        self.assertIsNone(re.search(expression, sample))
        self.assertIsNotNone(re.search(expression, complement))
        return
Ejemplo n.º 4
0
    def test_class(self):
        '''
        Does it convert the string to a character class?
        '''
        sample = Randomizer.letters()
        expression = CharacterClass.character_class(sample)
        self.assertEqual(LEFT_BRACKET + sample + RIGHT_BRACKET, expression)
        sub_string = random.choice(sample)
        complement = Randomizer.letters_complement(sample)

        self.assertIsNotNone(re.search(expression, sub_string))
        self.assertIsNone(re.search(expression, complement))
        return
Ejemplo n.º 5
0
    def test_not_followed_by(self):
        """
        Does not_followed_by create a negative lookahead assertion?
        """

        prefix = Randomizer.letters(maximum=5)
        suffix = Randomizer.letters_complement(prefix)
        expr = Group.not_followed_by(suffix)
        text = Randomizer.letters() 
        self.assertEqual(L_PERL_GROUP + '!' + suffix + R_GROUP,
                         expr)

        self.assertIsNone(re.search(text + expr, text + suffix))
        self.assertIsNotNone(re.search(text + expr, text))
        return
Ejemplo n.º 6
0
 def test_m_to_n(self):
     """
     Does it return the expression to match m-to-n repetitions
     """
     m = Randomizer.integer(minimum=5)
     n = Randomizer.integer(minimum=m+1)
     substring = Randomizer.letters()
     quantifier = Quantifier.m_to_n(m,n)
     expression = '(' + substring + ')' + quantifier
     self.assertEqual("{" + str(m) + ',' + str(n) + '}',quantifier)
     text = Randomizer.letters() + substring * Randomizer.integer(m, n)
     complement = (Randomizer.letters_complement(substring) +
                   substring * Randomizer.integer(0,m-1))
     too_many = substring * Randomizer.integer(n+1, n*2)
     self.assertIsNotNone(re.search(expression, text))
     self.assertIsNone(re.search(expression, complement))
     self.assertEqual(re.search(expression, too_many).groups(), (substring,))
     return