exrex/tests.py

44 lines
1.2 KiB
Python

from exrex import generate, count, getone
from re import match
RS = {'[ab][cd]': ['ac', 'ad', 'bc', 'bd']
,'[12]{1,2}': ['1', '2', '11', '12', '21', '22']
,'((hai){2}|world)!': ['haihai!', 'world!']
,'[ab]{1,3}': ['a', 'b', 'aa', 'ab', 'ba', 'bb', 'aaa', 'aab', 'aba', 'abb', 'baa', 'bab', 'bba', 'bbb']
,'\d': map(str, range(0, 10))
,'a[b]?(c){0,1}': ['a', 'ac', 'ab', 'abc']
,'(a(b(c(d(e(f))))))': ['abcdef']
,'(a(b(c(d(e(f){1,2}))))){1,2}': ['abcdef', 'abcdeff', 'abcdefabcdef', 'abcdefabcdeff', 'abcdeffabcdef', 'abcdeffabcdeff']
}
BIGS = ['^a*$'
,'^[a-zA-Z]+$'
,'^(foo){3,}$'
]
def gen_test():
for regex, result in RS.items():
assert list(generate(regex)) == result
def count_test():
for regex, result in RS.items():
assert count(regex) == len(result)
def getone_test():
for regex,_ in RS.items():
assert match(regex, getone(regex))
for regex in BIGS:
assert match(regex, getone(regex))
if __name__ == '__main__':
gen_test()
print('[+] generation test passed')
count_test()
print('[+] length test passed')
getone_test()
print('[+] random generation test passed')