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