#!/usr/bin/env python

""" Compare the output of two codecs.

(c) Copyright 2005, Marc-Andre Lemburg ([email protected]).

   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])