예제 #1
0
            public async void ShouldReadRecordMessageReturningPath()
            {
                var fields    = new object[0];
                var mockInput =
                    IOExtensions.CreateMockStream("00 0d b1 71 91 B3 50 91 B3 4E 01 90 A0 90 90 00 00");
                var mockResponseHandler = new Mock <IMessageResponseHandler>();

                mockResponseHandler.Setup(x => x.HandleRecordMessage(It.IsAny <object[]>()))
                .Callback <object[]>(x => fields = x);
                var reader = new BoltReader(mockInput.Object);

                await reader.ReadAsync(mockResponseHandler.Object);

                mockResponseHandler.Verify(x => x.HandleRecordMessage(It.IsAny <object[]>()), Times.Once);

                fields.Should().NotBeNull();
                fields.Should().HaveCount(1);

                var p = fields[0] as IPath;

                p.Should().NotBeNull();

                p.Start.Should().NotBeNull();
                p.End.Should().NotBeNull();
                p.Start.Id.Should().Be(1);
                p.Start.Properties.Should().BeEmpty();
                p.Start.Labels.Should().BeEmpty();
                p.Nodes.Should().HaveCount(1);
                p.Relationships.Should().HaveCount(0);
            }
예제 #2
0
            public void ShouldReadSuccessMessage()
            {
                var dict      = (IDictionary <string, object>)null;
                var mockInput =
                    IOExtensions.CreateMockStream("00 14 B1 70 A1 86  66 69 65 6C  64 73 92 84  6E 61 6D 65 83 61 67 65 00 00");
                var mockResponseHandler = new Mock <IMessageResponseHandler>();

                mockResponseHandler.Setup(x => x.HandleSuccessMessage(It.IsAny <IDictionary <string, object> >()))
                .Callback <IDictionary <string, object> >(x => dict = x);
                var reader = new BoltReader(mockInput.Object);

                reader.Read(mockResponseHandler.Object);

                mockResponseHandler.Verify(x => x.HandleSuccessMessage(It.IsAny <IDictionary <string, object> >()), Times.Once);
                dict.Should().NotBeNull();
                dict.Should().HaveCount(1);
                dict.Should().ContainKey("fields");

                var fieldsValue = dict["fields"];

                fieldsValue.Should().NotBeNull();
                fieldsValue.Should().BeAssignableTo <IList <object> >();

                var fields = (IList <object>)fieldsValue;

                fields.Should().HaveCount(2);
                fields.Should().Contain("name");
                fields.Should().Contain("age");
            }
예제 #3
0
            public async void ShouldReadRecordMessageReturningRelationship()
            {
                var fields    = new object[0];
                var mockInput =
                    IOExtensions.CreateMockStream("00 0A b1 71 91 B5 52 01 02 03 80 a0 00 00");
                var mockResponseHandler = new Mock <IMessageResponseHandler>();

                mockResponseHandler.Setup(x => x.HandleRecordMessage(It.IsAny <object[]>()))
                .Callback <object[]>(x => fields = x);
                var reader = new BoltReader(mockInput.Object);

                await reader.ReadAsync(mockResponseHandler.Object);

                mockResponseHandler.Verify(x => x.HandleRecordMessage(It.IsAny <object[]>()), Times.Once);

                fields.Should().NotBeNull();
                fields.Should().HaveCount(1);

                var rel = fields[0] as IRelationship;

                rel.Should().NotBeNull();

                rel.Id.Should().Be(1);
                rel.StartNodeId.Should().Be(2);
                rel.EndNodeId.Should().Be(3);
                rel.Type.Should().BeEmpty();
                rel.Properties.Should().BeEmpty();
            }
예제 #4
0
            public void ShouldReadRecordMessageReturningNode()
            {
                var fields    = new object[0];
                var mockInput =
                    IOExtensions.CreateMockStream("00 08 b1 71 91 B3 4E 01 90 A0 00 00");
                var mockResponseHandler = new Mock <IMessageResponseHandler>();

                mockResponseHandler.Setup(x => x.HandleRecordMessage(It.IsAny <object[]>()))
                .Callback <object[]>(x => fields = x);
                var reader = new BoltReader(mockInput.Object);

                reader.Read(mockResponseHandler.Object);

                mockResponseHandler.Verify(x => x.HandleRecordMessage(It.IsAny <object[]>()), Times.Once);

                fields.Should().NotBeNull();
                fields.Should().HaveCount(1);

                var n = fields[0] as INode;

                n.Should().NotBeNull();

                n.Id.Should().Be(1);
                n.Properties.Should().BeEmpty();
                n.Labels.Should().BeEmpty();
            }
