#NEWLINE# def test_regex( self ) : #NEWLINE# #INDENT# class RegexSchema ( Schema ) : #NEWLINE# #INDENT# letter = Regex ( '^[a-z]$' ) #NEWLINE# #UNINDENT# class RegexOptionsSchema ( Schema ) : #NEWLINE# #INDENT# letter = Regex ( '^[a-z]$' , re . IGNORECASE ) #NEWLINE# #UNINDENT# class RegexMessageSchema ( Schema ) : #NEWLINE# #INDENT# letter = Regex ( '^[a-z]$' , regex_message = 'Not a lowercase letter.' ) #NEWLINE# #UNINDENT# class OptionalRegexMessageSchema ( Schema ) : #NEWLINE# #INDENT# letter = Regex ( '^[a-z]$' , regex_message = 'Not a lowercase letter.' , required = False ) #NEWLINE# #UNINDENT# self . assertValid ( RegexSchema ( { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( RegexSchema ( { #NEWLINE# #INDENT# 'letter' : 'A' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( RegexSchema ( { #NEWLINE# #INDENT# 'letter' : '' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( RegexSchema ( { #NEWLINE# #INDENT# 'letter' : 'aa' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertValid ( RegexOptionsSchema ( { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertValid ( RegexOptionsSchema ( { #NEWLINE# #INDENT# 'letter' : 'A' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'letter' : 'A' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( RegexOptionsSchema ( { #NEWLINE# #INDENT# 'letter' : '' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( RegexOptionsSchema ( { #NEWLINE# #INDENT# 'letter' : 'aa' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertValid ( RegexMessageSchema ( { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) #NEWLINE# schema = RegexMessageSchema ( { #NEWLINE# #INDENT# 'letter' : '' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( schema , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertEqual ( schema . field_errors [ 'letter' ] , 'This field is required.' ) #NEWLINE# schema = RegexMessageSchema ( { #NEWLINE# #INDENT# 'letter' : 'aa' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( schema , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertEqual ( schema . field_errors [ 'letter' ] , 'Not a lowercase letter.' ) #NEWLINE# self . assertValid ( OptionalRegexMessageSchema ( { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'letter' : 'a' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertValid ( OptionalRegexMessageSchema ( { #NEWLINE# #INDENT# 'letter' : '' , #NEWLINE# #UNINDENT# } ) , { #NEWLINE# #INDENT# 'letter' : '' , #NEWLINE# #UNINDENT# } ) #NEWLINE# schema = OptionalRegexMessageSchema ( { #NEWLINE# #INDENT# 'letter' : 'aa' , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertInvalid ( schema , { #NEWLINE# #INDENT# 'field-errors' : [ 'letter' ] , #NEWLINE# #UNINDENT# } ) #NEWLINE# self . assertEqual ( schema . field_errors [ 'letter' ] , 'Not a lowercase letter.' )