コード例 #1
0
        public void TestPackage()
        {
            ExtendProtocolSerialize.Enable();
            RPCPackage package = new RPCPackage {
                Count = 1, Method = "sdsad", GUID = "sdasjhnckjxzc0"
            };

            byte[]     bytes = ProtocolSerialize.Seralize(package);
            RPCPackage pack1 = ProtocolSerialize.Deseralize <RPCPackage>(bytes);

            Assert.AreEqual(package.Count, pack1.Count);
            Assert.AreEqual(package.Method, pack1.Method);
            Assert.AreEqual(package.GUID, pack1.GUID);
        }
コード例 #2
0
        public void TestErrorData()
        {
            ExtendProtocolSerialize.Enable();
            byte[] bytes = new byte[] { 1, 2, 3, 4, 5, 6, 7 };
            ProtocolSerialize.compatibility = ProtocolSerialize.Compatibility.Strict;

            RPCPackage pack1 = ProtocolSerialize.Deseralize <RPCPackage>(bytes);

            Assert.IsTrue(pack1 == null || !pack1.Validity());
            ProtocolSerialize.compatibility = ProtocolSerialize.Compatibility.MostCompatible;

            RPCPackage pack11 = ProtocolSerialize.Deseralize <RPCPackage>(bytes);

            Assert.IsNotNull(pack11);
        }
コード例 #3
0
ファイル: UnityTypeTest.cs プロジェクト: SeanTongTx/Protocol
    public void TestUnityTypeClass()
    {
        ProtocolCore.Extend.ExtendProtocolSerialize.Enable();
        ProtocolCore.Extend.ExtendUnityProtocol.Enable();
        UnityTypeClass ut = new UnityTypeClass();

        ut.v2         = Vector2.one * 2;
        ut.v3         = Vector3.one * 2;
        ut.v4         = Vector2.one * 2;
        ut.rect       = new Rect(100, 100, 50, 50);
        ut.c          = Color.red;
        ut.c32        = Color.yellow;
        ut.quaternion = new Quaternion(1, 2, 3, 4);
        ut.v2List     = new List <Vector2>()
        {
            Vector2.one * 2, Vector2.one * 3, Vector2.one * 4
        };
        ut.cArray = new Color[] { Color.red, Color.yellow, Color.blue, Color.cyan, Color.green };

        byte[]         bs    = ProtocolSerialize.Seralize(ut);
        UnityTypeClass newut = ProtocolSerialize.Deseralize <UnityTypeClass>(bs);

        Assert.AreEqual(ut.v2, newut.v2);
        Assert.AreEqual(ut.v3, newut.v3);
        Assert.AreEqual(ut.v4, newut.v4);
        Assert.AreEqual(ut.rect, newut.rect);
        Assert.AreEqual(ut.c, newut.c);
        Assert.AreEqual(ut.c32, newut.c32);
        Assert.AreEqual(ut.quaternion, newut.quaternion);
        for (int i = 0; i < ut.v2List.Count; i++)
        {
            Assert.AreEqual(ut.v2List[i], newut.v2List[i]);
        }
        for (int i = 0; i < ut.cArray.Length; i++)
        {
            Assert.AreEqual(ut.cArray[i], newut.cArray[i]);
        }
    }
コード例 #4
0
ファイル: PackageTest.cs プロジェクト: SeanTongTx/Protocol
        public void TestPackAndUnPack()
        {
            Class1 class1 = new Class1();

            class1.ArrayValue = new int[] { 1, 2, 3, 4, 5 };
            class1.Class2.s   = "classsedwqdsavcxvcxxxxxxxxxxxxxxxxxxdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                                + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                                + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                                + "aaaaxxxxxxczxcsadasdasdasdssssss";
            class1.b = true;
            class1.i = 12312;
            class1.listValue.Add(132);
            class1.Dictionary[1] = "dsasdasd";
            class1.Dictionary[2] = "ddscccxz";
            class1.s             = "192.168.1.37";
            ProtocolPackage[] packages = Packager.Pack(class1, 1024);
            Assert.AreEqual(packages.Length, 1);
            byte[] bytes = Packager.UnPack(packages);
            bytes = ProtocolSerialize.Seralize(packages[0]);
            ProtocolPackage package = ProtocolSerialize.Deseralize(typeof(ProtocolPackage), bytes) as ProtocolPackage;

            Assert.AreNotEqual(package, null);
        }
