home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / BitTorrent / fakeopen.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  2.9 KB  |  89 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. from string import join
  5.  
  6. class FakeHandle:
  7.     
  8.     def __init__(self, name, fakeopen):
  9.         self.name = name
  10.         self.fakeopen = fakeopen
  11.         self.pos = 0
  12.  
  13.     
  14.     def flush(self):
  15.         pass
  16.  
  17.     
  18.     def close(self):
  19.         pass
  20.  
  21.     
  22.     def seek(self, pos):
  23.         self.pos = pos
  24.  
  25.     
  26.     def read(self, amount = None):
  27.         old = self.pos
  28.         f = self.fakeopen.files[self.name]
  29.         if self.pos >= len(f):
  30.             return ''
  31.         
  32.         if amount is None:
  33.             self.pos = len(f)
  34.             return join(f[old:], '')
  35.         else:
  36.             self.pos = min(len(f), old + amount)
  37.             return join(f[old:self.pos], '')
  38.  
  39.     
  40.     def write(self, s):
  41.         f = self.fakeopen.files[self.name]
  42.         while len(f) < self.pos:
  43.             f.append(chr(0))
  44.         self.fakeopen.files[self.name][self.pos:self.pos + len(s)] = list(s)
  45.         self.pos += len(s)
  46.  
  47.  
  48.  
  49. class FakeOpen:
  50.     
  51.     def __init__(self, initial = { }):
  52.         self.files = { }
  53.         for key, value in initial.items():
  54.             self.files[key] = list(value)
  55.         
  56.  
  57.     
  58.     def open(self, filename, mode):
  59.         """currently treats everything as rw - doesn't support append"""
  60.         self.files.setdefault(filename, [])
  61.         return FakeHandle(filename, self)
  62.  
  63.     
  64.     def exists(self, file):
  65.         return self.files.has_key(file)
  66.  
  67.     
  68.     def getsize(self, file):
  69.         return len(self.files[file])
  70.  
  71.  
  72.  
  73. def test_normal():
  74.     f = FakeOpen({
  75.         'f1': 'abcde' })
  76.     h = f.open('f1', 'rw')
  77.     h.write('fpq')
  78.     h.seek(4)
  79.     h.write('ghij')
  80.     h.seek(0)
  81.     h.seek(2)
  82.     h.write('p')
  83.     h.write('q')
  84.     h.seek(1)
  85.     h2 = f.open('f2', 'rw')
  86.     h2.write('mnop')
  87.     h2.seek(1)
  88.  
  89.