public void TestReadInvalidInputFirstLine(string line)
        {
            var socket = A.Fake <ISocketConnectionProxy>();
            var reader = new SocketStreamReader(socket);
            var values = new List <int>();

            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes(line, false));
            reader.Read(value => values.Add(value));

            Assert.Equal(0, values.Count);
        }
        public void TestReadSuccessWithLatentReceipt()
        {
            var socket = A.Fake <ISocketConnectionProxy>();
            var reader = new SocketStreamReader(socket);
            var values = new List <int>();

            StubReceive(socket, 5, SocketStreamReader.ChunkSize - 5, GetBytes("6789"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("12345", false));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("123456789"));

            reader.Read(value => values.Add(value));

            Assert.Equal(
                new int[] { 123456789, 123456789 },
                values.ToArray());
        }
        public void TestReadInvalidSubsequentLine()
        {
            var socket = A.Fake <ISocketConnectionProxy>();
            var reader = new SocketStreamReader(socket);
            var values = new List <int>();

            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("123456789"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("12345678", false));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("003456789"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("023456789"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("123456789"));

            reader.Read(value => values.Add(value));

            Assert.Equal(
                new int[] { 123456789, 23456789, 3456789 },
                values.ToArray());
        }
        public void TestReadSuccessWithTerminateSequence()
        {
            var socket     = A.Fake <ISocketConnectionProxy>();
            var reader     = new SocketStreamReader(socket);
            var values     = new List <int>();
            var terminated = false;

            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("123456789"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("terminate"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("123456789"));
            StubReceive(socket, 0, SocketStreamReader.ChunkSize, GetBytes("123456789"));

            reader.Read(value => values.Add(value), () => terminated = true);

            Assert.Equal(
                new int[] { 123456789, 123456789 },
                values.ToArray());
            Assert.True(terminated);
        }