Exemplo n.º 1
0
 internal static void WriteNull_SingleValue_HappyPath()
 {
     byte[] expectedEncoding = "f6".HexToByteArray();
     using var writer = new CborWriter();
     writer.WriteNull();
     AssertHelper.HexEqual(expectedEncoding, writer.GetEncoding());
 }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
 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());
 }
Exemplo n.º 4
0
        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());
            }
        }
Exemplo n.º 5
0
 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());
 }
Exemplo n.º 6
0
 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);
 }
Exemplo n.º 7
0
 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);
 }
Exemplo n.º 8
0
 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);
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 11
0
 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());
 }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
 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);
 }
Exemplo n.º 14
0
        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());
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
 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());
 }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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());
        }
Exemplo n.º 22
0
        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());
        }
Exemplo n.º 23
0
        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());
        }
Exemplo n.º 24
0
        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());
        }
Exemplo n.º 25
0
        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);
        }
Exemplo n.º 26
0
        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());
Exemplo n.º 27
0
        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());
        }
Exemplo n.º 28
0
        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));
        }
Exemplo n.º 29
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);
        }
Exemplo n.º 30
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());
        }