Esempio n. 1
0
    def __init__(self):
        super(Xeger, self).__init__()
        self._cache = dict()
        self._categories = {
            "category_digit": lambda: self._alphabets['digits'],
            "category_not_digit": lambda: self._alphabets['nondigits'],
            "category_space": lambda: self._alphabets['whitespace'],
            "category_not_space": lambda: self._alphabets['nonwhitespace'],
            "category_word": lambda: self._alphabets['word'],
            "category_not_word": lambda: self._alphabets['nonword'],
        }

        self._cases = {
            "literal": lambda x: unichr(x),
            "not_literal": lambda x: choice(
                string.printable.replace(unichr(x), '')),
            "at": lambda x: '',
            "in": lambda x: self._handle_in(x),
            "any": lambda x: self.printable(1, exclude='\n'),
            "range": lambda x: [unichr(i) for i in xrange(x[0], x[1] + 1)],
            "category": lambda x: self._categories[x](),
            'branch': lambda x: ''.join(self._handle_state(i) for
                                        i in choice(x[1])),
            "subpattern": lambda x: self._handle_group(x),
            "assert": lambda x: ''.join(self._handle_state(i) for i in x[1]),
            "assert_not": lambda x: '',
            "groupref": lambda x: self._cache[x],
            'min_repeat': lambda x: self._handle_repeat(*x),
            'max_repeat': lambda x: self._handle_repeat(*x),
            'negate': lambda x: [False],
        }
Esempio n. 2
0
 def _handle_in(self, value):
     candidates = list(chain(*(self._handle_state(i) for i in value)))
     if candidates[0] is False:
         candidates = set(string.printable).difference(candidates[1:])
         return choice(list(candidates))
     else:
         return choice(candidates)
Esempio n. 3
0
 def _handle_in(self, value):
     candidates = list(chain(*(self._handle_state(i) for
                               i in value)))
     if candidates[0] is False:
         candidates = set(string.printable).difference(candidates[1:])
         return choice(list(candidates))
     else:
         return choice(candidates)
Esempio n. 4
0
    def __init__(self):
        super(Xeger, self).__init__()
        self._cache = dict()
        self._categories = {
            "category_digit": lambda: self._alphabets['digits'],
            "category_not_digit": lambda: self._alphabets['nondigits'],
            "category_space": lambda: self._alphabets['whitespace'],
            "category_not_space": lambda: self._alphabets['nonwhitespace'],
            "category_word": lambda: self._alphabets['word'],
            "category_not_word": lambda: self._alphabets['nonword'],
        }

        self._cases = {
            "literal":
            lambda x: unichr(x),
            "not_literal":
            lambda x: choice(string.printable.replace(unichr(x), '')),
            "at":
            lambda x: '',
            "in":
            lambda x: self._handle_in(x),
            "any":
            lambda x: self.printable(1, exclude='\n'),
            "range":
            lambda x: [unichr(i) for i in xrange(x[0], x[1] + 1)],
            "category":
            lambda x: self._categories[x](),
            'branch':
            lambda x: ''.join(self._handle_state(i) for i in choice(x[1])),
            "subpattern":
            lambda x: self._handle_group(x),
            "assert":
            lambda x: ''.join(self._handle_state(i) for i in x[1]),
            "assert_not":
            lambda x: '',
            "groupref":
            lambda x: self._cache[x],
            'min_repeat':
            lambda x: self._handle_repeat(*x),
            'max_repeat':
            lambda x: self._handle_repeat(*x),
            'negate':
            lambda x: [False],
        }
Esempio n. 5
0
 def test_choice(self):
     population = [0, 1, 2, 3, 4, 5]
     self.assertTrue(utility.choice(population) in population)
Esempio n. 6
0
 def test_choice(self):
     population = [0, 1, 2, 3, 4, 5]
     self.assertTrue(utility.choice(population) in population)