summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMarc-André Lemburg <mal@egenix.com>2000-09-26 16:18:58 (GMT)
committerMarc-André Lemburg <mal@egenix.com>2000-09-26 16:18:58 (GMT)
commit6a20ee7dece7af29206bc1283dd76bfdf50ff272 (patch)
treef3e9808c2afc8fea7826516889b1d68d9be3c521 /Lib
parentba90909f2f66099da57deae81eb77a9a6485d92f (diff)
downloadcpython-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.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_unicodedata.py86
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'