コード例 #5
0
        public void TestSeralize()
        {
            ExtendProtocolSerialize.Enable();
            Class1 class1 = new Class1();

            class1.ArrayValue = new int[] { 1, 2, 3, 4, 5 };
            class1.Class2.s   = "classsssssss";
            // class1.Dictionary[1] = class1;
            class1.b             = true;
            class1.i             = 12312;
            class1.f             = 5783f;
            class1.d             = 231f;
            class1.Dictionary[1] = "dsasdasd";
            class1.Dictionary[2] = "ddscccxz";
            // class1.listObject.Add(class1);
            class1.listValue.Add(132);
            // class1.obj = class1;
            class1.s = "class111111";

            byte[] bytes   = ProtocolSerialize.Seralize(class1);
            Class1 class11 = ProtocolSerialize.Deseralize(typeof(Class1), bytes) as Class1;

            Assert.IsTrue(class1.Equals(class11));
        }
コード例 #6
0
        public void TestSeralizePerformance()
        {
            int dataCount = 1000;
            int iteration = 1000;


            Class1 class1 = new Class1();

            class1.ArrayValue = new int[] { 1, 2, 3, 4, 5 };
            class1.Class2.s   = "classsedwqdsavdddddddddddddddddsdasdasddddddddddddddddd"
                                + "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
                                + "sdasddddddddddddddddd" + "asddddddddddddddd"
                                + "dasddddddddddddddddddddddxcvxcvxcvxcv"
                                + "cxvcxxxxxxxxxxxxxxxxxxxxxxxxczxcsadasdasdasdssssss";
            class1.b = true;
            class1.i = 12312;
            for (int i = 0; i < dataCount; i++)
            {
                class1.listValue.Add(i);
            }

            /*     class1.Dictionary[1] = "dsasdasd";
             *   class1.Dictionary[2] = "ddscccxz";*/
            class1.s = "192.168.1.37";

            Iterations iterations = new Iterations();

            for (int i = 0; i < iteration; i++)
            {
                iterations.class1s.Add(class1);
            }

            #region 序列化反序列化性能

            Stopwatch watch = new Stopwatch();
            byte[]    bytes = null; Iterations iterations1;
            byte[]    CompBbytes;
            {
                watch.Restart();
                bytes = BitSerializer.Seralize(iterations);
                watch.Stop();
                UnityEngine.Debug.Log("Bit seralizeTime:" + watch.ElapsedMilliseconds);
                // string s = ProtocolSerialize.DebugSeralizeStr(bytes);
                watch.Restart();
                iterations1 = BitSerializer.Deseralize(typeof(Iterations), bytes) as Iterations;
                watch.Stop();
                UnityEngine.Debug.Log("Bit DeseralizeTime:" + watch.ElapsedMilliseconds);


                #region 大小

                UnityEngine.Debug.Log("Protocol序列化:" + bytes.Length);
                CompBbytes = CompressBase.CompressBytes(bytes);
                UnityEngine.Debug.Log("压缩后:" + CompBbytes.Length);

                #endregion
            }
            {
                watch.Restart();
                ExtendProtocolSerialize.Enable();
                bytes = ProtocolSerialize.Seralize(iterations);
                watch.Stop();
                UnityEngine.Debug.Log("seralizeTime:" + watch.ElapsedMilliseconds);
                // string s = ProtocolSerialize.DebugSeralizeStr(bytes);
                watch.Restart();
                iterations1 = ProtocolSerialize.Deseralize(typeof(Iterations), bytes) as Iterations;
                watch.Stop();
                UnityEngine.Debug.Log("DeseralizeTime:" + watch.ElapsedMilliseconds);


                #region 大小

                UnityEngine.Debug.Log("Protocol序列化:" + bytes.Length);
                CompBbytes = CompressBase.CompressBytes(bytes);
                UnityEngine.Debug.Log("压缩后:" + CompBbytes.Length);

                #endregion
            }
            {
                watch.Restart();
                var json = UnityEngine.JsonUtility.ToJson(iterations);

                watch.Stop();
                UnityEngine.Debug.Log("json seralizeTime:" + watch.ElapsedMilliseconds);
                // string s = ProtocolSerialize.DebugSeralizeStr(bytes);
                watch.Restart();
                iterations1 = UnityEngine.JsonUtility.FromJson <Iterations>(json);
                watch.Stop();
                UnityEngine.Debug.Log("json DeseralizeTime:" + watch.ElapsedMilliseconds);
            }
            #endregion
        }
