public void ReadBooleanArrayBig()
        {
            List<byte> s = new List<byte>();
            s.Add(0xff);
            for (int i = 0; i < 255; i++)
            {
                s.Add(0x00);
            }
            WireDecoder d = new WireDecoder(s.ToArray());

            var val = d.ReadValue(NtType.BooleanArray);
            Assert.That(val.Type, Is.EqualTo(NtType.BooleanArray));
            Assert.That(val.Value, Is.EqualTo(v_boolArrayBig.Value));

            Assert.That(d.ReadValue(NtType.BooleanArray), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
        public static List<RpcValue> UnpackRpcValues(byte[] packed, params NtType[] types)
        {
            WireDecoder dec = new WireDecoder(packed);

            List<RpcValue> values = new List<RpcValue>();
            foreach (var type in types)
            {
                var item = dec.ReadValue(type);
                if (item == null)
                {
                    values.Clear();
                    break;
                }
                values.Add(item);
            }
            return values;
        }
        public void TestReadStringArray()
        {
            List<byte> b = new List<byte>()
            {
                0x02,
                0x05
            };
            b.AddRange(Encoding.UTF8.GetBytes("hello"));
            b.Add(0x07);
            b.AddRange(Encoding.UTF8.GetBytes("goodbye"));
            b.Add(0x55);
            WireDecoder d = new WireDecoder(b.ToArray());

            var val = d.ReadValue(NtType.StringArray);
            Assert.That(val.Type, Is.EqualTo(NtType.StringArray));
            Assert.That(val.Value, Is.EqualTo(v_stringArray.Value));

            byte by = 0;
            Assert.That(d.Read8(ref by));
            Assert.That(by, Is.EqualTo(0x55));

            Assert.That(d.ReadValue(NtType.StringArray), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
        public void TestStringValue()
        {
            byte[] rawData = new byte[]
            {
                0x05, (byte)'h', (byte)'e', (byte)'l', (byte)'l', (byte)'o',
                0x03, (byte)'b', (byte)'y', (byte)'e', 0x55,
            };
            WireDecoder d = new WireDecoder(rawData);
            var val = d.ReadValue(NtType.String);
            Assert.That(val.Type, Is.EqualTo(NtType.String));
            Assert.That(val.Value, Is.EqualTo(v_string.Value));

            var vFalse = RpcValue.MakeString("bye");
            val = d.ReadValue(NtType.String);
            Assert.That(val.Type, Is.EqualTo(NtType.String));
            Assert.That(val.Value, Is.EqualTo(vFalse.Value));

            byte b = 0;
            Assert.That(d.Read8(ref b));
            Assert.That(b, Is.EqualTo(0x55));

            Assert.That(d.ReadValue(NtType.String), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
        public void TestReadDoubleArray()
        {
            byte[] b =
            {
                0x02, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x3f, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55
            };
            WireDecoder d = new WireDecoder(b);

            var val = d.ReadValue(NtType.DoubleArray);
            Assert.That(val.Type, Is.EqualTo(NtType.DoubleArray));
            Assert.That(val.Value, Is.EqualTo(v_doubleArray.Value));

            byte by = 0;
            Assert.That(d.Read8(ref by));
            Assert.That(by, Is.EqualTo(0x55));

            Assert.That(d.ReadValue(NtType.DoubleArray), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
        public void TestReadBooleanArray()
        {
            byte[] b = { 0x03, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0xff };
            WireDecoder d = new WireDecoder(b);

            var val = d.ReadValue(NtType.BooleanArray);
            Assert.That(val.Type, Is.EqualTo(NtType.BooleanArray));
            Assert.That(val.Value, Is.EqualTo(v_boolArray.Value));

            var boolArray2 = RpcValue.MakeBooleanArray(true, false);
            val = d.ReadValue(NtType.BooleanArray);
            Assert.That(val.Type, Is.EqualTo(NtType.BooleanArray));
            Assert.That(val.Value, Is.EqualTo(boolArray2.Value));

            Assert.That(d.ReadValue(NtType.BooleanArray), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
        public void TestDoubleValue()
        {
            byte[] rawData = new byte[]
            {
                0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };
            WireDecoder d = new WireDecoder(rawData);
            var val = d.ReadValue(NtType.Double);
            Assert.That(val.Type, Is.EqualTo(NtType.Double));
            Assert.That(val.Value, Is.EqualTo(v_double.Value));

            val = d.ReadValue(NtType.Double);
            Assert.That(val.Type, Is.EqualTo(NtType.Double));
            Assert.That(val.Value, Is.EqualTo(v_double.Value));

            Assert.That(d.ReadValue(NtType.Double), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
        public void TestBooleanValue()
        {
            byte[] rawData = new byte[] { 0x01, 0x00 };
            WireDecoder d = new WireDecoder(rawData);
            var val = d.ReadValue(NtType.Boolean);
            Assert.That(val.Type, Is.EqualTo(NtType.Boolean));
            Assert.That(val.Value, Is.EqualTo(v_boolean.Value));

            var vFalse = RpcValue.MakeBoolean(false);
            val = d.ReadValue(NtType.Boolean);
            Assert.That(val.Type, Is.EqualTo(NtType.Boolean));
            Assert.That(val.Value, Is.EqualTo(vFalse.Value));

            Assert.That(d.ReadValue(NtType.Boolean), Is.Null);
            Assert.That(d.Error, Is.Null);
        }
 public void ReadValueError()
 {
     WireDecoder d = new WireDecoder(new byte[0]);
     Assert.That(d.ReadValue(NtType.Unassigned), Is.Null);
     Assert.That(d.Error, Is.Not.Null);
 }