#!/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])
