public void SerializationTests_Json_POCO()
        {
            var obj        = new SimplePOCO();
            var deepCopied = SerializationManager.RoundTripSerializationForTesting(obj);

            Assert.Equal(typeof(SimplePOCO), deepCopied.GetType());
        }
Esempio n. 2
0
        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 SerializationTests_Json_POCO()
 {
     var obj = new SimplePOCO();
     var deepCopied = SerializationManager.RoundTripSerializationForTesting(obj);
     Assert.Equal(typeof(SimplePOCO), deepCopied.GetType());
 }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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));
        }