39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import unittest
|
|
import re
|
|
|
|
from mongoengine.base.utils import LazyRegexCompiler
|
|
|
|
signal_output = []
|
|
|
|
|
|
class LazyRegexCompilerTest(unittest.TestCase):
|
|
|
|
def test_lazy_regex_compiler_verify_laziness_of_descriptor(self):
|
|
class UserEmail(object):
|
|
EMAIL_REGEX = LazyRegexCompiler('@', flags=32)
|
|
|
|
descriptor = UserEmail.__dict__['EMAIL_REGEX']
|
|
self.assertIsNone(descriptor._compiled_regex)
|
|
|
|
regex = UserEmail.EMAIL_REGEX
|
|
self.assertEqual(regex, re.compile('@', flags=32))
|
|
self.assertEqual(regex.search('user@domain.com').group(), '@')
|
|
|
|
user_email = UserEmail()
|
|
self.assertIs(user_email.EMAIL_REGEX, UserEmail.EMAIL_REGEX)
|
|
|
|
def test_lazy_regex_compiler_verify_cannot_set_descriptor_on_instance(self):
|
|
class UserEmail(object):
|
|
EMAIL_REGEX = LazyRegexCompiler('@')
|
|
|
|
user_email = UserEmail()
|
|
with self.assertRaises(AttributeError):
|
|
user_email.EMAIL_REGEX = re.compile('@')
|
|
|
|
def test_lazy_regex_compiler_verify_can_override_class_attr(self):
|
|
class UserEmail(object):
|
|
EMAIL_REGEX = LazyRegexCompiler('@')
|
|
|
|
UserEmail.EMAIL_REGEX = re.compile('cookies')
|
|
self.assertEqual(UserEmail.EMAIL_REGEX.search('Cake & cookies').group(), 'cookies')
|