/// <summary>
        /// Verify RopSeekRow Failure Response
        /// </summary>
        /// <param name="ropSeekRowResponse">The response of RopSeekRow request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSeekRow request</param>
        private void VerifyRopSeekRowFailureResponse(RopSeekRowResponse ropSeekRowResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1315");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1317
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopSeekRow,
                ropSeekRowResponse.RopId,
                1317,
                @"[In RopSeekRow ROP Failure Response Buffer] RopId (1 byte): For this operation[RopSeekRow], this field[RopId (1 byte)] is set to 0x18.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1319
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropSeekRowResponse.InputHandleIndex,
                1319,
                @"[In RopSeekRow 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_R1320");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1322
            Site.CaptureRequirementIfAreNotEqual<uint>(
                SuccessReturnValue,
                ropSeekRowResponse.ReturnValue,
                1322,
                @"[In RopSeekRow ROP Failure Response Buffer] ReturnValue (4 bytes): For this response[Failure Response], this field is set to a value other than 0x00000000.");
        }
        /// <summary>
        /// Verify RopSeekRow Response
        /// </summary>
        /// <param name="seekRowResponse">RopSeekRowResponse structure data that needs verification</param>
        /// <param name="rowCountValueInTheRequest">The value of the RowCount field in the request</param>
        private void VerifyRopSeekRowResponse(RopSeekRowResponse seekRowResponse, long rowCountValueInTheRequest)
        {
            this.VerifyRPCLayerRequirement();

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

            // Verify MS-OXCTABL requirement: MS-OXCTABL_R153
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                seekRowResponse.HasSoughtLess.GetType(),
                153,
                @"[In RopSeekRow ROP Response Buffer] HasSoughtLess (1 byte): A Boolean that specifies whether the number of rows moved is less than the number of rows requested.");

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

            // Verify MS-OXCTABL requirement: MS-OXCTABL_R159
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(int),
                seekRowResponse.RowsSought.GetType(),
                159,
                @"[In RopSeekRow ROP Response Buffer] RowsSought (4 bytes): A signed integer that specifies the actual number of rows moved.");

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

            // Verify MS-OXCTABL requirement: MS-OXCTABL_R156
            // That the field is not null means it is present.
            Site.CaptureRequirementIfIsNotNull(
                seekRowResponse.HasSoughtLess,
                156,
                @"[In RopSeekRow ROP Response Buffer] The HasSoughtLess field MUST be present in the response.");

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

            // Verify MS-OXCTABL requirement: MS-OXCTABL_R162
            // That the field is not null means it is present.
            Site.CaptureRequirementIfIsNotNull(
                seekRowResponse.RowsSought,
                162,
                @"[In RopSeekRow ROP Response Buffer] This field [RowsSought] MUST be present in the response.");

            if (rowCountValueInTheRequest > 0)
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R161: the value of the RowsSought field in the response for RopSeekRow is set to {0}", seekRowResponse.RowsSought);

                // Verify MS-OXCTABL requirement: MS-OXCTABL_R161
                bool isVerifyR161 = seekRowResponse.RowsSought > 0;

                Site.CaptureRequirementIfIsTrue(
                    isVerifyR161,
                    161,
                    @"[In RopSeekRow ROP Response Buffer] If the value of the RowCount field (in the request) is positive, then the value of the RowsSought field MUST also be positive.");
            }
            else if (rowCountValueInTheRequest < 0)
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R160: the value of the RowsSought field in the response for RopSeekRow is set to {0}", seekRowResponse.RowsSought);

                // Verify MS-OXCTABL requirement: MS-OXCTABL_R160
                bool isVerifyR160 = seekRowResponse.RowsSought <= 0;

                Site.CaptureRequirementIfIsTrue(
                    isVerifyR160,
                    160,
                    @"[In RopSeekRow ROP Response Buffer] If the value of the RowCount field (in the request) is negative, the value of the RowsSought field MUST also be negative or 0x00000000, indicating that the seek was performed backwards.");
            }
        }
        /// <summary>
        /// Verify RopSeekRow Success Response
        /// </summary>
        /// <param name="ropSeekRowResponse">The response of RopSeekRow request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSeekRow request</param>
        private void VerifyRopSeekRowSuccessResponse(RopSeekRowResponse ropSeekRowResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1303");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1305
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopSeekRow,
                ropSeekRowResponse.RopId,
                1305,
                @"[In RopSeekRow ROP Success Response Buffer] RopId (1 byte): For this operation[RopSeekRow], this field[RopId (1 byte)] is set to 0x18.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1307
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropSeekRowResponse.InputHandleIndex,
                1307,
                @"[In RopSeekRow 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_R1308");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1310
            Site.CaptureRequirementIfAreEqual<uint>(
                SuccessReturnValue,
                ropSeekRowResponse.ReturnValue,
                1310,
                @"[In RopSeekRow 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_R1311,HasSoughtLess:{0}", ropSeekRowResponse.HasSoughtLess);

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1311
            // If HasSoughtLess is byte type and can be boolean type representation, then verify R1311
            bool isVerifyR1311 = (typeof(byte) == ropSeekRowResponse.HasSoughtLess.GetType()) &&
                                 ((Convert.ToBoolean(ropSeekRowResponse.HasSoughtLess) == true) ||
                                 (Convert.ToBoolean(ropSeekRowResponse.HasSoughtLess) == false));

            Site.CaptureRequirementIfIsTrue(
                isVerifyR1311,
                1311,
                @"[In RopSeekRow ROP Success Response Buffer] HasSoughtLess (1 byte): A Boolean.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1313
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(int),
                ropSeekRowResponse.RowsSought.GetType(),
                1313,
                @"[In RopSeekRow ROP Success Response Buffer] RowsSought (4 bytes): A signed integer.");
        }