[Python-checkins] CVS: python/dist/src/Lib/test test_pyexpat.py,1.2,1.3
A.M. Kuchling
python-dev@python.org
Mon, 26 Jun 2000 17:37:27 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory slayer.i.sourceforge.net:/tmp/cvs-serv25501
Modified Files:
test_pyexpat.py
Log Message:
Change pyexpat test suite to exercise the .returns_unicode attribute,
parsing the sample data once with 8-bit strings and once with Unicode.
Index: test_pyexpat.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pyexpat.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** test_pyexpat.py 2000/04/02 05:15:38 1.2
--- test_pyexpat.py 2000/06/27 00:37:25 1.3
***************
*** 11,18 ****
class Outputter:
def StartElementHandler(self, name, attrs):
! print 'Start element:\n\t', name, attrs
def EndElementHandler(self, name):
! print 'End element:\n\t', name
def CharacterDataHandler(self, data):
--- 11,18 ----
class Outputter:
def StartElementHandler(self, name, attrs):
! print 'Start element:\n\t', repr(name), attrs
def EndElementHandler(self, name):
! print 'End element:\n\t', repr(name)
def CharacterDataHandler(self, data):
***************
*** 23,33 ****
def ProcessingInstructionHandler(self, target, data):
! print 'PI:\n\t', target, data
def StartNamespaceDeclHandler(self, prefix, uri):
! print 'NS decl:\n\t', prefix, uri
def EndNamespaceDeclHandler(self, prefix):
! print 'End of NS decl:\n\t', prefix
def StartCdataSectionHandler(self):
--- 23,33 ----
def ProcessingInstructionHandler(self, target, data):
! print 'PI:\n\t', repr(target), repr(data)
def StartNamespaceDeclHandler(self, prefix, uri):
! print 'NS decl:\n\t', repr(prefix), repr(uri)
def EndNamespaceDeclHandler(self, prefix):
! print 'End of NS decl:\n\t', repr(prefix)
def StartCdataSectionHandler(self):
***************
*** 52,57 ****
return 1
! def ExternalEntityRefHandler(self, context, base, sysId, pubId):
! print 'External entity ref:', context, base, sysId, pubId
return 1
--- 52,58 ----
return 1
! def ExternalEntityRefHandler(self, *args):
! context, base, sysId, pubId = args
! print 'External entity ref:', args
return 1
***************
*** 65,69 ****
out = Outputter()
parser = pyexpat.ParserCreate(namespace_separator='!')
! for name in ['StartElementHandler', 'EndElementHandler',
'CharacterDataHandler', 'ProcessingInstructionHandler',
'UnparsedEntityDeclHandler', 'NotationDeclHandler',
--- 66,77 ----
out = Outputter()
parser = pyexpat.ParserCreate(namespace_separator='!')
!
! # Test getting/setting returns_unicode
! parser.returns_unicode = 0 ; assert parser.returns_unicode == 0
! parser.returns_unicode = 1 ; assert parser.returns_unicode == 1
! parser.returns_unicode = 2 ; assert parser.returns_unicode == 1
! parser.returns_unicode = 0 ; assert parser.returns_unicode == 0
!
! HANDLER_NAMES = ['StartElementHandler', 'EndElementHandler',
'CharacterDataHandler', 'ProcessingInstructionHandler',
'UnparsedEntityDeclHandler', 'NotationDeclHandler',
***************
*** 74,78 ****
#'NotStandaloneHandler',
'ExternalEntityRefHandler'
! ]:
setattr(parser, name, getattr(out, name) )
--- 82,87 ----
#'NotStandaloneHandler',
'ExternalEntityRefHandler'
! ]
! for name in HANDLER_NAMES:
setattr(parser, name, getattr(out, name) )
***************
*** 89,93 ****
]>
! <root>
<myns:subelement xmlns:myns="http://www.python.org/namespace">
Contents of subelements
--- 98,102 ----
]>
! <root attr1="value1" attr2="value2ὀ">
<myns:subelement xmlns:myns="http://www.python.org/namespace">
Contents of subelements
***************
*** 98,103 ****
--- 107,144 ----
"""
+ # Produce UTF-8 output
+ parser.returns_unicode = 0
try:
parser.Parse(data, 1)
+ except pyexpat.error:
+ print '** Error', parser.ErrorCode, pyexpat.ErrorString( parser.ErrorCode)
+ print '** Line', parser.ErrorLineNumber
+ print '** Column', parser.ErrorColumnNumber
+ print '** Byte', parser.ErrorByteIndex
+
+ # Try the parse again, this time producing Unicode output
+ parser = pyexpat.ParserCreate(namespace_separator='!')
+ parser.returns_unicode = 1
+
+ for name in HANDLER_NAMES:
+ setattr(parser, name, getattr(out, name) )
+ try:
+ parser.Parse(data, 1)
+ except pyexpat.error:
+ print '** Error', parser.ErrorCode, pyexpat.ErrorString( parser.ErrorCode)
+ print '** Line', parser.ErrorLineNumber
+ print '** Column', parser.ErrorColumnNumber
+ print '** Byte', parser.ErrorByteIndex
+
+ # Try parsing a file
+ parser = pyexpat.ParserCreate(namespace_separator='!')
+ parser.returns_unicode = 1
+
+ for name in HANDLER_NAMES:
+ setattr(parser, name, getattr(out, name) )
+ import StringIO
+ file = StringIO.StringIO(data)
+ try:
+ parser.ParseFile(file)
except pyexpat.error:
print '** Error', parser.ErrorCode, pyexpat.ErrorString( parser.ErrorCode)