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());
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); }