public void Field_value_array()
        {
            var valueDouble = (double)-1 / 65537;
            var valueString = "شصꩠ😄";
            var valueTime   = new DateTime(9999, 12, 31, 23, 59, 59, DateTimeKind.Utc);

            var values = new object[]
            {
                valueDouble,
                valueString,
                valueTime
            };

            var expected = 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 expectedData = expected
                               .Select(x => Convert.ToByte(x))
                               .ToArray()
            ;

            var stream = new MemoryStream();
            var writer = new AmqpValueWriter(stream, false);

            writer.WriteFieldValue(values);

            var data = stream.ToArray();

            Assert.Equal(expectedData, data);
        }
        public void Field_value_time(int[] valueParts, object[] expected)
        {
            var value = new DateTime(
                valueParts[0],
                valueParts[1],
                valueParts[2],
                valueParts[3],
                valueParts[4],
                valueParts[5],
                DateTimeKind.Utc
                );

            var expectedData = expected
                               .Select(x => Convert.ToByte(x))
                               .ToArray()
            ;

            var stream = new MemoryStream();
            var writer = new AmqpValueWriter(stream, false);

            writer.WriteFieldValue(value);

            var data = stream.ToArray();

            Assert.Equal(expectedData, data);
        }
        public void Field_value_nested_table()
        {
            var valueDouble = (double)-1 / 65537;
            var valueString = "شصꩠ😄";
            var valueTime   = new DateTime(9999, 12, 31, 23, 59, 59, DateTimeKind.Utc);

            var values = new Dictionary <string, object>()
            {
                { "double", valueDouble },
                { "string", valueString },
                { "time", valueTime },
                { "nested", new Dictionary <string, object>()
                  {
                      { "double", valueDouble },
                      { "string", valueString },
                      { "time", valueTime }
                  } }
            };

            var exprected = new object[] {
                'F', 0x00, 0x00, 0x00, 112,
                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,
                6, 'n', 'e', 's', 't', 'e', 'd',
                '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 expectedData = exprected
                               .Select(x => Convert.ToByte(x))
                               .ToArray()
            ;

            var stream = new MemoryStream();
            var writer = new AmqpValueWriter(stream, false);

            writer.WriteFieldValue(values);

            var data = stream.ToArray();

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

            var stream = new MemoryStream();
            var writer = new AmqpValueWriter(stream, false);

            writer.WriteFieldValue(value);

            var data = stream.ToArray();

            Assert.Equal(expectedData, data);
        }
        public void Field_value_boolean_true()
        {
            var expected = new object[] { 't', 1 }
            .Select(x => Convert.ToByte(x))
            .ToArray()
            ;

            var stream = new MemoryStream();
            var writer = new AmqpValueWriter(stream, false);

            writer.WriteFieldValue(true);

            var data = stream.ToArray();

            Assert.Equal(expected, data);
        }