public void SerializationTests_Json_POCO() { var obj = new SimplePOCO(); var deepCopied = SerializationManager.RoundTripSerializationForTesting(obj); Assert.Equal(typeof(SimplePOCO), deepCopied.GetType()); }
public void CanSerializeSimpleMembers() { var builder = new ILSerializerBuilder(); var instance = builder.CreateSerializerType<SimplePOCO>(); Assert.IsTrue(instance.SupportsType(typeof(SimplePOCO))); Assert.IsTrue(instance.SupportsType(instance.GetType())); Assert.IsTrue(instance.SupportsFormat(StandardFormats.BINARY)); Assert.IsFalse(instance.SupportsFormat(StandardFormats.CSV)); var testPoco = new SimplePOCO() { A = true, B = 1, C = 1, D = (char)1, E = 1, F = 1, G = 1, H = 1, I = 1, J = 1, K = 1, L = 1, M = 1, N = new byte[] { 1, 2, 3 }, O = "Foo".ToCharArray(), P = DateTime.Now, Q = "foo", R = AnEnum.Fish, nA = true }; var serialized = instance.Serialize(testPoco); var poco = instance.Deserialize(serialized); Assert.IsTrue(testPoco.A.Equals(poco.A)); Assert.IsTrue(testPoco.B.Equals(poco.B)); Assert.IsTrue(testPoco.C.Equals(poco.C)); Assert.IsTrue(testPoco.D.Equals(poco.D)); Assert.IsTrue(testPoco.E.Equals(poco.E)); Assert.IsTrue(testPoco.F.Equals(poco.F)); Assert.IsTrue(testPoco.G.Equals(poco.G)); Assert.IsTrue(testPoco.H.Equals(poco.H)); Assert.IsTrue(testPoco.I.Equals(poco.I)); Assert.IsTrue(testPoco.J.Equals(poco.J)); Assert.IsTrue(testPoco.K.Equals(poco.K)); Assert.IsTrue(testPoco.L.Equals(poco.L)); Assert.IsTrue(testPoco.M.Equals(poco.M)); Assert.IsTrue(testPoco.N.Length.Equals(poco.N.Length) && poco.N[0] == 1 && poco.N[1] == 2 && poco.N[2] == 3); Assert.IsTrue(testPoco.O.Length.Equals(poco.O.Length) && poco.O[0] == 'F' && poco.O[1] == 'o' && poco.O[2] == 'o'); Assert.IsTrue(testPoco.P.Equals(poco.P)); Assert.IsTrue(testPoco.Q.Equals(poco.Q)); Assert.IsTrue(testPoco.R.Equals(poco.R)); testPoco = new SimplePOCO() { Q = null, N = null, O = null }; serialized = instance.Serialize(testPoco); poco = instance.Deserialize(serialized); Assert.IsTrue(poco.Q == null); Assert.IsTrue(poco.N == null); Assert.IsTrue(poco.O == null); }
public void CanSerializeNullableMembers() { var builder = new ILSerializerBuilder(); var instance = builder.CreateSerializerType<SimplePOCO>(); Assert.IsTrue(instance.SupportsType(typeof(SimplePOCO))); Assert.IsTrue(instance.SupportsType(instance.GetType())); Assert.IsTrue(instance.SupportsFormat(StandardFormats.BINARY)); Assert.IsFalse(instance.SupportsFormat(StandardFormats.CSV)); var testPoco = new SimplePOCO() { nA = true, nB = 1, nC = 1, nD = (char)1, nE = 1, nF = 1, nG = 1, nH = 1, nI = 1, nJ = 1, nK = 1, nL = 1, nM = 1, nP = DateTime.Now, nR = AnEnum.Dog }; var serialized = instance.Serialize(testPoco); var poco = instance.Deserialize(serialized); Assert.IsTrue(testPoco.nA.Equals(poco.nA)); Assert.IsTrue(testPoco.nB.Equals(poco.nB)); Assert.IsTrue(testPoco.nC.Equals(poco.nC)); Assert.IsTrue(testPoco.nD.Equals(poco.nD)); Assert.IsTrue(testPoco.nE.Equals(poco.nE)); Assert.IsTrue(testPoco.nF.Equals(poco.nF)); Assert.IsTrue(testPoco.nG.Equals(poco.nG)); Assert.IsTrue(testPoco.nH.Equals(poco.nH)); Assert.IsTrue(testPoco.nI.Equals(poco.nI)); Assert.IsTrue(testPoco.nJ.Equals(poco.nJ)); Assert.IsTrue(testPoco.nK.Equals(poco.nK)); Assert.IsTrue(testPoco.nL.Equals(poco.nL)); Assert.IsTrue(testPoco.nM.Equals(poco.nM)); Assert.IsTrue(testPoco.nP.Equals(poco.nP)); Assert.IsTrue(testPoco.nR.Equals(poco.nR)); }
private static void PerfTest() { var builder = new ILSerializerBuilder(); var instance = builder.CreateSerializerType<SimplePOCO>(); var testPoco = new SimplePOCO() { //A = true, //B = 1, //C = 1, //D = (char)1, //E = 1, //F = 1, //G = 1, //H = 1, //I = 1, //J = 1, //K = 1, //L = 1, //M = 1, N = new byte[] { 1, 2, 3 }, //O = "Foo".ToCharArray() }; var serialized = instance.Serialize(testPoco); var poco = instance.Deserialize(serialized); var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < 1000000; i++) { instance.Serialize(testPoco); } stopwatch.Stop(); var bandwidth = (double)(serialized.Length * 1000000); var serializationRate = (bandwidth / (stopwatch.ElapsedMilliseconds / 1000d)) / (1024 * 1000); Logger.LogInfo("Suffūz Bandwidth [Kb]: {0}", bandwidth / (1024d)); Logger.LogInfo("Suffūz Throughput [Mb/s]: {0}", serializationRate); Logger.LogInfo("Suffūz Rate [Hz]: {0}", 1000000d / (stopwatch.ElapsedMilliseconds / 1000d)); stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < 1000000; i++) { instance.Deserialize(serialized); } stopwatch.Stop(); serializationRate = (bandwidth / (stopwatch.ElapsedMilliseconds / 1000d)) / (1024 * 1000); Logger.LogInfo("Suffūz Throughput [Mb/s]: {0}", serializationRate); Logger.LogInfo("Suffūz Rate [Hz]: {0}", 1000000d / (stopwatch.ElapsedMilliseconds / 1000d)); var json = Newtonsoft.Json.JsonConvert.SerializeObject(testPoco); stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < 1000000; i++) { Newtonsoft.Json.JsonConvert.SerializeObject(testPoco); } stopwatch.Stop(); var jbandwidth = (double)(json.Length * 1000000); var jserializationRate = (jbandwidth / (stopwatch.ElapsedMilliseconds / 1000d)) / (1024 * 1000); Logger.LogInfo("Json Bandwidth [Kb]: {0}", jbandwidth / (1024d)); Logger.LogInfo("Json Throughput [Mb/s]: {0}", jserializationRate); Logger.LogInfo("Json Rate [Hz]: {0}", 1000000d / (stopwatch.ElapsedMilliseconds / 1000d)); stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < 1000000; i++) { Newtonsoft.Json.JsonConvert.DeserializeObject<SimplePOCO>(json); } stopwatch.Stop(); jserializationRate = (jbandwidth / (stopwatch.ElapsedMilliseconds / 1000d)) / (1024 * 1000); Logger.LogInfo("Json Throughput [Mb/s]: {0}", jserializationRate); Logger.LogInfo("Json Rate [Hz]: {0}", 1000000d / (stopwatch.ElapsedMilliseconds / 1000d)); }