示例#1
0
        public void WebSocketFrame_GetBytes(WebSocketFrame frame)
        {
            byte[] bytes = frame.GetBytes();

            Assert.True((bytes[0] >> 7 == Convert.ToInt32(frame.fin)), "Frame FIN bit was not set properly");
            Assert.True((byte)(bytes[0] & 0b00001111) == frame.opcode, "Frame OPCode was not set properly");
            Assert.True((bytes[1] >> 7) == Convert.ToInt32(frame.masked), "Frame MASKED bit was not set properly");

            int length             = bytes[1] & 0b01111111;
            int messageBytesLength = System.Text.Encoding.UTF8.GetBytes(frame.Plaintext).Length;

            Assert.Equal(length, messageBytesLength);
            Assert.True(bytes.Length ==  2 + length, "Frame object did not return the correct number of bytes");

            byte[] realContent = new byte[length];
            Array.Copy(bytes, 2, realContent, 0, length);

            string read = System.Text.Encoding.UTF8.GetString(realContent);

            Assert.Equal(frame.Plaintext, read);
        }