/// <summary>
        /// Verify the message of RopGetMessageStatus.
        /// </summary>
        /// <param name="retuResponse">The response of RopGetMessageStatus</param>
        private void VerifyGetMessageStatusResponse(RopSetMessageStatusResponse retuResponse)
        {
            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R793");

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R793
            this.Site.CaptureRequirementIfAreEqual<int>(
                4,
                retuResponse.MessageStatusFlags.ToString().Length,
                793,
                @"[In RopGetMessageStatus ROP Response Buffer] MessageStatusFlags: 4 bytes indicating the status of the Message object.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R794. The value of MessageStatusFlags is {0}.", retuResponse.MessageStatusFlags);

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R794
            bool isVerifiedR794 = false;
            uint messageStatusFlags = retuResponse.MessageStatusFlags;
            uint value = 0 | 0x00001000 | 0x00000800 | 0x00002000;
            if ((messageStatusFlags | value) == value)
            {
                isVerifiedR794 = true;
            }

            this.Site.CaptureRequirementIfIsTrue(
                isVerifiedR794,
                794,
                @"[In RopGetMessageStatus ROP Response Buffer] [MessageStatusFlags] This field contains a bitwise OR of zero or more values from the table in section 2.2.1.8.");
        }
        /// <summary>
        /// Verify RopSetMessageStatus Failure Response
        /// </summary>
        /// <param name="ropSetMessageStatusResponse">The response of RopSetMessageStatus request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSetMessageStatus request</param>
        private void VerifyRopSetMessageStatusFailureResponse(RopSetMessageStatusResponse ropSetMessageStatusResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2025");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2025
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropSetMessageStatusResponse.RopId.GetType(),
                2025,
                @"[In RopSetMessageStatus ROP Failure Response Buffer]RopId (1 byte): An unsigned integer.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2027");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2027
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopSetMessageStatus,
                ropSetMessageStatusResponse.RopId,
                2027,
                @"[In RopSetMessageStatus ROP Failure Response Buffer,RopId (1 byte)]For this operation[RopSetMessageStatus], this field is set to 0x20.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2028");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2028
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropSetMessageStatusResponse.InputHandleIndex.GetType(),
                2028,
                @"[In RopSetMessageStatus ROP Failure Response Buffer]InputHandleIndex (1 byte): An unsigned integer.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2029");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2029
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropSetMessageStatusResponse.InputHandleIndex,
                2029,
                @"[In RopSetMessageStatus ROP Failure Response Buffer,InputHandleIndex (1 byte)]This index MUST be set to the value specified in the InputHandleIndex field in the request.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2031");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2031
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(uint),
                ropSetMessageStatusResponse.ReturnValue.GetType(),
                2031,
                @"[In RopSetMessageStatus ROP Failure Response Buffer]ReturnValue (4 bytes): An unsigned integer.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2033");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2033
            Site.CaptureRequirementIfAreNotEqual<uint>(
                SuccessReturnValue,
                ropSetMessageStatusResponse.ReturnValue,
                2033,
                @"[In RopSetMessageStatus ROP Failure Response Buffer,ReturnValue (4 bytes)]For this response[Failure Response ], this field is set to a value other than 0x00000000.");
        }
        /// <summary>
        /// Verify the property of MessageStatusFlags
        /// </summary>
        /// <param name="retuResponse"> The response of RopSetMessageStatus.</param>
        private void VerifyMessageSyntaxMessageStatusFlags(RopSetMessageStatusResponse retuResponse)
        {
            uint messageStatusFlags = retuResponse.MessageStatusFlags;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R807");

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R807
            bool isVerifyR807 = false;
            uint value = 0 | 0x00001000 | 0x00000800 | 0x00002000;
            if ((messageStatusFlags | value) == value)
            {
                isVerifyR807 = true;
            }

            Site.CaptureRequirementIfIsTrue(
                isVerifyR807,
                807,
                @"[In RopSetMessageStatus ROP Response Buffer] [MessageStatusFlags] This field MUST contain a bitwise OR of zero or more values from the table in section 2.2.1.8.");
        }
        /// <summary>
        /// Verify RopSetMessageStatus Success Response
        /// </summary>
        /// <param name="ropSetMessageStatusResponse">The response of RopSetMessageStatus request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSetMessageStatus request</param>
        private void VerifyRopSetMessageStatusSuccessResponse(RopSetMessageStatusResponse ropSetMessageStatusResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2013");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2013
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropSetMessageStatusResponse.RopId.GetType(),
                2013,
                @"[In RopSetMessageStatus ROP Success Response Buffer]RopId (1 byte): An unsigned integer.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2015");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2015
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopSetMessageStatus,
                ropSetMessageStatusResponse.RopId,
                2015,
                @"[In RopSetMessageStatus ROP Success Response Buffer,RopId (1 byte)]For this operation[RopSetMessageStatus], this field is set to 0x20.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2016");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2016
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropSetMessageStatusResponse.InputHandleIndex.GetType(),
                2016,
                @"[In RopSetMessageStatus ROP Success Response Buffer]InputHandleIndex (1 byte): An unsigned integer.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2017");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2017
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropSetMessageStatusResponse.InputHandleIndex,
                2017,
                @"[In RopSetMessageStatus ROP Success Response Buffer,InputHandleIndex (1 byte)]This index MUST be set to the value specified in the InputHandleIndex field in the request.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2019");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2019
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(uint),
                ropSetMessageStatusResponse.ReturnValue.GetType(),
                2019,
                @"[In RopSetMessageStatus ROP Success Response Buffer]ReturnValue (4 bytes): An unsigned integer.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2021");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2021
            Site.CaptureRequirementIfAreEqual<uint>(
                SuccessReturnValue,
                ropSetMessageStatusResponse.ReturnValue,
                2021,
                @"[In RopSetMessageStatus ROP Success Response Buffer,ReturnValue (4 bytes)]For this response[Success Response], this field is set to 0x00000000.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2022");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2022
            Site.CaptureRequirementIfAreEqual<int>(
                4,
                Marshal.SizeOf(ropSetMessageStatusResponse.MessageStatusFlags),
                2022,
                @"[In RopSetMessageStatus ROP Success Response Buffer]MessageStatusFlags (4 bytes): A flags structure.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2024,MessageStatusFlags:{0}", ropSetMessageStatusResponse.MessageStatusFlags);

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2024
            bool isVerifyR2024 = (ropSetMessageStatusResponse.MessageStatusFlags == (uint)MessageStatusFlags.None)
                                 || ((ropSetMessageStatusResponse.MessageStatusFlags & (uint)MessageStatusFlags.MsRemoteDownload) == (uint)MessageStatusFlags.MsRemoteDownload)
                                 || ((ropSetMessageStatusResponse.MessageStatusFlags & (uint)MessageStatusFlags.MsInConflict) == (uint)MessageStatusFlags.MsInConflict)
                                 || ((ropSetMessageStatusResponse.MessageStatusFlags & (uint)MessageStatusFlags.MsRemoteDelete) == (uint)MessageStatusFlags.MsRemoteDelete);

            Site.CaptureRequirementIfIsTrue(
                isVerifyR2024,
                2024,
                @"[In RopSetMessageStatus ROP Success Response Buffer,MessageStatusFlags (4 bytes)]The possible values[zero, the value of msRemoteDownload is 0x00001000, the value of msInConflict is 0x00000800 and the value of msRemoteDelete is 0x00002000] are specified in [MS-OXCMSG] section 2.2.3.8.2.");
           
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R20004");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R20004
            this.Site.CaptureRequirementIfAreEqual<byte>(
                0x20,
                ropSetMessageStatusResponse.RopId,
                20004,
                @"[In RopGetMessageStatus ROP Response Buffers] The value of the RopId field for RopGetMessageStatus responses MUST be 0x20, which is the same as that for the RopSetMessageStatus responses.");

        }