[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&#8000;">
  <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)