/// <summary>
        /// Verify RopFindRow Failure Response
        /// </summary>
        /// <param name="ropFindRowResponse">The response of RopFindRow request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopFindRow request</param>
        private void VerifyRopFindRowFailureResponse(RopFindRowResponse ropFindRowResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1487");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1489
            Site.CaptureRequirementIfAreEqual<byte>(
               (byte)RopId.RopFindRow,
                ropFindRowResponse.RopId,
                1489,
                @"[In RopFindRow ROP Failure Response Buffer] RopId (1 byte): For this operation[RopFindRow], this field[RopId (1 byte)] is set to 0x4F.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1491
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropFindRowResponse.InputHandleIndex,
                1491,
                @"[In RopFindRow 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_R1492");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1494
            Site.CaptureRequirementIfAreNotEqual<uint>(
                SuccessReturnValue,
                ropFindRowResponse.ReturnValue,
                1494,
                @"[In RopFindRow ROP Failure Response Buffer] ReturnValue (4 bytes): For this response[Failure Response], this field is set to a value other than 0x00000000.");
        }
        /// <summary>
        /// Verify RopFindRow Response
        /// </summary>
        /// <param name="findRowResponse">RopFindRowResponse structure data that needs verification</param>
        private void VerifyRopFindRowResponse(RopFindRowResponse findRowResponse)
        {
            this.VerifyRPCLayerRequirement();

            if (findRowResponse.ReturnValue == 0x00000000)
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R237");

                // Verify MS-OXCTABL requirement: MS-OXCTABL_R237
                Site.CaptureRequirementIfAreEqual<Type>(
                    typeof(byte),
                    findRowResponse.RowNoLongerVisible.GetType(),
                    237,
                    @"[In RopFindRow ROP Response Buffer] RowNoLongerVisible (1 byte): A Boolean that indicates whether the row to which the bookmark pointed is no longer visible.");

                if (findRowResponse.HasRowData == 0x01)
                {
                    // Add the debug information
                    Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R245");

                    // Verify MS-OXCTABL requirement: MS-OXCTABL_R245
                    Site.CaptureRequirementIfIsNotNull(
                         findRowResponse.RowData,
                         245,
                        @"[In RopFindRow ROP Response Buffer] If the value of the HasRowData field is ""TRUE"" (0x01), the RowData field MUST be present.");

                    this.VerifyPropertyRowStructure(findRowResponse.RowData);

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

                    // Verify MS-OXCTABL requirement: MS-OXCTABL_R244
                    Site.CaptureRequirementIfAreEqual<Type>(
                        typeof(PropertyRow),
                        findRowResponse.RowData.GetType(),
                        244,
                        @"[In RopFindRow ROP Response Buffer] RowData (variable): A PropertyRow structure, as specified in [MS-OXCDATA] section 2.8.1, that specifies the row.");
                }

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

                // Verify MS-OXCTABL requirement: MS-OXCTABL_R242
                Site.CaptureRequirementIfIsTrue(
                    findRowResponse.HasRowData == 0x01 || findRowResponse.HasRowData == 0x00,
                    242,
                    @"[In RopFindRow ROP Response Buffer] HasRowData (1 byte): A Boolean that specifies whether a row is included in this response.");
            }

            if (findRowResponse.HasRowData == 0x00)
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R246");

                // Verify MS-OXCTABL requirement: MS-OXCTABL_R246
                Site.CaptureRequirementIfIsNull(
                findRowResponse.RowData,
                246,
                @"[In RopFindRow ROP Response Buffer] If the value of HasRowData is ""FALSE"" (0x00), the RowData field MUST NOT be present.");
            }
        }
        /// <summary>
        /// Verify RopFindRow Success Response
        /// </summary>
        /// <param name="ropFindRowResponse">The response of RopFindRow request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopFindRow request</param>
        private void VerifyRopFindRowSuccessResponse(RopFindRowResponse ropFindRowResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1471");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1473
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopFindRow,
                ropFindRowResponse.RopId,
                1473,
                @"[In RopFindRow ROP Success Response Buffer] RopId (1 byte): For this operation[RopFindRow], this field[RopId (1 byte)] is set to 0x4F.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1475
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropFindRowResponse.InputHandleIndex,
                1475,
                @"[In RopFindRow ROP Success Response Buffer] InputHandleIndex (1 byte): This index MUST be set to the InputHandleIndex specified in the request.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1478
            Site.CaptureRequirementIfAreEqual<uint>(
                SuccessReturnValue,
                ropFindRowResponse.ReturnValue,
                1478,
                @"[In RopFindRow 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_R1479,RowNoLongerVisible:{0}", ropFindRowResponse.RowNoLongerVisible);

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1479
            // If RowNoLongerVisible is byte type and can be boolean type representation, then verify R1479
            bool isVerifyR1479 = (typeof(byte) == ropFindRowResponse.RowNoLongerVisible.GetType()) &&
                                 ((Convert.ToBoolean(ropFindRowResponse.RowNoLongerVisible) == true) ||
                                 (Convert.ToBoolean(ropFindRowResponse.RowNoLongerVisible) == false));

            Site.CaptureRequirementIfIsTrue(
                isVerifyR1479,
                1479,
                @"[In RopFindRow ROP Success Response Buffer] RowNoLongerVisible (1 byte): A Boolean.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1481,HasRowData:{0}", ropFindRowResponse.HasRowData);

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1481
            // If HasRowData is byte type and can be boolean type representation, then verify R1481
            bool isVerifyR1481 = (typeof(byte) == ropFindRowResponse.HasRowData.GetType()) &&
                                 ((Convert.ToBoolean(ropFindRowResponse.HasRowData) == true) ||
                                 (Convert.ToBoolean(ropFindRowResponse.HasRowData) == false));

            Site.CaptureRequirementIfIsTrue(
                isVerifyR1481,
                1481,
                @"[In RopFindRow ROP Success Response Buffer] HasRowData (1 byte): A Boolean.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R1483
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(PropertyRow),
                ropFindRowResponse.RowData.GetType(),
                1483,
                @"[In RopFindRow ROP Success Response Buffer] RowData (variable): A PropertyRow structure");
        }