public void WriteListTypeNameForProperty() { string listRef = ReflectionUtils.GetTypeName( typeof(List <int>), TypeNameAssemblyFormatHandling.Simple, null ); TypeNameHandlingTests.TypeNameProperty typeNameProperty = new TypeNameHandlingTests.TypeNameProperty { Name = "Name!", Value = new List <int> { 1, 2, 3, 4, 5 } }; string json = JsonConvert.SerializeObject(typeNameProperty, Formatting.Indented); StringAssert.AreEqual( @"{ ""Name"": ""Name!"", ""Value"": { ""$type"": """ + listRef + @""", ""$values"": [ 1, 2, 3, 4, 5 ] } }", json ); TypeNameHandlingTests.TypeNameProperty deserialized = JsonConvert.DeserializeObject <TypeNameHandlingTests.TypeNameProperty>( json, new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead } ); Assert.AreEqual("Name!", deserialized.Name); CustomAssert.IsInstanceOfType(typeof(List <int>), deserialized.Value); List <int> nested = (List <int>)deserialized.Value; Assert.AreEqual(5, nested.Count); Assert.AreEqual(1, nested[0]); Assert.AreEqual(2, nested[1]); Assert.AreEqual(3, nested[2]); Assert.AreEqual(4, nested[3]); Assert.AreEqual(5, nested[4]); }
public void WriteListTypeNameForProperty() { string listRef = ReflectionUtils.GetTypeName(typeof(List<int>), FormatterAssemblyStyle.Simple, null); TypeNameHandlingTests.TypeNameProperty typeNameProperty = new TypeNameHandlingTests.TypeNameProperty { Name = "Name!", Value = new List<int> { 1, 2, 3, 4, 5 } }; string json = JsonConvert.SerializeObject(typeNameProperty, Formatting.Indented); StringAssert.AreEqual(@"{ ""Name"": ""Name!"", ""Value"": { ""$type"": """ + listRef + @""", ""$values"": [ 1, 2, 3, 4, 5 ] } }", json); TypeNameHandlingTests.TypeNameProperty deserialized = JsonConvert.DeserializeObject<TypeNameHandlingTests.TypeNameProperty>(json, new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.ReadAhead }); Assert.AreEqual("Name!", deserialized.Name); CustomAssert.IsInstanceOfType(typeof(List<int>), deserialized.Value); List<int> nested = (List<int>)deserialized.Value; Assert.AreEqual(5, nested.Count); Assert.AreEqual(1, nested[0]); Assert.AreEqual(2, nested[1]); Assert.AreEqual(3, nested[2]); Assert.AreEqual(4, nested[3]); Assert.AreEqual(5, nested[4]); }