summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_charmapcodec.py
blob: 21251fba8ac1eff518e9557b9e94c120e2f982bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
""" Python Character Mapping Codec test

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

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