From 123e8a54c565b659cfb706224e5244a04e6c10e1 Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Mon, 31 Oct 2016 09:29:26 +0000 Subject: [PATCH] Add a test for deserializing an IEnumerable with implicit conversion --- .../Serialization/JsonSerializerTest.cs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs index d746cf13..47f1f809 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs @@ -224,6 +224,34 @@ namespace Newtonsoft.Json.Tests.Serialization }", strJsonMainClass); } + [Test] + public void DeserializeGenericIEnumerableWithImplicitConversion() + { + string deserialized = @"{ + ""Enumerable"": [ ""abc"", ""def"" ] +}"; + var enumerableClass = JsonConvert.DeserializeObject(deserialized); + var enumerableObject = enumerableClass.Enumerable.ToArray(); + Assert.AreEqual(2, enumerableObject.Length); + Assert.AreEqual("abc", enumerableObject[0].Value); + Assert.AreEqual("def", enumerableObject[1].Value); + } + + public class GenericIEnumerableWithImplicitConversion + { + public IEnumerable Enumerable { get; set; } + } + + public class ClassWithImplicitOperator + { + public string Value { get; set; } + + public static implicit operator ClassWithImplicitOperator(string value) + { + return new ClassWithImplicitOperator() { Value = value }; + } + } + #if !(PORTABLE || PORTABLE40 || NET20 || NET35) [Test] public void LargeIntegerAsString()