Ejemplo n.º 1
0
        public void Rethrow()
        {
            var val = new TestRef();
            var con = new Dictionary <Type, IPacketConverter> {
                [typeof(TestRef)] = new TestConverter()
            };

            try
            {
                var buf = new PacketRawWriter(con).SetValue(val);
                Assert.Fail();
            }
            catch (PacketException ex) when(ex.ErrorCode == PacketError.ConvertError && ex.InnerException.Message == TestConverter._BytesErr)
            {
                // ignore
            }

            try
            {
                var res = new PacketRawReader(new byte[4], con).GetValue <TestRef>();
            }
            catch (Exception ex) when(ex.Message == TestConverter._ValueErr)
            {
                // ignore
            }
        }
Ejemplo n.º 2
0
public void RawArray()
{
    var src = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
    var arr = PacketWriter.Serialize(src).GetBytes();
    var rea = new PacketRawReader(new PacketReader(arr));
    var res = new List <int>();

    while (rea.Any)
    {
        res.Add(rea.GetValue <int>());
    }

    ThrowIfNotSequenceEqual(src, res);
}
Ejemplo n.º 3
0
public void RawObject()
{
    var a   = "Hello, world!";
    var b   = 0xFF;
    var res = new PacketRawWriter().SetValue(a).SetValue(b).GetBytes();

    var rea = new PacketRawReader(res, 0, res.Length);
    var ra  = rea.GetValue <string>();
    var rb  = rea.GetValue <int>();

    Assert.AreEqual(a, ra);
    Assert.AreEqual(b, rb);

    rea.Reset();
    Assert.AreEqual(a, rea.GetValue(typeof(string)));
    Assert.AreEqual(b, rea.GetValue(typeof(int)));
}
Ejemplo n.º 4
0
public void RawDynamic()
{
    var a   = "Hello, world!";
    var b   = 0xFF;
    var raw = new PacketRawWriter().SetValue(a, typeof(string)).SetValue(b, typeof(int));
    var wtr = new PacketWriter() as dynamic;

    wtr.a   = a;
    wtr.b   = b;
    wtr.raw = raw;
    var res = wtr.GetBytes();

    var src = new PacketReader(res) as dynamic;
    var rea = new PacketRawReader(src.raw);         // PacketReader or byte[]? Both of them can work
    var ra  = rea.GetValue <string>();
    var rb  = rea.GetValue <int>();

    Assert.AreEqual(a, (string)src.a);
    Assert.AreEqual(b, (int)src.b);
    Assert.AreEqual(a, ra);
    Assert.AreEqual(b, rb);
}
Ejemplo n.º 5
0
        public void Serialize()
        {
            var a   = 1;
            var b   = "value";
            var c   = new byte[] { 1, 2, 3, 4 };
            var d   = new[] { 1, 2, 3, 4 };
            var e   = new PacketRawWriter().SetValue(a).SetValue(b);
            var wtr = PacketWriter.Serialize(new
            {
                a,
                c,
                obj = new { b, d, e, },
                sub = new PacketWriter().SetValue("a", a).SetValue("b", b),
            });

            var buf = wtr.GetBytes();
            var rea = new PacketReader(buf);
            var raw = new PacketRawReader(rea["obj/e"]);
            var ra  = rea["a"].GetValue <int>();
            var rb  = rea["obj/b"].GetValue <string>();
            var rc  = rea["c"].GetEnumerable <byte>();
            var rd  = rea["obj/d"].GetEnumerable <int>();

            var ta = raw.GetValue <int>();
            var tb = raw.GetValue <string>();

            var sa = rea["sub/a"].GetValue <int>();
            var sb = rea["sub/b"].GetValue <string>();

            Assert.AreEqual(a, ra);
            Assert.AreEqual(b, rb);
            Assert.AreEqual(a, ta);
            Assert.AreEqual(b, tb);
            Assert.AreEqual(a, sa);
            Assert.AreEqual(b, sb);
            ThrowIfNotSequenceEqual(c, rc);
            ThrowIfNotSequenceEqual(d, rd);
        }
Ejemplo n.º 6
0
public void MixMode()
{
    var a   = 1234;
    var b   = "What the ...";
    var wtr = new PacketWriter().
              SetValue("a", a).
              SetValue("b", b).
              SetItem("c", new PacketRawWriter().
                      SetValue(a).
                      SetValue(b));
    var buf = wtr.GetBytes();
    var rea = new PacketReader(buf);
    var ra  = rea["a"].GetValue <int>();
    var rb  = rea["b"].GetValue <string>();
    var rc  = new PacketRawReader(rea["c"]);
    var rca = rc.GetValue <int>();
    var rcb = rc.GetValue <string>();

    Assert.AreEqual(a, ra);
    Assert.AreEqual(b, rb);
    Assert.AreEqual(rca, a);
    Assert.AreEqual(rcb, b);
    Assert.AreEqual(false, rc.Any);
}