diff options
author | Barry Warsaw <barry@python.org> | 2001-06-19 19:08:13 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2001-06-19 19:08:13 (GMT) |
commit | 7069763913b6efaf3560545bfdabc4dbfb4c3d02 (patch) | |
tree | b15b83014128316c847b55acba6ea9b7216791e2 /Lib | |
parent | 9b630a50200e44e16acfe3dee4052b3d0b0677e4 (diff) | |
download | cpython-7069763913b6efaf3560545bfdabc4dbfb4c3d02.zip cpython-7069763913b6efaf3560545bfdabc4dbfb4c3d02.tar.gz cpython-7069763913b6efaf3560545bfdabc4dbfb4c3d02.tar.bz2 |
A unittest-based test for the quopri module.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_quopri.py | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/Lib/test/test_quopri.py b/Lib/test/test_quopri.py new file mode 100644 index 0000000..855f898 --- /dev/null +++ b/Lib/test/test_quopri.py @@ -0,0 +1,112 @@ +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) |