def setUp(self): self.dirName = "/bla/" self.bandSize = 40 self.fileOpenings = [] self.pretendFileExists = True self.pretendFileIsFull = True self.bff = BandFileFactory(self.dirName, writable=False, fileCtor=self.fakeFile, fileSize = self.fakeFileSize)
class BandFileFactoryReadingTest(unittest.TestCase): """ Unit test for BandFileFactory. Test BandFileFactory and the wrapped files it returns. """ def setUp(self): self.dirName = "/bla/" self.bandSize = 40 self.fileOpenings = [] self.pretendFileExists = True self.pretendFileIsFull = True self.bff = BandFileFactory(self.dirName, writable=False, fileCtor=self.fakeFile, fileSize = self.fakeFileSize) def fakeFile(self, filename, mode): "Stub for file constructor" self.fileOpenings.append((filename, mode)) if self.pretendFileExists: if self.pretendFileIsFull: return StringIO(('hello '+filename).ljust(self.bandSize)) else: return StringIO('hello') else: raise IOError(ENOENT, "No hay") def fakeFileSize(self, filename): "Stub for the function which computes file sizes" if self.pretendFileIsFull: return self.bandSize else: return 5 def test_open_existing_band_0(self): f = self.bff.getBand(0, self.bandSize) self.assertEquals(1, len(self.fileOpenings)) good = 'hello /bla/0' s = f.read(len(good)+2) self.assertEquals(good+' ', s) f.seek(6) self.assertEquals('/bla/0 ', f.read(9)) f.seek(self.bandSize-4) self.assertEquals(' '*4, f.read(4)) def test_open_existing_band_31(self): f = self.bff.getBand(31, self.bandSize) self.assertEquals([('/bla/1f', 'rb')], self.fileOpenings) def test_open_nonexisting_band_returns_all_zero_file(self): self.pretendFileExists = False f = self.bff.getBand(255, self.bandSize) self.assertEquals(1, len(self.fileOpenings)) self.assertEquals(('/bla/ff', 'rb'), self.fileOpenings[0]) self.assertEquals('\0'*13, f.read(13)) f.seek(self.bandSize - 5, SEEK_SET) self.assertEquals('\0'*5, f.read(5)) def test_open_too_short_file(self): self.pretendFileIsFull = False f = self.bff.getBand(255, self.bandSize) self.assertEquals('hello\0', f.read(6)) f.seek(self.bandSize - 5, SEEK_SET) self.assertEquals('\0'*5, f.read(5))