public static void WriteEndArray_DefiniteLengthNotMet_WithNestedData_ShouldThrowInvalidOperationException(int definiteLength) { using var writer = new CborWriter(); writer.WriteStartArray(definiteLength); for (int i = 1; i < definiteLength; i++) { writer.WriteStartArray(definiteLength: 1); writer.WriteInt64(i); writer.WriteEndArray(); } Assert.Throws <InvalidOperationException>(() => writer.WriteEndArray()); }
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 ExecOperation(CborWriter writer, string op) { switch (op) { case nameof(writer.WriteInt64): writer.WriteInt64(42); break; case nameof(writer.WriteByteString): writer.WriteByteString(Array.Empty <byte>()); break; case nameof(writer.WriteTextString): writer.WriteTextString(""); break; case nameof(writer.WriteStartTextString): writer.WriteStartTextString(); break; case nameof(writer.WriteStartByteString): writer.WriteStartByteString(); break; case nameof(writer.WriteStartArray): writer.WriteStartArray(); break; case nameof(writer.WriteStartMap): writer.WriteStartMap(); break; case nameof(writer.WriteEndByteString): writer.WriteEndByteString(); break; case nameof(writer.WriteEndTextString): writer.WriteEndTextString(); break; case nameof(writer.WriteEndArray): writer.WriteEndArray(); break; case nameof(writer.WriteEndMap): writer.WriteEndMap(); break; default: throw new Exception($"Unrecognized CborWriter operation name {op}"); } }
public static void WriteTag_NoValueInNestedContext_ShouldThrowInvalidOperationException() { using var writer = new CborWriter(); writer.WriteStartArray(); writer.WriteTag(CborTag.Uri); Assert.Throws <InvalidOperationException>(() => writer.WriteEndArray()); }
public static void WriteArray(CborWriter writer, params object[] values) { writer.WriteStartArray(values.Length); foreach (object value in values) { WriteValue(writer, value); } writer.WriteEndArray(); }
public static void WriteArray(CborWriter writer, object[] values, bool useDefiniteLengthCollections = true) { if (useDefiniteLengthCollections) { writer.WriteStartArray(values.Length); } else { writer.WriteStartArray(); } foreach (object value in values) { WriteValue(writer, value, useDefiniteLengthCollections); } writer.WriteEndArray(); }
public static void WriteEndMap_AfterStartArray_ShouldThrowInvalidOperationException(int depth) { using var writer = new CborWriter(); for (int i = 0; i < depth; i++) { if (i % 2 == 0) { writer.WriteStartArray(1); } else { writer.WriteStartMap(1); } } writer.WriteStartArray(definiteLength: 0); Assert.Throws <InvalidOperationException>(() => writer.WriteEndMap()); }
public static void WriteEndMap_ImbalancedCall_ShouldThrowInvalidOperationException(int depth) { using var writer = new CborWriter(); for (int i = 0; i < depth; i++) { writer.WriteStartArray(1); } Assert.Throws <InvalidOperationException>(() => writer.WriteEndMap()); }
public static void WriteArray_DefiniteLengthExceeded_ShouldThrowInvalidOperationException(int definiteLength) { using var writer = new CborWriter(); writer.WriteStartArray(definiteLength); for (int i = 0; i < definiteLength; i++) { writer.WriteInt64(i); } Assert.Throws <InvalidOperationException>(() => writer.WriteInt64(0)); }
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()); }
public static void WriteArray(CborWriter writer, params object[] values) { writer.WriteStartArray(values.Length); foreach (object value in values) { switch (value) { case int i: writer.WriteInt64(i); break; case string s: writer.WriteTextString(s); break; case byte[] b: writer.WriteByteString(b); break; case object[] nested: ArrayWriterHelper.WriteArray(writer, nested); break; default: throw new ArgumentException($"Unrecognized argument type {value.GetType()}"); } ; } writer.WriteEndArray(); }