Exemple #1
0
        public static void ReadEndMap_DefiniteLengthNotMet_WithNestedData_ShouldThrowInvalidOperationException(string hexEncoding, int expectedLength)
        {
            byte[] encoding = hexEncoding.HexToByteArray();
            var    reader   = new CborReader(encoding);

            ulong?length = reader.ReadStartMap();

            Assert.Equal(expectedLength, (int)length !.Value);

            for (int i = 1; i < expectedLength; i++)
            {
                reader.ReadInt64(); // key

                ulong?nestedLength = reader.ReadStartMap();
                Assert.Equal(1, (int)nestedLength !.Value);
                reader.ReadInt64();
                reader.ReadInt64();
                reader.ReadEndMap();
            }

            int bytesRemaining = reader.BytesRemaining;

            Assert.Throws <InvalidOperationException>(() => reader.ReadEndMap());
            Assert.Equal(bytesRemaining, reader.BytesRemaining);
        }
            public static void VerifyMap(CborReader reader, object[] expectedValues, bool expectDefiniteLengthCollections = true)
            {
                if (!CborWriterTests.Helpers.IsCborMapRepresentation(expectedValues))
                {
                    throw new ArgumentException($"cbor map expected values missing '{CborWriterTests.Helpers.MapPrefixIdentifier}' prefix.");
                }

                Assert.Equal(CborReaderState.StartMap, reader.Peek());

                ulong?length = reader.ReadStartMap();

                if (expectDefiniteLengthCollections)
                {
                    Assert.NotNull(length);
                    Assert.Equal((expectedValues.Length - 1) / 2, (int)length !.Value);
                }
                else
                {
                    Assert.Null(length);
                }

                foreach (object value in expectedValues.Skip(1))
                {
                    VerifyValue(reader, value);
                }

                Assert.Equal(CborReaderState.EndMap, reader.Peek());
                reader.ReadEndMap();
            }
Exemple #3
0
        internal static void ReadMap_NonCanonicalLengths_SupportedConformanceLevel_ShouldSucceed(CborConformanceLevel level, string hexEncoding)
        {
            byte[] encoding = hexEncoding.HexToByteArray();
            var    reader   = new CborReader(encoding, level);
            int?   length   = reader.ReadStartMap();

            Assert.NotNull(length);
            Assert.Equal(0, length !.Value);
            reader.ReadEndMap();
        }
Exemple #4
0
        public static void ReadEndMap_ImbalancedCall_ShouldThrowInvalidOperationException(string hexEncoding, int depth)
        {
            byte[] encoding = hexEncoding.HexToByteArray();
            var    reader   = new CborReader(encoding);

            for (int i = 0; i < depth; i++)
            {
                reader.ReadStartArray();
            }

            Assert.Throws <InvalidOperationException>(() => reader.ReadEndMap());
        }
Exemple #5
0
        internal static void ReadMap_UnsortedKeys_ConformanceNotRequiringSortedKeys_ShouldSucceed(CborConformanceLevel level, object[] keySequence, string hexEncoding)
        {
            var reader = new CborReader(hexEncoding.HexToByteArray(), level);

            reader.ReadStartMap();
            foreach (object key in keySequence)
            {
                Helpers.VerifyValue(reader, key); // verify key
                reader.ReadInt32();               // value is always an integer
            }

            reader.ReadEndMap();
        }
Exemple #6
0
        public static void ReadMap_IndefiniteLength_OddKeyValuePairs_ShouldThrowFormatException(string hexEncoding, int length)
        {
            byte[] encoding = hexEncoding.HexToByteArray();
            var    reader   = new CborReader(encoding);

            reader.ReadStartMap();
            for (int i = 0; i < length; i++)
            {
                reader.ReadInt64();
            }

            Assert.Equal(CborReaderState.FormatError, reader.Peek()); // don't want this to fail
            Assert.Throws <FormatException>(() => reader.ReadEndMap());
        }
Exemple #7
0
        public static void ReadMap_IndefiniteLength_PrematureEndArrayCall_ShouldThrowInvalidOperationException(string hexEncoding, int length)
        {
            byte[] encoding = hexEncoding.HexToByteArray();
            var    reader   = new CborReader(encoding);

            reader.ReadStartMap();
            for (int i = 1; i < length; i++)
            {
                reader.ReadInt64();
            }

            Assert.Equal(CborReaderState.UnsignedInteger, reader.Peek());
            Assert.Throws <InvalidOperationException>(() => reader.ReadEndMap());
        }