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); }