Package lxml :: Package tests :: Module test_unicode
[frames] | no frames]

Source Code for Module lxml.tests.test_unicode

 1  # -*- coding: utf-8 -*- 
 2  import unittest, doctest 
 3   
 4  from common_imports import StringIO, etree, SillyFileLike, HelperTestCase 
 5   
 6  ascii_uni = u'a' 
 7   
 8  klingon = u"\uF8D2" # not valid for XML names 
 9   
10  invalid_tag = "test" + klingon 
11   
12  uni = u'Ã\u0680\u3120' # some non-ASCII characters 
13   
14  uxml = u"<test><title>test á\u3120</title><h1>page á\u3120 title</h1></test>" 
15   
16 -class UnicodeTestCase(HelperTestCase):
17 - def test_unicode_xml(self):
18 tree = etree.XML(u'<p>%s</p>' % uni) 19 self.assertEquals(uni, tree.text)
20
21 - def test_unicode_xml_broken(self):
22 uxml = u'<?xml version="1.0" encoding="UTF-8"?>' + \ 23 u'<p>%s</p>' % uni 24 self.assertRaises(ValueError, etree.XML, uxml)
25
26 - def test_unicode_tag(self):
27 el = etree.Element(uni) 28 self.assertEquals(uni, el.tag)
29
31 # sadly, Klingon is not well-formed 32 self.assertRaises(ValueError, etree.Element, invalid_tag)
33
34 - def test_unicode_nstag(self):
35 tag = u"{%s}%s" % (uni, uni) 36 el = etree.Element(tag) 37 self.assertEquals(tag, el.tag)
38
40 # sadly, Klingon is not well-formed 41 tag = u"{%s}%s" % (uni, invalid_tag) 42 self.assertRaises(ValueError, etree.Element, tag)
43
44 - def test_unicode_qname(self):
45 qname = etree.QName(uni, uni) 46 tag = u"{%s}%s" % (uni, uni) 47 self.assertEquals(qname.text, tag) 48 self.assertEquals(unicode(qname), tag)
49
51 self.assertRaises(ValueError, etree.QName, invalid_tag)
52
53 - def test_unicode_attr(self):
54 el = etree.Element('foo', {'bar': uni}) 55 self.assertEquals(uni, el.attrib['bar'])
56
57 - def test_unicode_comment(self):
58 el = etree.Comment(uni) 59 self.assertEquals(uni, el.text)
60
62 el = etree.parse(StringIO(u'<p>%s</p>' % uni)).getroot() 63 self.assertEquals(uni, el.text)
64 65 ## def test_parse_fileobject_unicode(self): 66 ## # parse unicode from unamed file object (not support by ElementTree) 67 ## f = SillyFileLike(uxml) 68 ## root = etree.parse(f).getroot() 69 ## self.assertEquals(unicode(etree.tostring(root, 'UTF-8'), 'UTF-8'), 70 ## uxml) 71
72 -def test_suite():
73 suite = unittest.TestSuite() 74 suite.addTests([unittest.makeSuite(UnicodeTestCase)]) 75 return suite
76