diff --git a/YamlDotNet.Test/Serialization/SerializationTests.cs b/YamlDotNet.Test/Serialization/SerializationTests.cs index d46bc25ec..bf37668e2 100644 --- a/YamlDotNet.Test/Serialization/SerializationTests.cs +++ b/YamlDotNet.Test/Serialization/SerializationTests.cs @@ -2455,6 +2455,16 @@ public void NamingConventionAppliedToEnumWhenDeserializing() Assert.Equal(expected, actual); } + [Fact] + [Trait("motive", "issue #656")] + public void NestedDictionaryTypes_ShouldRoundtrip() + { + var serializer = new SerializerBuilder().EnsureRoundtrip().Build(); + var yaml = serializer.Serialize(new HasNestedDictionary(), typeof(HasNestedDictionary)); + var dct = new DeserializerBuilder().Build().Deserialize(yaml); + Assert.Contains(new KeyValuePair(1, new HasNestedDictionary.Payload { I = 1 }), dct.Lookups); + } + public class TestState { public int OnSerializedCallCount { get; set; } @@ -2546,5 +2556,15 @@ public void WriteYaml(IEmitter emitter, object value, Type type) emitter.Emit(new Scalar(((NonSerializable)value).Text)); } } + + public sealed class HasNestedDictionary + { + public Dictionary Lookups { get; set; } = new Dictionary { [1] = new Payload { I = 1 } }; + + public struct Payload + { + public int I { get; set; } + } + } } }