reportlab/test/test_platypus_paraparser.py
author rgbecker
Fri, 21 Jul 2006 12:44:40 +0000
changeset 2664 c9faa3a99e93
parent 2663 927cc273c5a5
child 2724 3ddade273440
permissions -rw-r--r--
reportlab/platypus: <br/> tags now working
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2577
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     1
#!/bin/env python
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     2
#Copyright ReportLab Europe Ltd. 2000-2004
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     3
#see license.txt for license details
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     4
#history TBC
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     5
#$Header$
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     6
__version__=''' $Id'''
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     7
__doc__="""Tests of intra-paragraph parsing behaviour in Platypus."""
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     8
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
     9
from types import TupleType, ListType, StringType, UnicodeType
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    10
from pprint import pprint as pp
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    11
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    12
from reportlab.test import unittest
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    13
from reportlab.test.utils import makeSuiteForClasses, outputfile
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    14
from reportlab.platypus import cleanBlockQuotedText
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    15
from reportlab.platypus.paraparser import ParaParser, ParaFrag
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    16
from reportlab.lib.colors import black
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    17
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    18
class ParaParserTestCase(unittest.TestCase):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    19
    """Tests of data structures created by paragraph parser.  Esp. ability
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    20
    to accept unicode and preserve it"""
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    21
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    22
    def setUp(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    23
        style=ParaFrag()
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    24
        style.fontName='Times-Roman'
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    25
        style.fontSize = 12
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    26
        style.textColor = black
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    27
        style.bulletFontName = black
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    28
        style.bulletFontName='Times-Roman'
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    29
        style.bulletFontSize=12
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    30
        self.style = style        
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    31
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    32
    def testPlain(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    33
        txt = "Hello World"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    34
        stuff = ParaParser().parse(txt, self.style)
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    35
        assert type(stuff) is TupleType
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    36
        assert len(stuff) == 3
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    37
        assert  stuff[1][0].text == 'Hello World'
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    38
        
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    39
    def testBold(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    40
        txt = "Hello <b>Bold</b> World"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    41
        fragList = ParaParser().parse(txt, self.style)[1]
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    42
        self.assertEquals(map(lambda x:x.text, fragList), ['Hello ','Bold',' World'])
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    43
        self.assertEquals(fragList[1].fontName, 'Times-Bold')
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    44
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    45
    def testEntity(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    46
        "Numeric entities should be unescaped by parser"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    47
        txt = "Hello &#169; copyright"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    48
        fragList = ParaParser().parse(txt, self.style)[1]
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    49
        self.assertEquals(map(lambda x:x.text, fragList), ['Hello ','\xc2\xa9',' copyright'])
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    50
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    51
    def testEscaped(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    52
        "Escaped high-bit stuff should go straight through"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    53
        txt = "Hello \xc2\xa9 copyright"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    54
        fragList = ParaParser().parse(txt, self.style)[1]
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    55
        assert fragList[0].text == txt
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    56
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    57
    def testPlainUnicode(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    58
        "See if simple unicode goes through"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    59
        txt = u"Hello World"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    60
        stuff = ParaParser().parse(txt, self.style)
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    61
        assert type(stuff) is TupleType
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    62
        assert len(stuff) == 3
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    63
        assert  stuff[1][0].text == u'Hello World'
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    64
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    65
    def testBoldUnicode(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    66
        txt = u"Hello <b>Bold</b> World"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    67
        fragList = ParaParser().parse(txt, self.style)[1]
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    68
        self.assertEquals(map(lambda x:x.text, fragList), [u'Hello ',u'Bold',u' World'])
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    69
        self.assertEquals(fragList[1].fontName, 'Times-Bold')
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    70
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    71
    def testEntityUnicode(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    72
        "Numeric entities should be unescaped by parser"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    73
        txt = u"Hello &#169; copyright"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    74
        fragList = ParaParser().parse(txt, self.style)[1]
2647
eef0f4184eb6 reportlab/text: fix encoding busted paraparser test
rgbecker
parents: 2577
diff changeset
    75
        self.assertEquals(map(lambda x:x.text, fragList), [u'Hello ',u'\xa9',u' copyright'])
2577
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    76
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    77
    def testEscapedUnicode(self):
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    78
        "Escaped high-bit stuff should go straight through"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    79
        txt = u"Hello \xa9 copyright"
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    80
        fragList = ParaParser().parse(txt, self.style)[1]
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    81
        assert fragList[0].text == txt
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    82
2663
927cc273c5a5 <br/> work in progress
andy
parents: 2647
diff changeset
    83
    def testBr(self):
927cc273c5a5 <br/> work in progress
andy
parents: 2647
diff changeset
    84
        txt = u"Hello <br/> World"
927cc273c5a5 <br/> work in progress
andy
parents: 2647
diff changeset
    85
        fragList = ParaParser().parse(txt, self.style)[1]
2664
c9faa3a99e93 reportlab/platypus: <br/> tags now working
rgbecker
parents: 2663
diff changeset
    86
        self.assertEquals(map(lambda x:x.text, fragList), [u'Hello ',u'',u' World'])
c9faa3a99e93 reportlab/platypus: <br/> tags now working
rgbecker
parents: 2663
diff changeset
    87
        self.assertEquals(fragList[1].lineBreak, True)
2577
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    88
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    89
def makeSuite():
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    90
    return makeSuiteForClasses(ParaParserTestCase)
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    91
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    92
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    93
#noruntests
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    94
if __name__ == "__main__":
f442326a11e9 reportlab: add files from utf8 branch
rgbecker
parents:
diff changeset
    95
    unittest.TextTestRunner().run(makeSuite())