using System.Collections.Generic; using System.Text; using Aaru.CommonTypes; using Aaru.CommonTypes.Structs; namespace Aaru.Tests; /// Class to define expected data when testing media info public class MediaInfoTest { /// Expected media type public MediaType MediaType; /// Expected number of sectors in media public ulong Sectors; /// Expected media sector size public uint SectorSize; /// File that contains the image to test public string TestFile; public override string ToString() => TestFile; } /// /// Class to define expected data when testing filesystem info public class FileSystemTest : MediaInfoTest { /// Application ID public string ApplicationId; /// Can the volume boot? public bool Bootable; /// Clusters in volume public long Clusters; /// Bytes per cluster public uint ClusterSize; public Dictionary Contents; public string ContentsJson; public Encoding Encoding; public string Namespace; /// System or OEM ID public string SystemId; /// Filesystem type. null if always the same, as defined in test class public string Type; /// Volume name public string VolumeName; /// Volume serial number or set identifier public string VolumeSerial; } public class BlockImageTestExpected : MediaInfoTest { public string Md5; public BlockPartitionVolumes[] Partitions; } public class TrackInfoTestExpected { public ulong End; public FileSystemTest[] FileSystems; public byte? Flags; public byte Number; public ulong Pregap; public int Session; public ulong Start; } public class OpticalImageTestExpected : BlockImageTestExpected { public string LongMd5; public string SubchannelMd5; public TrackInfoTestExpected[] Tracks; } public class TapeImageTestExpected : BlockImageTestExpected { public TapeFile[] Files; public new TapePartition[] Partitions; } public class PartitionTest { public Partition[] Partitions; /// File that contains the partition scheme to test public string TestFile; } public class FsExtractHashData { public PartitionVolumes[] Partitions; } public class PartitionVolumes { public VolumeData[] Volumes; } public class FileData { public Dictionary Children { get; set; } public FileEntryInfo Info { get; set; } public string LinkTarget { get; set; } public string Md5 { get; set; } public Dictionary XattrsWithMd5 { get; set; } } public class VolumeData { public List Directories; public Dictionary Files; public string VolumeName; } public class BlockPartitionVolumes { public ulong Length; public ulong Start; }