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)