Пример #1
0
        public void TestEscape()
        {
            var bs = new BinarySerializer();

            var s = "\"/{\u0001}\n\t\"\"";
            var v = new Sample1 { Y = s };
            var result = bs.ToBytes(v);
            Assert.AreEqual(
                "20 01 00 " + XS(typeof(Sample1)) + " 02 00 " +
                XS("X", RoughType.Int, "Y", RoughType.String) +
                " 01 00 00 00 00 00 02 00 " + XS(s) + " 00 00",
                XS(result));

            var w = new Sample1();
            var bd = new BinaryDeserializer();
            bd.FromBytes(w, result);
            Assert.AreEqual(s, w.Y);

            v.Y = "привет";
            var result2 = bs.ToBytes(v);
            Assert.AreEqual(
                "20 01 00 01 00 00 00 00 00 02 00 0C " +
                XS(Encoding.UTF8.GetBytes("привет")) + " 00 00",
                XS(result2));
            bd.FromBytes(w, result2);
            Assert.AreEqual(v.Y, w.Y);

            var ms = new MemoryStream(result2.Length);
            ms.Write(result2, 0, result2.Length);
            ms.Position = 0;
            bd.FromReader(w, new UnsafeBinaryReader(ms));
            Assert.AreEqual(v.Y, w.Y);
        }
Пример #2
0
        public void TestSignature()
        {
            var bs = new BinarySerializer();
            bs.BinaryOptions.AutoSignature = true;
            var result1 = bs.ToBytes(17);
            Assert.AreEqual("59 42 30 31 05 11 00 00 00", XS(result1));
            var bd = new BinaryDeserializer();
            bd.BinaryOptions.AutoSignature = true;
            Assert.AreEqual(17, bd.FromBytes<int>(result1));

            XAssert.Throws<YuzuException>(() => bd.FromBytes(new byte [] { 0x05, 0x11, 0, 0, 0 }), "ignature");

            var ms = new MemoryStream(new byte[] { 0x05, 0x12, 0, 0, 0 });
            bd.Reader = new BinaryReader(ms);
            Assert.IsFalse(bd.IsValidSignature());
            bd.BinaryOptions.AutoSignature = false;
            Assert.AreEqual(18, bd.FromReader<int>(bd.Reader));
        }