1010#
1111
1212import os
13+ import string
1314import sys
1415import tempfile
1516import unittest
@@ -399,6 +400,55 @@ def test_update_lines_cols(self):
399400
400401class TestAscii (unittest .TestCase ):
401402
403+ def test_controlnames (self ):
404+ for name in curses .ascii .controlnames :
405+ self .assertTrue (hasattr (curses .ascii , name ), name )
406+
407+ def test_ctypes (self ):
408+ def check (func , expected ):
409+ with self .subTest (ch = c , func = func ):
410+ self .assertEqual (func (i ), expected )
411+ self .assertEqual (func (c ), expected )
412+
413+ for i in range (256 ):
414+ c = chr (i )
415+ b = bytes ([i ])
416+ check (curses .ascii .isalnum , b .isalnum ())
417+ check (curses .ascii .isalpha , b .isalpha ())
418+ check (curses .ascii .isdigit , b .isdigit ())
419+ check (curses .ascii .islower , b .islower ())
420+ check (curses .ascii .isspace , b .isspace ())
421+ check (curses .ascii .isupper , b .isupper ())
422+
423+ check (curses .ascii .isascii , i < 128 )
424+ check (curses .ascii .ismeta , i >= 128 )
425+ check (curses .ascii .isctrl , i < 32 )
426+ check (curses .ascii .iscntrl , i < 32 or i == 127 )
427+ check (curses .ascii .isblank , c in ' \t ' )
428+ check (curses .ascii .isgraph , 32 < i <= 126 )
429+ check (curses .ascii .isprint , 32 <= i <= 126 )
430+ check (curses .ascii .ispunct , c in string .punctuation )
431+ check (curses .ascii .isxdigit , c in string .hexdigits )
432+
433+ def test_ascii (self ):
434+ ascii = curses .ascii .ascii
435+ self .assertEqual (ascii ('\xc1 ' ), 'A' )
436+ self .assertEqual (ascii ('A' ), 'A' )
437+ self .assertEqual (ascii (ord ('\xc1 ' )), ord ('A' ))
438+
439+ def test_ctrl (self ):
440+ ctrl = curses .ascii .ctrl
441+ self .assertEqual (ctrl ('J' ), '\n ' )
442+ self .assertEqual (ctrl ('\n ' ), '\n ' )
443+ self .assertEqual (ctrl ('@' ), '\0 ' )
444+ self .assertEqual (ctrl (ord ('J' )), ord ('\n ' ))
445+
446+ def test_alt (self ):
447+ alt = curses .ascii .alt
448+ self .assertEqual (alt ('\n ' ), '\x8a ' )
449+ self .assertEqual (alt ('A' ), '\xc1 ' )
450+ self .assertEqual (alt (ord ('A' )), 0xc1 )
451+
402452 def test_unctrl (self ):
403453 unctrl = curses .ascii .unctrl
404454 self .assertEqual (unctrl ('a' ), 'a' )
@@ -408,9 +458,13 @@ def test_unctrl(self):
408458 self .assertEqual (unctrl ('\x7f ' ), '^?' )
409459 self .assertEqual (unctrl ('\n ' ), '^J' )
410460 self .assertEqual (unctrl ('\0 ' ), '^@' )
461+ self .assertEqual (unctrl (ord ('A' )), 'A' )
462+ self .assertEqual (unctrl (ord ('\n ' )), '^J' )
411463 # Meta-bit characters
412464 self .assertEqual (unctrl ('\x8a ' ), '!^J' )
413465 self .assertEqual (unctrl ('\xc1 ' ), '!A' )
466+ self .assertEqual (unctrl (ord ('\x8a ' )), '!^J' )
467+ self .assertEqual (unctrl (ord ('\xc1 ' )), '!A' )
414468
415469
416470if __name__ == '__main__' :
0 commit comments