Fiddled things so that test_normalization is expected to be skipped if

and only if the test input file doesn't exist.
This commit is contained in:
Tim Peters 2002-11-24 18:53:11 +00:00
parent 65730a4de8
commit 1b445d3fcf
2 changed files with 60 additions and 39 deletions

View file

@ -1,11 +1,10 @@
from test.test_support import verbose, TestFailed, TestSkipped, verify
import sys
import os
from unicodedata import normalize
try:
data = open("NormalizationTest.txt", "r").readlines()
except IOError:
raise TestSkipped("NormalizationTest.txt not found, download from "
"http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt")
TESTDATAFILE = "NormalizationTest.txt"
skip_expected = not os.path.exists(TESTDATAFILE)
class RangeError:
pass
@ -29,40 +28,52 @@ def unistr(data):
raise RangeError
return u"".join([unichr(x) for x in data])
part1_data = {}
for line in data:
if '#' in line:
line = line.split('#')[0]
line = line.strip()
if not line:
continue
if line.startswith("@Part"):
part = line
continue
try:
c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]]
except RangeError:
# Skip unsupported characters
continue
def test_main():
if skip_expected:
raise TestSkipped(TESTDATAFILE + " not found, download from " +
"http://www.unicode.org/Public/UNIDATA/" + TESTDATAFILE)
if verbose:
print line
data = open(TESTDATAFILE).readlines()
# Perform tests
verify(c2 == NFC(c1) == NFC(c2) == NFC(c3), line)
verify(c4 == NFC(c4) == NFC(c5), line)
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)
part1_data = {}
for line in data:
if '#' in line:
line = line.split('#')[0]
line = line.strip()
if not line:
continue
if line.startswith("@Part"):
part = line
continue
try:
c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]]
except RangeError:
# Skip unsupported characters
continue
# Record part 1 data
if part == "@Part1":
part1_data[c1] = 1
if verbose:
print line
# Perform tests for all other data
for c in range(sys.maxunicode+1):
X = unichr(c)
if X in part1_data:
continue
assert X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c
# Perform tests
verify(c2 == NFC(c1) == NFC(c2) == NFC(c3), line)
verify(c4 == NFC(c4) == NFC(c5), line)
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
for c in range(sys.maxunicode+1):
X = unichr(c)
if X in part1_data:
continue
assert X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c
if __name__ == "__main__":
test_main()