public virtual async Task <RigidDiskBlock> GetRigidDiskBlock(Stream stream) { try { stream.Seek(0, SeekOrigin.Begin); } catch (Exception) { return(null); } RigidDiskBlock rigidDiskBlock; try { rigidDiskBlock = await RigidDiskBlockReader.Read(stream); } catch (Exception) { rigidDiskBlock = null; } try { stream.Seek(0, SeekOrigin.Begin); } catch (Exception) { return(null); } return(rigidDiskBlock); }
public async Task WhenAmigaHardFileThenRigidDiskBlockIsValid() { // arrange hard file var hardFile = new MemoryStream(await File.ReadAllBytesAsync(Path.Combine("TestData", "rigid-disk-block.img"))); // act read rigid disk block from hard file var rigidDiskBlock = await RigidDiskBlockReader.Read(hardFile); // assert rigid disk block Assert.NotNull(rigidDiskBlock); Assert.Equal("UAE", rigidDiskBlock.DiskVendor); Assert.Equal("HstWB 4GB", rigidDiskBlock.DiskProduct); Assert.Equal("0.4", rigidDiskBlock.DiskRevision); // assert number of partitions Assert.NotEmpty(rigidDiskBlock.PartitionBlocks); var partitionBlocks = rigidDiskBlock.PartitionBlocks.ToList(); Assert.Equal(2, partitionBlocks.Count); // assert partition 1 var partition1 = partitionBlocks[0]; Assert.Equal("DH0", partition1.DriveName); // assert partition 2 var partition2 = partitionBlocks[1]; Assert.Equal("DH1", partition2.DriveName); }
public async Task WhenCreateAndWriteRigidDiskBlockThenRigidDiskBlockIsEqual() { var path = "amiga.hdf"; var rigidDiskBlock = await RigidDiskBlock .Create(10.MB().ToUniversalSize()) .AddFileSystem("PDS3", await File.ReadAllBytesAsync(@"TestData\pfs3aio")) .AddPartition("DH0", 3.MB(), bootable: true) .AddPartition("DH1") .WriteToFile("amiga.hdf"); await using var stream = File.OpenRead(path); var actualRigidDiskBlock = await RigidDiskBlockReader.Read(stream); var rigidDiskBlockJson = System.Text.Json.JsonSerializer.Serialize(rigidDiskBlock); var actualRigidDiskBlockJson = System.Text.Json.JsonSerializer.Serialize(actualRigidDiskBlock); Assert.Equal(rigidDiskBlockJson, actualRigidDiskBlockJson); }