예제 #5
0
            public void ShouldThrowExceptionIfMarkerByteNotTrueOrFalse()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Bytes16);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

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

                ex.Should().BeOfType <ProtocolException>();
            }
예제 #6
0
            public void ShouldReadZeroLengthBytes()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Bytes8, 0);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadBytes();

                real.Length.Should().Be(0);
            }
예제 #7
0
            private void ShouldReadNumCorrectly(long expected, byte[] data)
            {
                var mockInput = IOExtensions.CreateMockStream(data);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.Read();

                real.Should().Be(expected);
            }
예제 #8
0
            public void ShouldReadNullThroughRead()
            {
                var mockInput =
                    IOExtensions.CreateMockStream(PackStream.Null);
                var reader = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.Read();

                real.Should().BeNull();
            }
예제 #9
0
            [InlineData(0x7F, 127)] // 7F to FF
            public void ShouldReadLongAsTinyByte(byte data, sbyte expected)
            {
                var mockInput = IOExtensions.CreateMockStream(data);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = (sbyte)reader.ReadLong();

                real.Should().Be(expected);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
예제 #10
0
            public void ShouldReadString8()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.String8, (byte)1, 0x61);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadString();

                real.Should().Be("a");
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(3));
            }
예제 #11
0
            public void ShouldReadTinyStruct()
            {
                var mockInput = IOExtensions.CreateMockStream(0xB2);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var header = reader.ReadStructHeader();

                header.Should().Be(2);
                mockInput.Verify(x => x.ReadByte(), Times.Once);
            }
예제 #12
0
            public void ShouldCallReadByteOnce()
            {
                var mockInput = IOExtensions.CreateMockStream(0xFF);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var signature = reader.ReadStructSignature();

                signature.Should().Be(0xFF);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
예제 #13
0
            internal void ShouldPeekTypeCorrectly(byte marker, PackStream.PackType expected)
            {
                var mockInput = IOExtensions.CreateMockStream(marker);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var nextType = reader.PeekNextType();

                nextType.Should().Be(expected);
                mockInput.Verify(x => x.ReadByte(), Times.Once);
            }
예제 #14
0
            public void ShouldThrowExceptionIfMarkerByteNotBytes()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.False);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

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

                ex.Should().BeOfType <ProtocolException>();
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
예제 #15
0
            public void ShouldReadBooleanFalseSuccessfully()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.False);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadBoolean();

                real.Should().BeFalse();
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
예제 #16
0
            public void ShouldThrowExceptionWhenReadBytes32ReturnsBytesSizeLonggerThanIntMax()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Bytes32, PackStreamBitConverter.GetBytes((int)-1));
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

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

                ex.Should().BeOfType <ProtocolException>();
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(2));
            }
예제 #17
0
            public void ShouldThrowExceptionIfMarkerByteUnDefined()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.ReservedC4);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

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

                ex.Should().BeOfType <ProtocolException>();
                mockInput.Verify(x => x.ReadByte(), Times.Once);
            }
예제 #18
0
            public void ShouldReadTinyStringAsEmptyString()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.TinyString);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadString();

                real.Should().BeEmpty(); //.Equals(String.Empty);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Once);
            }
예제 #19
0
            public void ShouldReadList8()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.List8, (byte)1);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var header = reader.ReadListHeader();

                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);
            }
예제 #20
0
        public void ShouldThrowWhenBytesIsSent()
        {
            var mockInput =
                IOExtensions.CreateMockStream("CC 01 01".ToByteArray());
            var reader = new PackStreamReaderBytesIncompatible(mockInput.Object, BoltReader.StructHandlers);

            var ex = Record.Exception(() => reader.Read());

            ex.Should().NotBeNull();
            ex.Should().BeOfType <ProtocolException>();
        }
