text: 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')
  