public static void WriteMap_DuplicateKeys_StrictConformance_ShouldBeRecoverableError(CborConformanceLevel level, object dupeKey)
        {
            byte[] expected = PerformWrite(attemptDuplicateWrite: false);
            byte[] actual   = PerformWrite(attemptDuplicateWrite: true);
            Assert.Equal(expected.ByteArrayToHex(), actual.ByteArrayToHex());

            byte[] PerformWrite(bool attemptDuplicateWrite)
            {
                using var writer = new CborWriter(level);
                writer.WriteStartMap(2);
                Helpers.WriteValue(writer, dupeKey);
                writer.WriteInt32(0);

                if (attemptDuplicateWrite)
                {
                    Assert.Throws <InvalidOperationException>(() => Helpers.WriteValue(writer, dupeKey));
                }

                // wrap dupe key in an array to satisfy key sorting & uniqueness constraints
                Helpers.WriteValue(writer, new object[] { dupeKey });
                writer.WriteInt32(0);
                writer.WriteEndMap();

                return(writer.GetEncoding());
            }
        }
 public static void WriteMap_IndefiniteLength_WithPatching_NestedValues_HappyPath(object[] values, string expectedHexEncoding)
 {
     byte[] expectedEncoding = expectedHexEncoding.HexToByteArray();
     using var writer = new CborWriter();
     Helpers.WriteMap(writer, values, useDefiniteLengthCollections: false);
     byte[] actualEncoding = writer.GetEncoding();
     AssertHelper.HexEqual(expectedEncoding, actualEncoding);
 }
 public static void WriteMap_NestedValues_HappyPath(object[] values, string expectedHexEncoding)
 {
     byte[] expectedEncoding = expectedHexEncoding.HexToByteArray();
     using var writer = new CborWriter();
     Helpers.WriteMap(writer, values);
     byte[] actualEncoding = writer.GetEncoding();
     AssertHelper.HexEqual(expectedEncoding, actualEncoding);
 }
 public static void WriteMap_SimpleValues_ShouldSortKeysAccordingToConformanceLevel(CborConformanceLevel level, object value, string expectedHexEncoding)
 {
     byte[] expectedEncoding = expectedHexEncoding.HexToByteArray();
     using var writer = new CborWriter(level);
     Helpers.WriteValue(writer, value);
     byte[] actualEncoding = writer.GetEncoding();
     AssertHelper.HexEqual(expectedEncoding, actualEncoding);
 }
 public static void WriteMap_DuplicateKeys_ShouldSucceed(object[] values, string expectedHexEncoding)
 {
     byte[] expectedEncoding = expectedHexEncoding.HexToByteArray();
     using var writer = new CborWriter();
     Helpers.WriteMap(writer, values);
     byte[] actualEncoding = writer.GetEncoding();
     AssertHelper.HexEqual(expectedEncoding, actualEncoding);
 }
 public static void WriteMap_NestedValues_ShouldSortKeysAccordingToConformanceLevel(string expectedHexEncoding, CborConformanceLevel level)
 {
     object[] value            = new object[] { Map, -1, 0, new object[] { Map, 3, 3, 2, 2, 1, 1 }, 0, "a", 0, 256, 0, new object[] { Map, 2, 2, 1, 1 }, 0 };
     byte[]   expectedEncoding = expectedHexEncoding.HexToByteArray();
     using var writer = new CborWriter(level);
     Helpers.WriteValue(writer, value);
     byte[] actualEncoding = writer.GetEncoding();
     AssertHelper.HexEqual(expectedEncoding, actualEncoding);
 }
        public static void Roundtrip_UInt64(ulong input)
        {
            using var writer = new CborWriter();
            writer.WriteUInt64(input);
            byte[] encoding = writer.GetEncoding();

            var   reader = new CborReader(encoding);
            ulong result = reader.ReadUInt64();

            Assert.Equal(input, result);
        }
        public static void Roundtrip_TextString(string?input)
        {
            using var writer = new CborWriter();
            writer.WriteTextString(input);
            byte[] encoding = writer.GetEncoding();

            var    reader = new CborReader(encoding);
            string result = reader.ReadTextString();

            Assert.Equal(input ?? "", result);
        }
        public static void Roundtrip_ByteString(string?hexInput)
        {
            byte[]? input = hexInput?.HexToByteArray();
#endif
            using var writer = new CborWriter();
            writer.WriteByteString(input);
            byte[] encoding = writer.GetEncoding();

            var    reader = new CborReader(encoding);
            byte[] result = reader.ReadByteString();
            AssertHelper.HexEqual(input ?? Array.Empty <byte>(), result);
        }
        public static void ByteString_Encoding_ShouldContainInputBytes(string?hexInput)
        {
            byte[]? input = hexInput?.HexToByteArray();
#endif
            using var writer = new CborWriter();
            writer.WriteByteString(input);
            byte[] encoding = writer.GetEncoding();

            int length = input?.Length ?? 0;
            int lengthEncodingLength = GetLengthEncodingLength(length);

            Assert.Equal(lengthEncodingLength + length, encoding.Length);
            AssertHelper.HexEqual(input ?? Array.Empty <byte>(), encoding.Skip(lengthEncodingLength).ToArray());
Beispiel #11
0
        public static void TryWriteEncoding_HappyPath(object value)
        {
            using var writer = new CborWriter();
            Helpers.WriteValue(writer, value);

            byte[] encoding = writer.GetEncoding();
            byte[] target   = new byte[encoding.Length];

            bool result = writer.TryWriteEncoding(target, out int bytesWritten);

            Assert.True(result);
            Assert.Equal(encoding.Length, bytesWritten);
            Assert.Equal(encoding, target);
        }