CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Xunit;
namespace Basic
{
public class Application
{
public static void Main(string[] args)
{
var sanity = new SanityChecks();
var actionList = new List<Action>() { sanity.SanityCheck_CanDeserialize,sanity.SanityCheck_CanSerialize,sanity.SanityCheck_CanDeserializeFromSerialized};
foreach (var action in actionList)
{
Console.WriteLine("Test Started");
try{
action.Invoke();
Console.WriteLine("Test Passed");
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.WriteLine("Failed Test");
}
Console.WriteLine("\n\n");
}
}
}
public class SanityChecks
{
public class TestClass
{
internal Dictionary<int,string> _prvList = new Dictionary<int, string>();
public IEnumerable<string> ListValues
{
get { return _prvList.Select(p=> p.Value).ToList();}
set
{
var valArr = value.ToArray();
for (var x = 0; x < valArr.Length; x++)
{
_prvList.Add(x,valArr[x]);
}
}
}
}
public void SanityCheck_CanDeserialize()
{
var assumption = "{\"ListValues\":[\"TestValue\",\"AAA\"]}";
var actual = JsonConvert.DeserializeObject<TestClass>(assumption,
new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace }); // pass settings to DeserializeObject
Assert.Equal(2, actual._prvList.Count());
Assert.Equal(2, actual.ListValues.Count());
}
public void SanityCheck_CanSerialize()
{
var assumption = new TestClass() { ListValues = new[] { "TestValue", "AAA" } };
var actualSerialized = JsonConvert.SerializeObject(assumption);
Console.WriteLine(actualSerialized);
Assert.Equal("{\"ListValues\":[\"TestValue\",\"AAA\"]}", actualSerialized);
}
public void SanityCheck_CanDeserializeFromSerialized()
{
var assumption = new TestClass() { ListValues = new[] { "TestValue", "AAA" } };
var actualSerialized = JsonConvert.SerializeObject(assumption);
Console.WriteLine(actualSerialized);
var actualDeserialized = JsonConvert.DeserializeObject<TestClass>(actualSerialized,
new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace }); // pass settings to DeserializeObject
Assert.Equal(2, actualDeserialized._prvList.Count());
var actualDeserializedSerialized = JsonConvert.SerializeObject(actualDeserialized);
Console.WriteLine(actualDeserializedSerialized);
Assert.Equal(actualSerialized, actualDeserializedSerialized);
}
}
}