Convert test_normalization to use unittest.

This commit is contained in:
Collin Winter 2007-04-05 20:08:56 +00:00
parent fe712fb9ca
commit 9405609c17

View file

@ -1,5 +1,6 @@
from test.test_support import (verbose, TestFailed, TestSkipped, verify, from test.test_support import run_unittest, open_urlresource
open_urlresource) import unittest
import sys import sys
import os import os
from unicodedata import normalize from unicodedata import normalize
@ -29,60 +30,65 @@ def unistr(data):
raise RangeError raise RangeError
return u"".join([unichr(x) for x in data]) return u"".join([unichr(x) for x in data])
def test_main(): class NormalizationTest(unittest.TestCase):
part1_data = {} def test_main(self):
for line in open_urlresource(TESTDATAURL): part1_data = {}
if '#' in line: for line in open_urlresource(TESTDATAURL):
line = line.split('#')[0] if '#' in line:
line = line.strip() line = line.split('#')[0]
if not line: line = line.strip()
continue if not line:
if line.startswith("@Part"): continue
part = line.split()[0] if line.startswith("@Part"):
continue part = line.split()[0]
if part == "@Part3": continue
# XXX we don't support PRI #29 yet, so skip these tests for now if part == "@Part3":
continue # XXX we don't support PRI #29 yet, so skip these tests for now
try: continue
c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]] try:
except RangeError: c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]]
# Skip unsupported characters; except RangeError:
# try atleast adding c1 if we are in part1 # Skip unsupported characters;
# try atleast adding c1 if we are in part1
if part == "@Part1":
try:
c1 = unistr(line.split(';')[0])
except RangeError:
pass
else:
part1_data[c1] = 1
continue
# Perform tests
self.failUnless(c2 == NFC(c1) == NFC(c2) == NFC(c3), line)
self.failUnless(c4 == NFC(c4) == NFC(c5), line)
self.failUnless(c3 == NFD(c1) == NFD(c2) == NFD(c3), line)
self.failUnless(c5 == NFD(c4) == NFD(c5), line)
self.failUnless(c4 == NFKC(c1) == NFKC(c2) == \
NFKC(c3) == NFKC(c4) == NFKC(c5),
line)
self.failUnless(c5 == NFKD(c1) == NFKD(c2) == \
NFKD(c3) == NFKD(c4) == NFKD(c5),
line)
# Record part 1 data
if part == "@Part1": if part == "@Part1":
try: part1_data[c1] = 1
c1=unistr(line.split(';')[0])
except RangeError:
pass
else:
part1_data[c1] = 1
continue
if verbose: # Perform tests for all other data
print line for c in range(sys.maxunicode+1):
X = unichr(c)
if X in part1_data:
continue
self.failUnless(X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c)
# Perform tests def test_bug_834676(self):
verify(c2 == NFC(c1) == NFC(c2) == NFC(c3), line) # Check for bug 834676
verify(c4 == NFC(c4) == NFC(c5), line) normalize('NFC', u'\ud55c\uae00')
verify(c3 == NFD(c1) == NFD(c2) == NFD(c3), line)
verify(c5 == NFD(c4) == NFD(c5), line)
verify(c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5),
line)
verify(c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5),
line)
# Record part 1 data
if part == "@Part1":
part1_data[c1] = 1
# Perform tests for all other data def test_main():
for c in range(sys.maxunicode+1): run_unittest(NormalizationTest)
X = unichr(c)
if X in part1_data:
continue
assert X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c
# Check for bug 834676
normalize('NFC',u'\ud55c\uae00')
if __name__ == "__main__": if __name__ == "__main__":
test_main() test_main()