@@ -914,6 +914,51 @@ def test_not_literal(self):
914914 self .assertEqual (re .search (r"\s([^a])" , " b" ).group (1 ), "b" )
915915 self .assertEqual (re .search (r"\s([^a]*)" , " bb" ).group (1 ), "bb" )
916916
917+ def test_possible_set_operations (self ):
918+ s = bytes (range (128 )).decode ()
919+ with self .assertWarns (FutureWarning ):
920+ p = re .compile (r'[0-9--1]' )
921+ self .assertEqual (p .findall (s ), list ('-./0123456789' ))
922+ self .assertEqual (re .findall (r'[--1]' , s ), list ('-./01' ))
923+ with self .assertWarns (FutureWarning ):
924+ p = re .compile (r'[%--1]' )
925+ self .assertEqual (p .findall (s ), list ("%&'()*+,-1" ))
926+ with self .assertWarns (FutureWarning ):
927+ p = re .compile (r'[%--]' )
928+ self .assertEqual (p .findall (s ), list ("%&'()*+,-" ))
929+
930+ with self .assertWarns (FutureWarning ):
931+ p = re .compile (r'[0-9&&1]' )
932+ self .assertEqual (p .findall (s ), list ('&0123456789' ))
933+ with self .assertWarns (FutureWarning ):
934+ p = re .compile (r'[\d&&1]' )
935+ self .assertEqual (p .findall (s ), list ('&0123456789' ))
936+ self .assertEqual (re .findall (r'[&&1]' , s ), list ('&1' ))
937+
938+ with self .assertWarns (FutureWarning ):
939+ p = re .compile (r'[0-9||a]' )
940+ self .assertEqual (p .findall (s ), list ('0123456789a|' ))
941+ with self .assertWarns (FutureWarning ):
942+ p = re .compile (r'[\d||a]' )
943+ self .assertEqual (p .findall (s ), list ('0123456789a|' ))
944+ self .assertEqual (re .findall (r'[||1]' , s ), list ('1|' ))
945+
946+ with self .assertWarns (FutureWarning ):
947+ p = re .compile (r'[0-9~~1]' )
948+ self .assertEqual (p .findall (s ), list ('0123456789~' ))
949+ with self .assertWarns (FutureWarning ):
950+ p = re .compile (r'[\d~~1]' )
951+ self .assertEqual (p .findall (s ), list ('0123456789~' ))
952+ self .assertEqual (re .findall (r'[~~1]' , s ), list ('1~' ))
953+
954+ with self .assertWarns (FutureWarning ):
955+ p = re .compile (r'[[0-9]|]' )
956+ self .assertEqual (p .findall (s ), list ('0123456789[]' ))
957+
958+ with self .assertWarns (FutureWarning ):
959+ p = re .compile (r'[[:digit:]|]' )
960+ self .assertEqual (p .findall (s ), list (':[]dgit' ))
961+
917962 def test_search_coverage (self ):
918963 self .assertEqual (re .search (r"\s(b)" , " b" ).group (1 ), "b" )
919964 self .assertEqual (re .search (r"a\s" , "a " ).group (0 ), "a " )
@@ -932,7 +977,7 @@ def assertMatch(self, pattern, text, match=None, span=None,
932977 self .assertEqual (m .group (), match )
933978 self .assertEqual (m .span (), span )
934979
935- LITERAL_CHARS = string .ascii_letters + string .digits + '!"%& \' ,/:;<=>@_`~ '
980+ LITERAL_CHARS = string .ascii_letters + string .digits + '!"%\' ,/:;<=>@_`'
936981
937982 def test_re_escape (self ):
938983 p = '' .join (chr (i ) for i in range (256 ))
0 commit comments