#! /usr/bin/python2.3 -u # escapeTeXt_test.py # Do unit testing of the escapeTeXt routines # 2006-Aug-25 Jim Hefferon import re import unittest from escapeTeXt import * class escapetext_test(unittest.TestCase): """Test the escapetext class """ def test_generic(self): # sanity check s="Hello, World!" et=escapetext(s) self.failUnlessEqual(s, et.output()) # does it substitute at all? s="abc $ def" t="abc \\$ def" self.failUnlessEqual(t, escapetext(s).output()) # bunch of routine substitutions expected=[("abc { def","abc \\{ def"), ("abc } def","abc \\} def"), ("abc % def","abc \\% def"), ("abc _ def","abc \\_ def"), ("abc & def","abc \\& def"), ("abc # def","abc \\# def"), ("abc < def","abc {\\textless} def"), ("abc > def","abc {\\textgreater} def"), ] for (s,t) in expected: self.failUnlessEqual(t, escapetext(s).output()) # does it substitute twice on one row? s="abc $ def % ghi" t="abc \\$ def \\% ghi" self.failUnlessEqual(t, escapetext(s).output()) # backslash s="abc \ def" t="abc {\\textbackslash} def" self.failUnlessEqual(t, escapetext(s).output()) # single quotes s="abc 'def' ghi" t="abc `def' ghi" self.failUnlessEqual(t, escapetext(s).output()) # single quote next to double quote s="\"'abc'\" def" t="``\\,`abc'\\,'' def" self.failUnlessEqual(t, escapetext(s).output()) def test_refinements(self): # single quote next to double quote s="look on p. 23." t="look on p.\\,23." self.failUnlessEqual(t, escapetext(s,refinements=True).output()) # en dash s="pages 2-3" t="pages 2--3" self.failUnlessEqual(t, escapetext(s,refinements=True).output()) # em dash s="but-no" t="but---no" self.failUnlessEqual(t, escapetext(s,refinements=True).output()) def test_feed(self): # single quote next to double quote s1="abc $ def" s2="ghi % jkl" t1="abc \\$ defghi \\% jkl" et=escapetext(s1) et.feed(s2) self.failUnlessEqual(t1, et.output()) s3='mno "yes" pqr' t2="mno ``yes'' pqr" et.feed(s3) self.failUnlessEqual(t2, et.output()) if __name__=='__main__': unittest.main()