internal static void WriteNull_SingleValue_HappyPath() { byte[] expectedEncoding = "f6".HexToByteArray(); using var writer = new CborWriter(); writer.WriteNull(); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
public static void WriteTextString_IndefiniteLength_WithPatching_SingleValue_HappyPath(string[] chunkInputs, string hexExpectedEncoding) { byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); using var writer = new CborWriter(encodeIndefiniteLengths: false); Helpers.WriteChunkedTextString(writer, chunkInputs); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
internal static void WriteSimpleValue_SingleValue_HappyPath(CborSimpleValue input, string hexExpectedEncoding) { byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); using var writer = new CborWriter(); writer.WriteSimpleValue(input); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
internal 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 WriteTextString_SingleValue_HappyPath(string input, string hexExpectedEncoding) { byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); using var writer = new CborWriter(); writer.WriteTextString(input); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
public static void WriteArray_NestedValues_HappyPath(object[] values, string expectedHexEncoding) { byte[] expectedEncoding = expectedHexEncoding.HexToByteArray(); using var writer = new CborWriter(); Helpers.WriteArray(writer, values); byte[] actualEncoding = writer.GetEncoding(); AssertHelper.HexEqual(expectedEncoding, actualEncoding); }
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_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 WriteUnixTimeSeconds_Double_SingleValue_HappyPath(double value, string expectedHexEncoding) { using var writer = new CborWriter(); writer.WriteUnixTimeSeconds(value); byte[] encoding = writer.GetEncoding(); AssertHelper.HexEqual(expectedHexEncoding.HexToByteArray(), encoding); }
internal 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 WriteTag_SingleValue_HappyPath(ulong tag, object value, string hexExpectedEncoding) { byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); using var writer = new CborWriter(); writer.WriteTag((CborTag)tag); Helpers.WriteValue(writer, value); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
public static void WriteDecimal_SingleValue_HappyPath(string stringValue, string expectedHexEncoding) { decimal value = decimal.Parse(stringValue, Globalization.CultureInfo.InvariantCulture); using var writer = new CborWriter(); writer.WriteDecimal(value); byte[] encoding = writer.GetEncoding(); AssertHelper.HexEqual(expectedHexEncoding.HexToByteArray(), encoding); }
internal 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 WriteByteString_IndefiniteLength_WithPatching_SingleValue_HappyPath(string[] hexChunkInputs, string hexExpectedEncoding) { byte[][] chunkInputs = hexChunkInputs.Select(ch => ch.HexToByteArray()).ToArray(); byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); using var writer = new CborWriter(); Helpers.WriteChunkedByteString(writer, chunkInputs); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
public static void WriteInteger_SingleValue_HappyPath(string valueString, string expectedHexEncoding) { BigInteger value = BigInteger.Parse(valueString); using var writer = new CborWriter(); writer.WriteBigInteger(value); byte[] encoding = writer.GetEncoding(); AssertHelper.HexEqual(expectedHexEncoding.HexToByteArray(), encoding); }
public static void WriteEncodedValue_ContextScenaria_HappyPath(object value, bool useDefiniteLength, string hexExpectedEncoding) { using var writer = new CborWriter(encodeIndefiniteLengths: !useDefiniteLength); Helpers.WriteValue(writer, value, useDefiniteLengthCollections: useDefiniteLength); string hexEncoding = writer.GetEncoding().ByteArrayToHex().ToLower(); Assert.Equal(hexExpectedEncoding, hexEncoding); }
public static void WriteDateTimeOffset_SingleValue_HappyPath(string valueString, string expectedHexEncoding) { DateTimeOffset value = DateTimeOffset.Parse(valueString); using var writer = new CborWriter(); writer.WriteDateTimeOffset(value); byte[] encoding = writer.GetEncoding(); AssertHelper.HexEqual(expectedHexEncoding.HexToByteArray(), encoding); }
public static void WriteTag_NestedTags_HappyPath(ulong[] tags, object value, string hexExpectedEncoding) { byte[] expectedEncoding = hexExpectedEncoding.HexToByteArray(); using var writer = new CborWriter(); foreach (ulong tag in tags) { writer.WriteTag((CborTag)tag); } Helpers.WriteValue(writer, value); AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
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_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 WriteEncodedValue_RootValue_HappyPath(string hexEncodedValue) { byte[] encodedValue = hexEncodedValue.HexToByteArray(); using var writer = new CborWriter(); writer.WriteEncodedValue(encodedValue); string hexResult = writer.GetEncoding().ByteArrayToHex(); Assert.Equal(hexEncodedValue, hexResult.ToLower()); }
public static void WriteEncodedValue_IndefiniteLengthByteString_HappyPath() { using var writer = new CborWriter(encodeIndefiniteLengths: true); writer.WriteStartByteString(); writer.WriteByteString(new byte[] { 1, 1, 1 }); writer.WriteEncodedValue("43020202".HexToByteArray()); writer.WriteEndByteString(); byte[] encoding = writer.GetEncoding(); Assert.Equal("5f4301010143020202ff", encoding.ByteArrayToHex().ToLower()); }
public static void CborWriter_MultipleRootLevelValuesAllowed_WritingMultipleRootValues_HappyPath(object value, int repetitions, string expectedHexEncoding) { byte[] expectedEncoding = expectedHexEncoding.HexToByteArray(); using var writer = new CborWriter(allowMultipleRootLevelValues: true); for (int i = 0; i < repetitions; i++) { Helpers.WriteValue(writer, value); } AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding()); }
public static void WriteEncodedValue_IndefiniteLengthTextString_HappyPath() { using var writer = new CborWriter(encodeIndefiniteLengths: true); writer.WriteStartTextString(); writer.WriteTextString("foo"); writer.WriteEncodedValue("63626172".HexToByteArray()); writer.WriteEndTextString(); byte[] encoding = writer.GetEncoding(); Assert.Equal("7f63666f6f63626172ff", encoding.ByteArrayToHex().ToLower()); }
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 GetEncoding_MultipleRootLevelValuesAllowed_PartialRootValue_ShouldThrowInvalidOperationException() { using var writer = new CborWriter(allowMultipleRootLevelValues: true); writer.WriteStartArray(1); writer.WriteDouble(3.14); writer.WriteEndArray(); writer.WriteStartArray(1); writer.WriteDouble(3.14); // misses writer.WriteEndArray(); Assert.Throws <InvalidOperationException>(() => writer.GetEncoding()); }
public static void TryWriteEncoding_DestinationTooSmall_ShouldReturnFalse(object value) { using var writer = new CborWriter(); Helpers.WriteValue(writer, value); byte[] encoding = writer.GetEncoding(); byte[] target = new byte[encoding.Length - 1]; bool result = writer.TryWriteEncoding(target, out int bytesWritten); Assert.False(result); Assert.Equal(0, bytesWritten); Assert.All(target, b => Assert.Equal(0, b)); }
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); }
public static void WriteEncodedValue_NestedValue_HappyPath(string hexEncodedValue) { byte[] encodedValue = hexEncodedValue.HexToByteArray(); using var writer = new CborWriter(); writer.WriteStartArray(3); writer.WriteInt64(1); writer.WriteEncodedValue(encodedValue); writer.WriteTextString(""); writer.WriteEndArray(); string hexResult = writer.GetEncoding().ByteArrayToHex(); Assert.Equal("8301" + hexEncodedValue + "60", hexResult.ToLower()); }