def test_reconnect_drive(self): blocks = 10 drive_name = 'driveC.txt' drive = Drive.format(drive_name, blocks) drive.disconnect() with self.assertRaises(IOError): Drive.reconnect('badname') drive = Drive.reconnect(drive_name) self.assertEqual(blocks * Drive.BLK_SIZE, drive.num_bytes()) name = b'reconnect volume' volume = Volume.format(drive, name) volume.unmount() with self.assertRaises(IOError): Volume.mount('driveZ') volume = Volume.mount(drive_name) self.assertEqual(1, volume.volume_data_blocks()) self.assertEqual(name, volume.name()) self.assertEqual(blocks, volume.size()) self.assertEqual(b'x--------x', volume.bitmap()) self.assertEqual(9, volume.root_index()) volume.unmount()
def test_reconnect_drive_with_files(self): drive_name = 'driveF.txt' volume = Volume.format(Drive.format(drive_name, 12), b'reconnect with files volume') filenames = [b'file1', b'file2', b'file3', b'file4'] files = [volume.open(name) for name in filenames] for i, file in enumerate(files): file.write(0, bytes(str(i).encode()) * 64) files[0].write(files[0].size(), b'a') volume.unmount() volume = Volume.mount(drive_name) file4 = volume.open(b'file4') self.assertEqual(b'3333', file4.read(0, 4)) file1 = volume.open(b'file1') self.assertEqual(65, file1.size()) self.assertEqual(b'0a', file1.read(63, 2)) volume.unmount()
def test_reconnect_disk_with_files(self): drive_name = 'driveL.txt' volume = Volume.format(Drive.format(drive_name, 500), b'reconnect with files volume') files = [] for i in range(100): name = 'file{:02}'.format(i).encode() files.append(volume.open(name)) for i,file in enumerate(files): file.write(0, str(i).encode() * 64) files[99].write(files[99].size(), b'a') volume.unmount() volume = None volume = Volume.mount(drive_name) file4 = volume.open(b'file04') self.assertEqual(b'4444', file4.read(0, 4)) file99 = volume.open(b'file99') self.assertEqual(129, file99.size()) self.assertEqual(b'9a', file99.read(file99.size() - 2, 2)) volume.unmount()