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