예제 #21
0
            public void ShouldReadLongAsSignedByte()
            {
                const sbyte expected  = 1;
                var         mockInput = IOExtensions.CreateMockStream(PackStream.Int8, (byte)expected);
                var         reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = (sbyte)reader.ReadLong();

                real.Should().Be(expected);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(2));
            }
예제 #22
0
            public void ShouldReadStruct16()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Struct16, PackStreamBitConverter.GetBytes((short)1));
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var header = reader.ReadStructHeader();

                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);
            }
예제 #23
0
            public void ShouldReadDoubleCorrectly()
            {
                const double expected  = 1.12;
                var          mockInput = IOExtensions.CreateMockStream(PackStream.Float64, PackStreamBitConverter.GetBytes(expected));
                var          reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadDouble();

                real.Should().Be(expected);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(2));
            }
예제 #24
0
            public void ShouldReadLongAsInt()
            {
                const int expected  = 1024;
                var       mockInput = IOExtensions.CreateMockStream(PackStream.Int32, PackStreamBitConverter.GetBytes(expected));
                var       reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadLong();

                real.Should().Be(expected);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(2));
            }
예제 #25
0
            public void ShouldReadFailureMessage()
            {
                var mockInput =
                    IOExtensions.CreateMockStream("00 47 B1 7F A2 84  63 6F 64 65  D0 25 4E 65  6F 2E 43 6C 69 65 6E 74  45 72 72 6F  72 2E 53 74  61 74 65 6D 65 6E 74 2E  53 79 6E 74  61 78 45 72  72 6F 72 87 6D 65 73 73  61 67 65 8F  49 6E 76 61  6C 69 64 20 73 79 6E 74  61 78 2E 00 00");
                var mockResponseHandler = new Mock <IMessageResponseHandler>();
                var reader = new BoltReader(mockInput.Object);

                reader.Read(mockResponseHandler.Object);

                mockResponseHandler.Verify(x => x.HandleFailureMessage("Neo.ClientError.Statement.SyntaxError", "Invalid syntax."), Times.Once);
            }
예제 #26
0
            public void ShouldReadBytes8()
            {
                var mockInput = IOExtensions.CreateMockStream(PackStream.Bytes8, 1, 0x61);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadBytes();

                real.Length.Should().Be(1);
                real.Should().Contain(0x61);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(3));
            }
예제 #27
0
            public void ShouldReadString32()
            {
                var mockInput = IOExtensions.CreateMockStream(new byte[] { PackStream.String32 },
                                                              PackStreamBitConverter.GetBytes((int)1), new byte[] { 0x61 });
                var reader = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadString();

                real.Should().Be("a");
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(3));
            }
예제 #28
0
            public void ShouldReadIgnoredMessage()
            {
                var mockInput =
                    IOExtensions.CreateMockStream("00 02 B0 7E 00 00");
                var mockResponseHandler = new Mock <IMessageResponseHandler>();
                var reader = new BoltReader(mockInput.Object);

                reader.Read(mockResponseHandler.Object);

                mockResponseHandler.Verify(x => x.HandleIgnoredMessage(), Times.Once);
            }
예제 #29
0
            public void ShouldReadBytes16()
            {
                var mockInput = IOExtensions.CreateMockStream(new byte[] { PackStream.Bytes16 },
                                                              PackStreamBitConverter.GetBytes((short)1), new byte[] { 0x61 });
                var reader = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var real = reader.ReadBytes();

                real.Length.Should().Be(1);
                real.Should().Contain(0x61);
                mockInput.Verify(x => x.Read(It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(3));
            }
예제 #30
0
            public void ShouldThrowExceptionWhenTheresNoBytesToPeek()
            {
                var mockInput = IOExtensions.CreateMockStream(new byte[0]);
                var reader    = new PackStreamReader(mockInput.Object, BoltReader.StructHandlers);

                var ex = Record.Exception(() => reader.PeekByte());

                ex.Should().BeOfType <ProtocolException>();
                mockInput.Verify(x => x.Length, Times.Once);
                mockInput.Verify(x => x.Position, Times.Once);
                mockInput.Verify(x => x.Seek(-1, SeekOrigin.Current), Times.Never);
            }