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); }
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)); }