mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/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
 | 
						|
        print 'Found %i mismatches' % mismatch
 | 
						|
    else:
 | 
						|
        print '-> Codecs are identical.'
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    compare_codecs(sys.argv[1], sys.argv[2])
 |