def test_write(self): raw = RawDirect(self.file) raw.write('A' * 512) raw.close() with open(self.file) as fd: self.assertEquals(fd.read(512), 'A' * 512)
def test_tell(self): raw = RawDirect(self.file) raw.write('A' * 512) self.assertEquals(raw.tell(), 512) raw.write('B' * 512) self.assertEquals(raw.tell(), 1024) raw.seek(0) self.assertEquals(raw.read(512), ('A' * 512)) self.assertEquals(raw.read(512), ('B' * 512)) self.assertEquals(raw.tell(), 1024)
def test_write_less_than_page_size(self): raw = RawDirect(self.file) # Write only 10 bytes self.assertRaises(OSError, raw.write, ('G' * 10)) # Write 512 self.assertEquals(raw.write('A' * 512), 512) # Write 1024 self.assertEquals(raw.write('B' * 1024), 1024) # Ensure the data is there raw.seek(0) self.assertEquals(raw.read(512), 'A' * 512) self.assertEquals(raw.read(1024), 'B' * 1024) raw.close()
def test_write_past_eof(self): # Create a sparse file that is less than the block size fd, file = tempfile.mkstemp(dir='/tmp') os.ftruncate(fd, 511) os.close(fd) # Should be 511 in size self.assertEquals(os.stat(file).st_size, 511) raw = RawDirect(file) # the write should succeed self.assertEquals(raw.write('A' * 512), 512) raw.close() # writting past the end should grow the size of the file self.assertEquals(os.stat(file).st_size, 512)