home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2004 #2 / K-CD-2-2004.ISO / OpenOffice Sv / f_0397 / python-core-2.2.2 / lib / test / test_select.py < prev    next >
Encoding:
Python Source  |  2003-07-18  |  1.4 KB  |  63 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.