/// <summary>
        /// Verify RopGetPerUserLongTermIds Failure Response
        /// </summary>
        /// <param name="ropGetPerUserLongTermIdsResponse">The failure response of RopGetPerUserLongTermIds request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopGetPerUserLongTermIds request</param>
        private void VerifyRopGetPerUserLongTermIdsFailureResponse(RopGetPerUserLongTermIdsResponse ropGetPerUserLongTermIdsResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R414");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R416
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopGetPerUserLongTermIds,
                ropGetPerUserLongTermIdsResponse.RopId,
                416,
                @"[In RopGetPerUserLongTermIds ROP Failure Response Buffer] RopId (1 byte): For this operation[RopGetPerUserLongTermIds], this field[RopId (1 byte)] is set to 0x60.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R418
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropGetPerUserLongTermIdsResponse.InputHandleIndex,
                418,
                @"[In RopGetPerUserLongTermIds 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_R419");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R421
            Site.CaptureRequirementIfAreNotEqual<uint>(
                SuccessReturnValue,
                ropGetPerUserLongTermIdsResponse.ReturnValue,
                421,
                @"[In RopGetPerUserLongTermIds ROP Failure Response Buffer] ReturnValue (4 bytes): For this response[Failure Response], this field[ReturnValue (4 bytes)] is set to a value other than 0x00000000.");
        }
        /// <summary>
        /// Verify the response by sending the ROP RopGetPerUserLongTermIds.
        /// </summary>
        /// <param name="response">The structure of ROP RopGetPerUserLongTermIds response.</param>
        private void VerifyRopGetPerUserLongTermIds(RopGetPerUserLongTermIdsResponse response)
        {
            if (response.ReturnValue == 0)
            {
                if (response.LongTermIds != null && response.LongTermIds.Length > 0)
                {
                    // Add the debug information
                    this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCSTOR_R468");

                    // If the response can be parsed successfully and the return value is success, indicates the ROP's functionality is consistent with its description. 
                    this.Site.CaptureRequirement(
                        468,
                        @"[In RopGetPerUserLongTermIds ROP] The RopGetPerUserLongTermIds ROP ([MS-OXCROPS] section 2.2.3.10) is used to obtain the LongTermIDs (as specified in [MS-OXCDATA] section 2.2.1.3.1) of folders in a public folders message store that contain per-user read/unread data identified by a REPLGUID.");

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

                    // Verify MS-OXCSTOR requirement: MS-OXCSTOR_R474
                    // If the response can be parsed successfully and the return value is success, this requirement can be verified directly.
                    this.Site.CaptureRequirement(
                        474,
                        @"[In RopGetPerUserLongTermIds ROP Success Response Buffer] LongTermIds: Contains an array of LongTermID structures, as specified in [MS-OXCDATA] section 2.2.1.3.1, of folders in the public message store for which this user has cached read/unread information.");
                }

                bool isLongTermIdCountConsistent = ((response.LongTermIds == null) && (response.LongTermIdCount == 0)) ||
                    ((response.LongTermIds != null) && (response.LongTermIdCount == (ushort)response.LongTermIds.Length));

                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCSTOR_R475, the LongTermIdCount is: {0}.", response.LongTermIdCount);

                // Verify MS-OXCSTOR requirement: MS-OXCSTOR_R475
                bool isVerify475 = isLongTermIdCountConsistent;
                Site.CaptureRequirementIfIsTrue(
                    isVerify475,
                    475,
                    @"[In RopGetPerUserLongTermIds ROP Success Response Buffer] LongTermIds: The number of items in this array MUST be the same as the value of the LongTermIdCount field (section 2.2.1.10.2).");

                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCSTOR_R472, the LongTermIdCount is: {0}.", response.LongTermIdCount);

                // Verify MS-OXCSTOR requirement: MS-OXCSTOR_R472
                bool isVerify472 = isLongTermIdCountConsistent;
                Site.CaptureRequirementIfIsTrue(
                    isVerify472,
                    472,
                    @"[In RopGetPerUserLongTermIds ROP Success Response Buffer] LongTermIdCount: Specifies the number of entries in the following array.");
            }
        }
        /// <summary>
        /// Verify RopGetPerUserLongTermIds Success Response
        /// </summary>
        /// <param name="ropGetPerUserLongTermIdsResponse">The success response of RopGetPerUserLongTermIds request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopGetPerUserLongTermIds request</param>
        private void VerifyRopGetPerUserLongTermIdsSuccessResponse(RopGetPerUserLongTermIdsResponse ropGetPerUserLongTermIdsResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R400");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R402
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopGetPerUserLongTermIds,
                ropGetPerUserLongTermIdsResponse.RopId,
                402,
                @"[In RopGetPerUserLongTermIds ROP Success Response Buffer] RopId (1 byte): For this operation[RopGetPerUserLongTermIds], this field[RopId (1 byte)] is set to 0x60.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R404
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropGetPerUserLongTermIdsResponse.InputHandleIndex,
                404,
                @"[In RopGetPerUserLongTermIds 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_R405");

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

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R408
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(ushort),
                ropGetPerUserLongTermIdsResponse.LongTermIdCount.GetType(),
                408,
                @"[In RopGetPerUserLongTermIds ROP Success Response Buffer] LongTermIdCount (2 bytes): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R410
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(LongTermId[]),
                ropGetPerUserLongTermIdsResponse.LongTermIds.GetType(),
                410,
                @"[In RopGetPerUserLongTermIds ROP Success Response Buffer] LongTermIds (variable): An array of LongTermID structures, of which the format is specified in [MS-OXCDATA] section 2.2.1.3.1. ");
        }