using LANCommander.SDK.Parsers.Ini; namespace LANCommander.SDK.Tests.IniHandling { using SectionKey = KeyValuePair>; public class ConfigurationTest { public required string Ini { get; set; } public IList RequiredSections { get; set; } = []; public IList> RequiredSectionsCount { get; set; } = []; public IList RequiredKeys { get; set; } = []; public IList>>> RequiredKeysCount { get; set; } = []; public IList RequiredKeyValues { get; set; } = []; public IList UpdateKeyValues { get; set; } = []; public class SectionKeyValue(string section) { public class KeyValue { public string Key { get; set; } public string? Value { get; set; } public IList? Values { get; set; } public KeyValue(string key, string? value) { Key = key; Value = value; } public KeyValue(string key, IList? values) { Key = key; Values = values; } } public string Section { get; set; } = section; public IniParseOptions? Options { get; set; } public SectionKeyValue(string section, IniParseOptions options) : this(section) => Options = options; public IList KeyValues { get; set; } = []; } public class UpdateSectionKeyValue(string section) { public class UpdateKeyValue { public required string Key { get; set; } public string? OldValue { get; set; } public string? NewValue { get; set; } public IList? ExpectedValues { get; set; } } public string Section { get; set; } = section; public IniParseOptions? Options { get; set; } public UpdateSectionKeyValue(string section, IniParseOptions options) : this(section) => Options = options; public IList UpdateKeyValues { get; set; } = []; public IList CheckKeyValues { get; set; } = []; } } }