Line | |
---|
1 | #!/usr/bin/env python
|
---|
2 |
|
---|
3 | """ Compare the output of two codecs.
|
---|
4 |
|
---|
5 | (c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com).
|
---|
6 |
|
---|
7 | Licensed to PSF under a Contributor Agreement.
|
---|
8 |
|
---|
9 | """
|
---|
10 | import sys
|
---|
11 |
|
---|
12 | def compare_codecs(encoding1, encoding2):
|
---|
13 |
|
---|
14 | print 'Comparing encoding/decoding of %r and %r' % (encoding1, encoding2)
|
---|
15 | mismatch = 0
|
---|
16 | # Check encoding
|
---|
17 | for i in range(sys.maxunicode):
|
---|
18 | u = unichr(i)
|
---|
19 | try:
|
---|
20 | c1 = u.encode(encoding1)
|
---|
21 | except UnicodeError, reason:
|
---|
22 | c1 = '<undefined>'
|
---|
23 | try:
|
---|
24 | c2 = u.encode(encoding2)
|
---|
25 | except UnicodeError, reason:
|
---|
26 | c2 = '<undefined>'
|
---|
27 | if c1 != c2:
|
---|
28 | print ' * encoding mismatch for 0x%04X: %-14r != %r' % \
|
---|
29 | (i, c1, c2)
|
---|
30 | mismatch += 1
|
---|
31 | # Check decoding
|
---|
32 | for i in range(256):
|
---|
33 | c = chr(i)
|
---|
34 | try:
|
---|
35 | u1 = c.decode(encoding1)
|
---|
36 | except UnicodeError:
|
---|
37 | u1 = u'<undefined>'
|
---|
38 | try:
|
---|
39 | u2 = c.decode(encoding2)
|
---|
40 | except UnicodeError:
|
---|
41 | u2 = u'<undefined>'
|
---|
42 | if u1 != u2:
|
---|
43 | print ' * decoding mismatch for 0x%04X: %-14r != %r' % \
|
---|
44 | (i, u1, u2)
|
---|
45 | mismatch += 1
|
---|
46 | if mismatch:
|
---|
47 | print
|
---|
48 | print 'Found %i mismatches' % mismatch
|
---|
49 | else:
|
---|
50 | print '-> Codecs are identical.'
|
---|
51 |
|
---|
52 | if __name__ == '__main__':
|
---|
53 | compare_codecs(sys.argv[1], sys.argv[2])
|
---|
Note:
See
TracBrowser
for help on using the repository browser.