From ef34274d3bec2ac513f6e67bca9eb2ecda5a0cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lemburg?= Date: Wed, 10 Jan 2001 10:21:11 +0000 Subject: [PATCH] Moved the test codec definition to a new module and updated the test and codec to test all charmap codec features. As side-effect of moving the test codec into a new module, the encodings package codec import mechanism is checked as well. --- Lib/test/output/test_charmapcodec | 15 ++++++ Lib/test/test_charmapcodec.py | 87 ++++++++++++------------------- Lib/test/testcodec.py | 49 +++++++++++++++++ 3 files changed, 97 insertions(+), 54 deletions(-) create mode 100644 Lib/test/testcodec.py diff --git a/Lib/test/output/test_charmapcodec b/Lib/test/output/test_charmapcodec index 9b1589403da..646ccd3469b 100644 --- a/Lib/test/output/test_charmapcodec +++ b/Lib/test/output/test_charmapcodec @@ -1 +1,16 @@ test_charmapcodec +u'abc' == u'abc': OK +u'abcdef' == u'abcdef': OK +u'defabc' == u'defabc': OK +u'dabcf' == u'dabcf': OK +u'dabcfabc' == u'dabcfabc': OK +'abc' == 'abc': OK +'abcdef' == 'abcdef': OK +'defabc' == 'defabc': OK +'dabcf' == 'dabcf': OK +'dabcfabc' == 'dabcfabc': OK +u'def' == u'def': OK +u'def' == u'def': OK +u'df' == u'df': OK +u'df' == u'df': OK +\001 maps to undefined: OK diff --git a/Lib/test/test_charmapcodec.py b/Lib/test/test_charmapcodec.py index 21251fba8ac..ca33cdb23f5 100644 --- a/Lib/test/test_charmapcodec.py +++ b/Lib/test/test_charmapcodec.py @@ -1,65 +1,44 @@ -""" Python Character Mapping Codec test +""" Python character mapping codec test + +This uses the test codec in testcodec.py and thus also tests the +encodings package lookup scheme. Written by Marc-Andre Lemburg (mal@lemburg.com). (c) Copyright 2000 Guido van Rossum. """#" -import codecs - -### Codec APIs - -class Codec(codecs.Codec): - - def encode(self,input,errors='strict'): - - return codecs.charmap_encode(input,errors,encoding_map) - - def decode(self,input,errors='strict'): - - return codecs.charmap_decode(input,errors,decoding_map) - -class StreamWriter(Codec,codecs.StreamWriter): - pass - -class StreamReader(Codec,codecs.StreamReader): - pass - -### encodings module API - -def getregentry(): - - return (Codec().encode,Codec().decode,StreamReader,StreamWriter) - -### Decoding Map - -decoding_map = codecs.make_identity_dict(range(256)) -decoding_map.update({ - 0x0078: u"abc", - "abc": 0x0078, -}) - -### Encoding Map - -encoding_map = {} -for k,v in decoding_map.items(): - encoding_map[v] = k - - -### Tests def check(a, b): if a != b: print '*** check failed: %s != %s' % (repr(a), repr(b)) - -check(unicode('abc', 'mycp'), u'abc') -check(unicode('xdef', 'mycp'), u'abcdef') -check(unicode('defx', 'mycp'), u'defabc') -check(unicode('dxf', 'mycp'), u'dabcf') -check(unicode('dxfx', 'mycp'), u'dabcfabc') + else: + print '%s == %s: OK' % (repr(a), repr(b)) -check(u'abc'.encode('mycp'), 'abc') -check(u'xdef'.encode('mycp'), 'abcdef') -check(u'defx'.encode('mycp'), 'defabc') -check(u'dxf'.encode('mycp'), 'dabcf') -check(u'dxfx'.encode('mycp'), 'dabcfabc') +# test codec's full path name (see test/testcodec.py) +codecname = 'testcodec' + +check(unicode('abc', codecname), u'abc') +check(unicode('xdef', codecname), u'abcdef') +check(unicode('defx', codecname), u'defabc') +check(unicode('dxf', codecname), u'dabcf') +check(unicode('dxfx', codecname), u'dabcfabc') + +check(u'abc'.encode(codecname), 'abc') +check(u'xdef'.encode(codecname), 'abcdef') +check(u'defx'.encode(codecname), 'defabc') +check(u'dxf'.encode(codecname), 'dabcf') +check(u'dxfx'.encode(codecname), 'dabcfabc') + +check(unicode('ydef', codecname), u'def') +check(unicode('defy', codecname), u'def') +check(unicode('dyf', codecname), u'df') +check(unicode('dyfy', codecname), u'df') + +try: + unicode('abc\001', codecname) +except UnicodeError: + print '\\001 maps to undefined: OK' +else: + print '*** check failed: \\001 does not map to undefined' + diff --git a/Lib/test/testcodec.py b/Lib/test/testcodec.py new file mode 100644 index 00000000000..0cf9b07df04 --- /dev/null +++ b/Lib/test/testcodec.py @@ -0,0 +1,49 @@ +""" Test Codecs (used by test_charmapcodec) + +Written by Marc-Andre Lemburg (mal@lemburg.com). + +(c) Copyright 2000 Guido van Rossum. + +"""#" +import codecs + +### Codec APIs + +class Codec(codecs.Codec): + + def encode(self,input,errors='strict'): + + return codecs.charmap_encode(input,errors,encoding_map) + + def decode(self,input,errors='strict'): + + return codecs.charmap_decode(input,errors,decoding_map) + +class StreamWriter(Codec,codecs.StreamWriter): + pass + +class StreamReader(Codec,codecs.StreamReader): + pass + +### encodings module API + +def getregentry(): + + return (Codec().encode,Codec().decode,StreamReader,StreamWriter) + +### Decoding Map + +decoding_map = codecs.make_identity_dict(range(256)) +decoding_map.update({ + 0x78: u"abc", # 1-n decoding mapping + "abc": 0x0078,# 1-n encoding mapping + 0x01: None, # decoding mapping to + 0x79: u"", # decoding mapping to +}) + +### Encoding Map + +encoding_map = {} +for k,v in decoding_map.items(): + encoding_map[v] = k +