示例#1
0
        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);
        }
示例#3
0
        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);
        }