namespace FiscalOS.API.Tests.Infra; public interface ISerializableDictionary : IDictionary, IXunitSerializable { } public class SerializableDictionary : Dictionary, ISerializableDictionary where TKey : notnull { public SerializableDictionary() { } public SerializableDictionary(IDictionary dictionary) : base(dictionary) { } public void Deserialize(IXunitSerializationInfo info) { Clear(); var keysJson = info.GetValue("_DictKeys") ?? "[]"; var valuesJson = info.GetValue("_DictValues") ?? "[]"; var keys = JsonSerializer.Deserialize>(keysJson); var values = JsonSerializer.Deserialize>(valuesJson); if (keys is null || values is null || keys.Count != values.Count) { return; } for (var i = 0; i < keys.Count; i++) { Add(keys[i], values[i]); } } public void Serialize(IXunitSerializationInfo info) { info.AddValue("_DictKeys", JsonSerializer.Serialize(Keys)); info.AddValue("_DictValues", JsonSerializer.Serialize(Values)); } }