cpython/Lib/test/test_quopri.py

113 lines
2.5 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import test_support
import unittest
from cStringIO import StringIO
from quopri import *
ENCSAMPLE = """\
Here's a bunch of special=20
=A1=A2=A3=A4=A5=A6=A7=A8=A9
=AA=AB=AC=AD=AE=AF=B0=B1=B2=B3
=B4=B5=B6=B7=B8=B9=BA=BB=BC=BD=BE
=BF=C0=C1=C2=C3=C4=C5=C6
=C7=C8=C9=CA=CB=CC=CD=CE=CF
=D0=D1=D2=D3=D4=D5=D6=D7
=D8=D9=DA=DB=DC=DD=DE=DF
=E0=E1=E2=E3=E4=E5=E6=E7
=E8=E9=EA=EB=EC=ED=EE=EF
=F0=F1=F2=F3=F4=F5=F6=F7
=F8=F9=FA=FB=FC=FD=FE=FF
characters... have fun!
"""
# First line ends with a space
DECSAMPLE = """\
Here's a bunch of special
¡¢£¤¥¦§¨©
ª«¬­®¯°±²³
´µ¶·¸¹º»¼½¾
¿ÀÁÂÃÄÅÆ
ÇÈÉÊËÌÍÎÏ
ÐÑÒÓÔÕÖ×
ØÙÚÛÜÝÞß
àáâãäåæç
èéêëìíîï
ðñòóôõö÷
øùúûüýþÿ
characters... have fun!
"""
class QuopriTestCase(unittest.TestCase):
# Each entry is a tuple of (plaintext, encoded string). These strings are
# used in the "quotetabs=0" tests.
STRINGS = (
# Some normal strings
('hello', 'hello'),
('''hello
there
world''', '''hello
there
world'''),
('''hello
there
world
''', '''hello
there
world
'''),
('\201\202\203', '=81=82=83'),
# Add some trailing MUST QUOTE strings
('hello ', 'hello=20'),
('hello\t', 'hello=09'),
# Now some really complex stuff
(DECSAMPLE, ENCSAMPLE),
)
# These are used in the "quotetabs=1" tests.
ESTRINGS = (
('hello world', 'hello=20world'),
('hello\tworld', 'hello=09world'),
)
def test_encodestring(self):
for p, e in self.STRINGS:
self.assert_(encodestring(p) == e)
def test_decodestring(self):
for p, e in self.STRINGS:
self.assert_(decodestring(e) == p)
def test_idempotent_string(self):
for p, e in self.STRINGS:
self.assert_(decodestring(encodestring(e)) == e)
def test_encode(self):
for p, e in self.STRINGS:
infp = StringIO(p)
outfp = StringIO()
encode(infp, outfp, quotetabs=0)
self.assert_(outfp.getvalue() == e)
def test_decode(self):
for p, e in self.STRINGS:
infp = StringIO(e)
outfp = StringIO()
decode(infp, outfp)
self.assert_(outfp.getvalue() == p)
def test_embedded_ws(self):
for p, e in self.ESTRINGS:
self.assert_(encodestring(p, quotetabs=1) == e)
self.assert_(decodestring(e) == p)
test_support.run_unittest(QuopriTestCase)