public void TestGetNextMessageAsStringCanReadEmptyString()
        {
            //given
            String expected = "";

            byte[] inputBuffer = new byte[20];

            byte[] textBytes   = Encoding.UTF8.GetBytes(expected);
            byte[] lengthBytes = BitConverter.GetBytes((ushort)textBytes.Length);
            if (!BitConverter.IsLittleEndian)
            {
                Array.Reverse(lengthBytes);
            }
            Array.Copy(lengthBytes, 0, inputBuffer, 0, 2);
            Array.Copy(textBytes, 0, inputBuffer, 2, textBytes.Length);
            Stream stream = new MemoryStream(inputBuffer);

            RawMessageReader reader = new RawMessageReader(
                (buffer, count, offset) => stream.Read(buffer, offset, count));

            //when
            String actual = reader.GetNextMessageAsString();

            //then
            Assert.AreEqual(expected, actual);

            stream.Dispose();
        }
        public void TestGetNextMessageAsStringCanReadStringOfLength8KiB()
        {
            //given
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < 8192; i++)
            {
                sb.Append("a");
            }
            string expected = sb.ToString();

            byte[] inputBuffer = new byte[8194];

            byte[] textBytes   = Encoding.UTF8.GetBytes(expected);
            byte[] lengthBytes = BitConverter.GetBytes((ushort)textBytes.Length);
            if (!BitConverter.IsLittleEndian)
            {
                Array.Reverse(lengthBytes);
            }
            Array.Copy(lengthBytes, 0, inputBuffer, 0, 2);
            Array.Copy(textBytes, 0, inputBuffer, 2, textBytes.Length);
            Stream stream = new MemoryStream(inputBuffer);

            RawMessageReader reader = new RawMessageReader(
                (buffer, count, offset) => stream.Read(buffer, offset, count));

            //when
            String actual = reader.GetNextMessageAsString();

            //then
            Assert.AreEqual(expected, actual);

            stream.Dispose();
        }
示例#3
0
 private string GetNextMessageAsString(RawMessageReader reader)
 {
     try
     {
         return(reader.GetNextMessageAsString());
     }
     catch (Exception e)
     {
         throw new DisconnectedException(e);
     }
 }
        public void TestGetNextMessageAsStringThrowsExceptionOnInvalidRead()
        {
            //given

            var stream = new MemoryStream(new byte[] { 1 });
            RawMessageReader reader = new RawMessageReader(
                (buffer, count, offset) => stream.Read(buffer, offset, count));

            //when
            String result = reader.GetNextMessageAsString();

            //then
            //throws exception

            stream.Dispose();
        }