using NUnit.Framework; using TINK.Model.Bike; using Newtonsoft.Json; using TINK.Model.State; using System.Collections.Generic; using BikeInfoMutable = TINK.Model.Bike.BC.BikeInfoMutable; namespace TestTINKLib { /// /// Exclude from build beause serialization... see below. /// [TestFixture] public class TestBikeCollectionSerializeJSON { [Test, Ignore("Disabled because serialization does no more work due to inheritance since commit ec14b93b.")] public void Test_SerializeJSON() { var l_oCollSource = new BikeCollectionMutable { new BikeInfoMutable(57, false, new List { "TINK" }, WheelType.Two, TypeOfBike.Allround) }; // Verify prerequisites. Assert.AreEqual(1, l_oCollSource.Count); Assert.AreEqual(57, l_oCollSource[0].Id); Assert.AreEqual(InUseStateEnum.Disposable, l_oCollSource[0].State.Value); Assert.IsNull(l_oCollSource[0].State.MailAddress); Assert.IsNull(l_oCollSource[0].State.Code); Assert.IsNull(l_oCollSource[0].State.From); // Serialize object and verify json var l_oDetected = JsonConvert.SerializeObject(l_oCollSource, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }); const string EXPECTED = @" [ { ""Id"": 57, ""CurrentStation"": null, ""WheelType"": 1, ""TypeOfBike"": 0, ""State"": { ""StateInfoObject"": { ""$type"": ""TINK.Model.State.StateAvailableInfo, TINKLib"" } } } ]"; Assert.AreEqual( TestHelper.PrepareXmlForStringCompare(EXPECTED), TestHelper.PrepareXmlForStringCompare(l_oDetected)); // Deserialize object. var l_oBikeCollectionTarget = JsonConvert.DeserializeObject(l_oDetected, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }); // Verify state. Assert.AreEqual(1, l_oBikeCollectionTarget.Count); Assert.AreEqual(57, l_oBikeCollectionTarget[0].Id); Assert.AreEqual(InUseStateEnum.Disposable, l_oBikeCollectionTarget[0].State.Value); Assert.IsNull(l_oBikeCollectionTarget[0].State.MailAddress); Assert.IsNull(l_oBikeCollectionTarget[0].State.Code); Assert.IsNull(l_oBikeCollectionTarget[0].State.From); } } }