diff options
author | Marc-André Lemburg <mal@egenix.com> | 2000-09-26 16:18:58 (GMT) |
---|---|---|
committer | Marc-André Lemburg <mal@egenix.com> | 2000-09-26 16:18:58 (GMT) |
commit | 6a20ee7dece7af29206bc1283dd76bfdf50ff272 (patch) | |
tree | f3e9808c2afc8fea7826516889b1d68d9be3c521 | |
parent | ba90909f2f66099da57deae81eb77a9a6485d92f (diff) | |
download | cpython-6a20ee7dece7af29206bc1283dd76bfdf50ff272.zip cpython-6a20ee7dece7af29206bc1283dd76bfdf50ff272.tar.gz cpython-6a20ee7dece7af29206bc1283dd76bfdf50ff272.tar.bz2 |
Added test suite for the complete Unicode database. The test previously
only tested a few cases.
-rw-r--r-- | Lib/test/test_unicodedata.py | 86 |
1 files changed, 79 insertions, 7 deletions
diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py index 6ddd077..b604c28 100644 --- a/Lib/test/test_unicodedata.py +++ b/Lib/test/test_unicodedata.py @@ -1,17 +1,89 @@ """ Test script for the unicodedata module. -Written by Marc-Andre Lemburg (mal@lemburg.com). + Written by Marc-Andre Lemburg (mal@lemburg.com). -(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. + (c) Copyright CNRI, All Rights Reserved. NO WARRANTY. """#" -from test_support import verbose -import sys +import sha -# Test Unicode database APIs +def test_methods(): + + h = sha.sha() + for i in range(65536): + char = unichr(i) + data = [ + + # Predicates (single char) + char.isalnum() and u'1' or u'0', + char.isalpha() and u'1' or u'0', + char.isdecimal() and u'1' or u'0', + char.isdigit() and u'1' or u'0', + char.islower() and u'1' or u'0', + char.isnumeric() and u'1' or u'0', + char.isspace() and u'1' or u'0', + char.istitle() and u'1' or u'0', + char.isupper() and u'1' or u'0', + + # Predicates (multiple chars) + (char + u'abc').isalnum() and u'1' or u'0', + (char + u'abc').isalpha() and u'1' or u'0', + (char + u'123').isdecimal() and u'1' or u'0', + (char + u'123').isdigit() and u'1' or u'0', + (char + u'abc').islower() and u'1' or u'0', + (char + u'123').isnumeric() and u'1' or u'0', + (char + u' \t').isspace() and u'1' or u'0', + (char + u'abc').istitle() and u'1' or u'0', + (char + u'ABC').isupper() and u'1' or u'0', + + # Mappings (single char) + char.lower(), + char.upper(), + char.title(), + + # Mappings (multiple chars) + (char + u'abc').lower(), + (char + u'ABC').upper(), + (char + u'abc').title(), + (char + u'ABC').title(), + + ] + h.update(u''.join(data).encode('unicode-internal')) + return h.hexdigest() + +def test_unicodedata(): + + h = sha.sha() + for i in range(65536): + char = unichr(i) + data = [ + # Properties + str(unicodedata.digit(char, -1)), + str(unicodedata.numeric(char, -1)), + str(unicodedata.decimal(char, -1)), + unicodedata.category(char), + unicodedata.bidirectional(char), + unicodedata.decomposition(char), + str(unicodedata.mirrored(char)), + str(unicodedata.combining(char)), + ] + h.update(''.join(data)) + return h.hexdigest() + +### Run tests + +print 'Testing Unicode Database...' +print 'Methods:', +print test_methods() + +# In case unicodedata is not available, this will raise an ImportError, +# but still test the above cases... import unicodedata +print 'Functions:', +print test_unicodedata() -print 'Testing unicodedata module...', +# Some additional checks of the API: +print 'API:', assert unicodedata.digit(u'A',None) is None assert unicodedata.digit(u'9') == 9 @@ -47,4 +119,4 @@ assert unicodedata.combining(u'\uFFFE') == 0 assert unicodedata.combining(u'a') == 0 assert unicodedata.combining(u'\u20e1') == 230 -print 'done.' +print 'ok' |