| #!/usr/bin/env python | |
| """ Compare the output of two codecs. | |
| (c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com). | |
| Licensed to PSF under a Contributor Agreement. | |
| """ | |
| import sys | |
| def compare_codecs(encoding1, encoding2): | |
| print 'Comparing encoding/decoding of %r and %r' % (encoding1, encoding2) | |
| mismatch = 0 | |
| # Check encoding | |
| for i in range(sys.maxunicode): | |
| u = unichr(i) | |
| try: | |
| c1 = u.encode(encoding1) | |
| except UnicodeError, reason: | |
| c1 = '<undefined>' | |
| try: | |
| c2 = u.encode(encoding2) | |
| except UnicodeError, reason: | |
| c2 = '<undefined>' | |
| if c1 != c2: | |
| print ' * encoding mismatch for 0x%04X: %-14r != %r' % \ | |
| (i, c1, c2) | |
| mismatch += 1 | |
| # Check decoding | |
| for i in range(256): | |
| c = chr(i) | |
| try: | |
| u1 = c.decode(encoding1) | |
| except UnicodeError: | |
| u1 = u'<undefined>' | |
| try: | |
| u2 = c.decode(encoding2) | |
| except UnicodeError: | |
| u2 = u'<undefined>' | |
| if u1 != u2: | |
| print ' * decoding mismatch for 0x%04X: %-14r != %r' % \ | |
| (i, u1, u2) | |
| mismatch += 1 | |
| if mismatch: | |
| print 'Found %i mismatches' % mismatch | |
| else: | |
| print '-> Codecs are identical.' | |
| if __name__ == '__main__': | |
| compare_codecs(sys.argv[1], sys.argv[2]) |