17db96d56Sopenharmony_ci#!/usr/bin/env python3 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci""" Compare the output of two codecs. 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ci(c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com). 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci Licensed to PSF under a Contributor Agreement. 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci""" 107db96d56Sopenharmony_ciimport sys 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_cidef compare_codecs(encoding1, encoding2): 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ci print('Comparing encoding/decoding of %r and %r' % (encoding1, encoding2)) 157db96d56Sopenharmony_ci mismatch = 0 167db96d56Sopenharmony_ci # Check encoding 177db96d56Sopenharmony_ci for i in range(sys.maxunicode+1): 187db96d56Sopenharmony_ci u = chr(i) 197db96d56Sopenharmony_ci try: 207db96d56Sopenharmony_ci c1 = u.encode(encoding1) 217db96d56Sopenharmony_ci except UnicodeError as reason: 227db96d56Sopenharmony_ci c1 = '<undefined>' 237db96d56Sopenharmony_ci try: 247db96d56Sopenharmony_ci c2 = u.encode(encoding2) 257db96d56Sopenharmony_ci except UnicodeError as reason: 267db96d56Sopenharmony_ci c2 = '<undefined>' 277db96d56Sopenharmony_ci if c1 != c2: 287db96d56Sopenharmony_ci print(' * encoding mismatch for 0x%04X: %-14r != %r' % \ 297db96d56Sopenharmony_ci (i, c1, c2)) 307db96d56Sopenharmony_ci mismatch += 1 317db96d56Sopenharmony_ci # Check decoding 327db96d56Sopenharmony_ci for i in range(256): 337db96d56Sopenharmony_ci c = bytes([i]) 347db96d56Sopenharmony_ci try: 357db96d56Sopenharmony_ci u1 = c.decode(encoding1) 367db96d56Sopenharmony_ci except UnicodeError: 377db96d56Sopenharmony_ci u1 = '<undefined>' 387db96d56Sopenharmony_ci try: 397db96d56Sopenharmony_ci u2 = c.decode(encoding2) 407db96d56Sopenharmony_ci except UnicodeError: 417db96d56Sopenharmony_ci u2 = '<undefined>' 427db96d56Sopenharmony_ci if u1 != u2: 437db96d56Sopenharmony_ci print(' * decoding mismatch for 0x%04X: %-14r != %r' % \ 447db96d56Sopenharmony_ci (i, u1, u2)) 457db96d56Sopenharmony_ci mismatch += 1 467db96d56Sopenharmony_ci if mismatch: 477db96d56Sopenharmony_ci print() 487db96d56Sopenharmony_ci print('Found %i mismatches' % mismatch) 497db96d56Sopenharmony_ci else: 507db96d56Sopenharmony_ci print('-> Codecs are identical.') 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ciif __name__ == '__main__': 537db96d56Sopenharmony_ci compare_codecs(sys.argv[1], sys.argv[2]) 54