コード例 #7
0
        public void TestSeralizePerformance()
        {
            ExtendProtocolSerialize.Enable();
            Class1 class1 = new Class1();

            class1.Class2.s = "classsedwqdsavdddddddddddddddddsdasdasddddddddddddddddd"
                              + "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
                              + "sdasddddddddddddddddd" + "asddddddddddddddd"
                              + "dasddddddddddddddddddddddxcvxcvxcvxcv"
                              + "cxvcxxxxxxxxxxxxxxxxxxxxxxxxczxcsadasdasdasdssssss";
            class1.b = true;
            class1.i = 12312;

            int TestCont = 100;

            for (int i = 0; i < 1000; i++)
            {
                class1.listValue.Add((byte)i);
            }
            class1.ArrayValue = class1.listValue.ToArray();

            /*     class1.Dictionary[1] = "dsasdasd";
             *   class1.Dictionary[2] = "ddscccxz";*/
            class1.s = "192.168.1.37";
            #region 序列化反序列化性能

            Stopwatch watch = new Stopwatch();
            watch.Start();
            byte[] bytes = null;
            for (int i = 0; i < TestCont; i++)
            {
                bytes = ProtocolSerialize.Seralize(class1);
            }
            watch.Stop();
            UnityEngine.Debug.Log("seralizeTime:" + watch.ElapsedMilliseconds);
            string s = ProtocolSerialize.DebugSeralizeStr(bytes);
            watch.Restart();
            for (int i = 0; i < TestCont; i++)
            {
                Class1 class11 = ProtocolSerialize.Deseralize(typeof(Class1), bytes) as Class1;
            }
            watch.Stop();
            UnityEngine.Debug.Log("DeseralizeTime:" + watch.ElapsedMilliseconds);

            /* watch.Restart();
             * for (int i = 0; i < TestCont; i++)
             * {
             *   class1.ToByteArray();//2进制流输出
             * }
             * watch.Stop();
             * UnityEngine.Debug.Log("binaryBytesTime:" + watch.ElapsedMilliseconds);
             */
            watch.Restart();
            for (int i = 0; i < TestCont; i++)
            {
                UnityEngine.JsonUtility.ToJson(class1);
            }
            watch.Stop();
            UnityEngine.Debug.Log("seralize json:" + watch.ElapsedMilliseconds);
            s = UnityEngine.JsonUtility.ToJson(class1);
            watch.Restart();
            for (int i = 0; i < TestCont; i++)
            {
                UnityEngine.JsonUtility.FromJson <Class1>(s);
            }
            watch.Stop();
            UnityEngine.Debug.Log("DeseralizeTime json:" + watch.ElapsedMilliseconds);
            #endregion

            #region 大小

            byte[] binaryBytes = class1.ToByteArray();//2进制流输出
            UnityEngine.Debug.Log("二进制流直接输出:" + binaryBytes.Length);
            byte[] CompBinartBytes = CompressBase.CompressBytes(binaryBytes);
            UnityEngine.Debug.Log("压缩后:" + CompBinartBytes.Length);

            bytes = ProtocolSerialize.Seralize(class1);
            UnityEngine.Debug.Log("Protocol序列化:" + bytes.Length);
            byte[] CompBbytes = CompressBase.CompressBytes(bytes);
            UnityEngine.Debug.Log("压缩后:" + CompBbytes.Length);



            string base64 = Convert.ToBase64String(bytes);
            UnityEngine.Debug.Log("base64:" + base64.Length);

            string str       = UnityEngine.JsonUtility.ToJson(class1);// json.Serialize(class1);
            byte[] jsonbytes = Encoding.UTF8.GetBytes(str);
            UnityEngine.Debug.Log("Json序列化:" + jsonbytes.Length);
            byte[] Compjsonbytes = CompressBase.CompressBytes(jsonbytes);
            UnityEngine.Debug.Log("压缩后:" + Compjsonbytes.Length);
            jsonbytes = CompressBase.DecompressBytes(Compjsonbytes);
            str       = Encoding.UTF8.GetString(jsonbytes);
            int a = 0;

            #endregion
        }
コード例 #8
0
 public static void Unable()
 {
     ProtocolSerialize.UnregistSerialize(instance);
 }
コード例 #9
0
 public static void Enable()
 {
     ProtocolSerialize.RegistSerialize(instance);
 }