@@ -292,6 +292,8 @@ def test_sequence_set(self):
292292 # A scalar is passed through as a string.
293293 self .assertEqual (m ._sequence_set (5 ), '5' )
294294 self .assertEqual (m ._sequence_set ('1:3,7' ), '1:3,7' )
295+ self .assertEqual (m ._sequence_set (b'1:3,7' ), '1:3,7' )
296+ self .assertEqual (m ._sequence_set (bytearray (b'1:3,7' )), '1:3,7' )
295297 # A sequence of numbers and ranges is formatted as a sequence set.
296298 self .assertEqual (m ._sequence_set ([1 , 2 , 5 ]), '1,2,5' )
297299 self .assertEqual (m ._sequence_set ([1 , (3 , 5 ), (8 , '*' )]), '1,3:5,8:*' )
@@ -333,6 +335,7 @@ def test_substitute(self):
333335 r'(\Seen \Answered)' )
334336 # '?s' formats a message sequence set.
335337 self .assertEqual (sub ('?s' , [[1 , (3 , 5 ), (8 , '*' )]]), '1,3:5,8:*' )
338+ self .assertEqual (sub ('?s' , [b'1:3,7' ]), '1:3,7' )
336339 # '??' is a literal '?'.
337340 self .assertEqual (sub ('a?? b' , []), 'a? b' )
338341
@@ -1574,6 +1577,16 @@ def cmd_FETCH(self, tag, args):
15741577 ])
15751578 self .assertEqual (server .args , ['2:4' , '(FLAGS)' ])
15761579
1580+ # A preformatted message set may be passed as bytes.
1581+ typ , data = client .fetch (b'2:4' , '(FLAGS)' )
1582+ self .assertEqual (typ , 'OK' )
1583+ self .assertEqual (data , [
1584+ br'2 (FLAGS (\Seen))' ,
1585+ br'3 (FLAGS (\Seen))' ,
1586+ br'4 (FLAGS (\Seen))' ,
1587+ ])
1588+ self .assertEqual (server .args , ['2:4' , '(FLAGS)' ])
1589+
15771590 # A comma-separated set with an open range up to '*'.
15781591 typ , data = client .fetch ('1,3:*' , '(FLAGS)' )
15791592 self .assertEqual (typ , 'OK' )
0 commit comments