/// <summary>
        /// Verify RopGetPropertiesList Failure Response
        /// </summary>
        /// <param name="ropGetPropertiesListResponse">The failure response of RopGetPropertiesList request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in ROP RopGetPropertiesList request</param>
        private void VerifyRopGetPropertiesListFailureResponse(RopGetPropertiesListResponse ropGetPropertiesListResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2777");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2779
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopGetPropertiesList,
                ropGetPropertiesListResponse.RopId,
                2779,
                @"[In RopGetPropertiesList ROP Failure Response Buffer,RopId (1 byte)]For this operation[RopGetPropertiesList], this field is set to 0x09.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2781
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropGetPropertiesListResponse.InputHandleIndex,
                2781,
                @"[In RopGetPropertiesList 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_R2783");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2785
            Site.CaptureRequirementIfAreNotEqual<uint>(
                SuccessReturnValue,
                ropGetPropertiesListResponse.ReturnValue,
                2785,
                @"[In RopGetPropertiesList 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 RopGetPropertiesList operation related requirements.
        /// </summary>
        /// <param name="ropGetPropertiesListResponse">The RopGetPropertiesList response buffer structure.</param>
        /// <param name="objectType">Indicates which object type the RopGetPropertiesList operation is acting on.</param>
        private void VerifyRopGetPropertiesList(RopGetPropertiesListResponse ropGetPropertiesListResponse, ServerObjectType objectType)
        {
            // Since the RopGetPropertiesList ROP response was parsed successfully, MS-OXCPRPT_R47102 can be captured directly.
            Site.CaptureRequirement(
              47102,
              @"[In Processing RopGetPropertiesList] The server responds with a RopGetPropertiesList ROP response buffer.");

            if (ropGetPropertiesListResponse.ReturnValue.Equals((uint)CPRPTErrorCode.None))
            {
                if (objectType == ServerObjectType.Message)
                {
                    // If the object type this operation acting on is Message object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        9701,
                        @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Message objects.");
                }

                if (objectType == ServerObjectType.Folder)
                {
                    // If the object type this operation acting on is Folder object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        9702,
                        @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Folder objects.");
                }

                if (objectType == ServerObjectType.Attachment)
                {
                    // If the object type this operation acting on is Attachment object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        9703,
                        @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Attachment objects.");
                }

                if (objectType == ServerObjectType.Logon)
                {
                    // If the object type this operation acting on is Logon object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        9704,
                        @"[In RopGetPropertiesList ROP] This operation[RopGetPropertiesList ROP] is valid on Logon objects.");
                }
            }

            if (ropGetPropertiesListResponse.PropertyTagCount != 0x00)
            {
                foreach (PropertyTag propertyTag in ropGetPropertiesListResponse.PropertyTags)
                {
                    this.VerifyPropertyTagInCDATA(propertyTag);
                }
            }

            ushort numberOfPropertyTag = 0;
            if (ropGetPropertiesListResponse.PropertyTagCount > 0)
            {
                numberOfPropertyTag = (ushort)ropGetPropertiesListResponse.PropertyTags.Length;

                // The parser has ensured the field satisfied the format, otherwise the response cannot be received.
                Site.CaptureRequirement(
                   100,
                   @"[In RopGetPropertiesList ROP Response Buffer] PropertyTags (variable): An array of PropertyTag structures ([MS-OXCDATA] section 2.9). ");
            }

            Site.CaptureRequirementIfAreEqual<ushort>(
                numberOfPropertyTag,
                ropGetPropertiesListResponse.PropertyTagCount,
                9903,
                @"[In RopGetPropertiesList ROP Response Buffer] PropertyTagCount: An integer that specifies the number of property tags contained in the PropertyTags field.");

            // The parser has ensured the field satisfied the format, otherwise the response cannot be received.
            Site.CaptureRequirement(
                99,
                @"[In RopGetPropertiesList ROP Response Buffer] PropertyTagCount: 2 bytes integer.");
        }
        /// <summary>
        /// Verify RopGetPropertiesList Success Response
        /// </summary>
        /// <param name="ropGetPropertiesListResponse">The success response of RopGetPropertiesList request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopGetPropertiesList request</param>
        private void VerifyRopGetPropertiesListSuccessResponse(RopGetPropertiesListResponse ropGetPropertiesListResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2762");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2764
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopGetPropertiesList,
                ropGetPropertiesListResponse.RopId,
                2764,
                @"[In RopGetPropertiesList ROP Success Response Buffer,RopId (1 byte)]For this operation[RopGetPropertiesList], this field is set to 0x09.");

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

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2766
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropGetPropertiesListResponse.InputHandleIndex,
                2766,
                @"[In RopGetPropertiesList 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_R2768");

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

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2770
            Site.CaptureRequirementIfAreEqual<uint>(
                SuccessReturnValue,
                ropGetPropertiesListResponse.ReturnValue,
                2770,
                @"[In RopGetPropertiesList 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_R2771");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2771
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(ushort),
                ropGetPropertiesListResponse.PropertyTagCount.GetType(),
                2771,
                @"[In RopGetPropertiesList ROP Success Response Buffer]PropertyTagCount (2 bytes): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2773
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(PropertyTag[]),
                ropGetPropertiesListResponse.PropertyTags.GetType(),
                2773,
                @"[In RopGetPropertiesList ROP Success Response Buffer]PropertyTags (variable): An array of PropertyTag structures.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2774
            Site.CaptureRequirementIfAreEqual<int>(
                ropGetPropertiesListResponse.PropertyTagCount,
                ropGetPropertiesListResponse.PropertyTags.Length,
                2774,
                @"[In RopGetPropertiesList ROP Success Response Buffer,PropertyTags (variable)]The number of structures contained in this field is specified by the PropertyTagCount field.");
        }