@@ -129,6 +129,77 @@ def test_push_unicode_character(self):
129129 self .assertEqual (eq .events [0 ].evt , "key" )
130130 self .assertEqual (eq .events [0 ].data , "ч" )
131131
132+ def test_push_unicode_character_as_bytes (self ):
133+ eq = self .make_eventqueue ()
134+ eq .keymap = {}
135+
136+ eq .push ("ч" .encode (eq .encoding , "replace" ))
137+ e = eq .get ()
138+ self .assertEqual (e .evt , "key" )
139+ self .assertEqual (e .data , "ч" )
140+
141+ def test_push_long_unicode_character_as_bytes (self ):
142+ eq = self .make_eventqueue ()
143+ eq .keymap = {}
144+
145+ def _event (evt , data , raw = None ):
146+ r = raw if raw is not None else data .encode (eq .encoding )
147+ e = Event (evt , data , r )
148+ return e
149+
150+ def _push (keys ):
151+ for k in keys :
152+ eq .push (k )
153+
154+ _push ("\x1b [200" )
155+ eq .push ("ñ" .encode (eq .encoding , "replace" ))
156+ _push ("\x1b [201" )
157+
158+ self .assertEqual (eq .get (), _event ("key" , "\x1b " ))
159+ self .assertEqual (eq .get (), _event ("key" , "[" ))
160+ self .assertEqual (eq .get (), _event ("key" , "2" ))
161+ self .assertEqual (eq .get (), _event ("key" , "0" ))
162+ self .assertEqual (eq .get (), _event ("key" , "0" ))
163+
164+ self .assertEqual (eq .get (), _event ("key" , "ñ" , bytearray (b'\xc3 \xb1 ' )))
165+
166+ self .assertEqual (eq .get (), _event ("key" , "\x1b " ))
167+ self .assertEqual (eq .get (), _event ("key" , "[" ))
168+ self .assertEqual (eq .get (), _event ("key" , "2" ))
169+ self .assertEqual (eq .get (), _event ("key" , "0" ))
170+ self .assertEqual (eq .get (), _event ("key" , "1" ))
171+
172+ def test_push_long_unicode_character (self ):
173+ eq = self .make_eventqueue ()
174+ eq .keymap = {}
175+
176+ def _event (evt , data , raw = None ):
177+ r = raw if raw is not None else data .encode (eq .encoding )
178+ e = Event (evt , data , r )
179+ return e
180+
181+ def _push (keys ):
182+ for k in keys :
183+ eq .push (k )
184+
185+ _push ("\x1b [200" )
186+ msg = "'utf-8' codec can't decode byte 0xf1 in position 0: unexpected end of data"
187+ with self .assertRaisesRegex (UnicodeDecodeError , msg ):
188+ eq .push ("ñ" )
189+ _push ("\x1b [201" )
190+
191+ self .assertEqual (eq .get (), _event ("key" , "\x1b " ))
192+ self .assertEqual (eq .get (), _event ("key" , "[" ))
193+ self .assertEqual (eq .get (), _event ("key" , "2" ))
194+ self .assertEqual (eq .get (), _event ("key" , "0" ))
195+ self .assertEqual (eq .get (), _event ("key" , "0" ))
196+
197+ self .assertEqual (eq .get (), _event ("key" , "\x1b " ))
198+ self .assertEqual (eq .get (), _event ("key" , "[" ))
199+ self .assertEqual (eq .get (), _event ("key" , "2" ))
200+ self .assertEqual (eq .get (), _event ("key" , "0" ))
201+ self .assertEqual (eq .get (), _event ("key" , "1" ))
202+
132203
133204@unittest .skipIf (support .MS_WINDOWS , "No Unix event queue on Windows" )
134205class TestUnixEventQueue (EventQueueTestBase , unittest .TestCase ):
0 commit comments