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;
}