home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / test_select.py < prev    next >
Text File  |  2003-12-30  |  2KB  |  70 lines

  1. # Testing select module
  2. from test.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. try:
  36.     rfd, wfd, xfd = select.select([], [], [], 'not a number')
  37. except TypeError:
  38.     pass
  39. else:
  40.     print 'expected TypeError exception not raised'
  41.  
  42.  
  43. def test():
  44.     import sys
  45.     if sys.platform[:3] in ('win', 'mac', 'os2', 'riscos'):
  46.         if verbose:
  47.             print "Can't test select easily on", sys.platform
  48.         return
  49.     cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
  50.     p = os.popen(cmd, 'r')
  51.     for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
  52.         if verbose:
  53.             print 'timeout =', tout
  54.         rfd, wfd, xfd = select.select([p], [], [], tout)
  55.         if (rfd, wfd, xfd) == ([], [], []):
  56.             continue
  57.         if (rfd, wfd, xfd) == ([p], [], []):
  58.             line = p.readline()
  59.             if verbose:
  60.                 print `line`
  61.             if not line:
  62.                 if verbose:
  63.                     print 'EOF'
  64.                 break
  65.             continue
  66.         print 'Unexpected return values from select():', rfd, wfd, xfd
  67.     p.close()
  68.  
  69. test()
  70.