public void Field_value_table()
        {
            var expectedDouble = (double)-1 / 65537;
            var expectedString = "شصꩠ😄";
            var expectedTime   = new DateTime(9999, 12, 31, 23, 59, 59, DateTimeKind.Utc);

            var expected = new Dictionary <string, object>()
            {
                { "double", expectedDouble },
                { "string", expectedString },
                { "time", expectedTime }
            };

            var data = new object[] {
                'F', 0x00, 0x00, 0x00, 50,
                6, 'd', 'o', 'u', 'b', 'l', 'e',
                'd', 0xBE, 0xEF, 0xFF, 0xE0, 0x00, 0x1F, 0xFF, 0xE0,
                6, 's', 't', 'r', 'i', 'n', 'g',
                's', 11, 0xD8, 0xB4, 0xD8, 0xB5, 0xEA, 0xA9, 0xA0, 0xF0, 0x9F, 0x98, 0x84,
                4, 't', 'i', 'm', 'e',
                'T', 0x00, 0x00, 0x00, 0x3a, 0xff, 0xf4, 0x41, 0x7F
            };

            var bytes = data
                        .Select(x => Convert.ToByte(x))
                        .ToArray()
            ;

            var stream = new MemoryStream(bytes);
            var reader = new AmqpValueReader(stream, false);

            var value = reader.ReadFieldValue();

            Assert.Equal(expected, value);
        }
        public void Field_value_array()
        {
            var expectedDouble = (double)-1 / 65537;
            var expectedString = "شصꩠ😄";
            var expectedTime   = new DateTime(9999, 12, 31, 23, 59, 59, DateTimeKind.Utc);

            var expected = new object[]
            {
                expectedDouble,
                expectedString,
                expectedTime
            };

            var data = new object[] {
                'A', 0x00, 0x00, 0x00, 31,
                'd', 0xBE, 0xEF, 0xFF, 0xE0, 0x00, 0x1F, 0xFF, 0xE0,
                's', 11, 0xD8, 0xB4, 0xD8, 0xB5, 0xEA, 0xA9, 0xA0, 0xF0, 0x9F, 0x98, 0x84,
                'T', 0x00, 0x00, 0x00, 0x3a, 0xff, 0xf4, 0x41, 0x7F
            };

            var bytes = data
                        .Select(x => Convert.ToByte(x))
                        .ToArray()
            ;

            var stream = new MemoryStream(bytes);
            var reader = new AmqpValueReader(stream, false);

            var value = reader.ReadFieldValue();

            Assert.Equal(expected, value);
        }
        public void Field_value_time(int[] expected, object[] data)
        {
            var bytes = data
                        .Select(x => Convert.ToByte(x))
                        .ToArray()
            ;

            var stream = new MemoryStream(bytes);
            var reader = new AmqpValueReader(stream, false);

            var value = reader.ReadFieldValue();

            Assert.IsType <DateTime>(value);

            var time = (DateTime)value;

            var expectedTime = new DateTime(
                expected[0],
                expected[1],
                expected[2],
                expected[3],
                expected[4],
                expected[5],
                DateTimeKind.Utc
                );

            Assert.Equal(expectedTime, time);
            Assert.Equal(DateTimeKind.Utc, time.Kind);
        }
        public void Field_value_boolean_true(byte[] data)
        {
            var stream = new MemoryStream(data);
            var reader = new AmqpValueReader(stream, false);

            var value = reader.ReadFieldValue();

            Assert.IsType <bool>(value);

            Assert.Equal(true, value);
        }
        public void Field_value_string_with_multibyte_chars(string expected, object[] data)
        {
            var bytes = data
                        .Select(x => Convert.ToByte(x))
                        .ToArray()
            ;

            var stream = new MemoryStream(bytes);
            var reader = new AmqpValueReader(stream, false);

            Assert.Equal(expected, reader.ReadFieldValue());
        }
        public void Field_value_double(double expected, object[] data)
        {
            var bytes = data
                        .Select(x => Convert.ToByte(x))
                        .ToArray()
            ;

            var stream = new MemoryStream(bytes);
            var reader = new AmqpValueReader(stream, false);

            var value = reader.ReadFieldValue();

            Assert.IsType <double>(value);

            Assert.Equal(expected, value);
        }