home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / webclean / !!!python!!! / BeOpen-Python-2.0.exe / TEST_SELECT.PY < prev    next >
Encoding:
Python Source  |  2000-09-28  |  1.7 KB  |  64 lines

  1. # Testing select module
  2. from test_support import verbose
  3. import select
  4. import os
  5.  
  6. # test some known error conditions
  7. try:
  8.     rfd, wfd, xfd = select.select(1, 2, 3)
  9. except TypeError:
  10.     pass
  11. else:
  12.     print 'expected TypeError exception not raised'
  13.  
  14. class Nope:
  15.     pass
  16.  
  17. class Almost:
  18.     def fileno(self):
  19.         return 'fileno'
  20.     
  21. try:
  22.     rfd, wfd, xfd = select.select([Nope()], [], [])
  23. except TypeError:
  24.     pass
  25. else:
  26.     print 'expected TypeError exception not raised'
  27.  
  28. try:
  29.     rfd, wfd, xfd = select.select([Almost()], [], [])
  30. except TypeError:
  31.     pass
  32. else:
  33.     print 'expected TypeError exception not raised'
  34.  
  35.  
  36. def test():
  37.         import sys
  38.         if sys.platform[:3] in ('win', 'mac', 'os2'):
  39.                 if verbose:
  40.                         print "Can't test select easily on", sys.platform
  41.                 return
  42.         cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
  43.         p = os.popen(cmd, 'r')
  44.         for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
  45.                 if verbose:
  46.                         print 'timeout =', tout
  47.                 rfd, wfd, xfd = select.select([p], [], [], tout)
  48.                 if (rfd, wfd, xfd) == ([], [], []):
  49.                         continue
  50.                 if (rfd, wfd, xfd) == ([p], [], []):
  51.                         line = p.readline()
  52.                         if verbose:
  53.                                 print `line`
  54.                         if not line:
  55.                                 if verbose:
  56.                                         print 'EOF'
  57.                                 break
  58.                         continue
  59.                 print 'Unexpected return values from select():', rfd, wfd, xfd
  60.         p.close()
  61.  
  62. test()
  63.  
  64.