示例#1
0
            public void ShouldThrowExceptionIfMarkerByteNotMap()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.False);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var ex = Xunit.Record.Exception(() => reader.ReadMapHeader());

                ex.Should().BeOfType <ProtocolException>();
                mockInput.Verify(x => x.ReadByte(), Times.Once);
            }
示例#2
0
            public void ShouldReadTinyMap()
            {
                var mockInput = IOExtensions.CreateMockStream(0xA2);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var header = reader.ReadMapHeader();

                header.Should().Be(2);
                mockInput.Verify(x => x.ReadByte(), Times.Once);
            }
示例#3
0
            public void ShouldReadMap32()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Map32, PackStreamBitConverter.GetBytes((int)-1));
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var header = reader.ReadMapHeader();

                header.Should().Be(uint.MaxValue);
                mockInput.Verify(x => x.ReadByte(), Times.Once);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
示例#4
0
            public void ShouldReadMap8()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Map8, (byte)1);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var header = reader.ReadMapHeader();

                header.Should().Be(1);
                mockInput.Verify(x => x.ReadByte(), Times.Once);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
示例#5
0
        public object Read(PackStreamReader reader, long size)
        {
            var urn = reader.ReadLong();

            var numLabels = (int)reader.ReadListHeader();
            var labels    = new List <string>(numLabels);

            for (var i = 0; i < numLabels; i++)
            {
                labels.Add(reader.ReadString());
            }
            var numProps = (int)reader.ReadMapHeader();
            var props    = new Dictionary <string, object>(numProps);

            for (var j = 0; j < numProps; j++)
            {
                var key = reader.ReadString();
                props.Add(key, reader.Read());
            }

            return(new Node(urn, labels, props));
        }