/// <summary>
        /// Mark all items in a folder as read.
        /// </summary>
        /// <param name="markAllItemAsReadRequest">Specify a request to mark all items as read.</param>
        /// <returns>A response to MarkAllItemsAsRead operation request.</returns>
        public MarkAllItemsAsReadResponseType MarkAllItemsAsRead(MarkAllItemsAsReadType markAllItemAsReadRequest)
        {
            MarkAllItemsAsReadResponseType markAllItemsAsReadResponse = this.exchangeServiceBinding.MarkAllItemsAsRead(markAllItemAsReadRequest);

            Site.Assert.IsNotNull(markAllItemsAsReadResponse, "If the operation is successful, the response should not be null.");

            // SOAP version is set to 1.1, if a response can be received from server, then it means SOAP 1.1 is supported.
            this.VerifySoapVersion();

            // Verify transport type related requirement.
            this.VerifyTransportType();

            this.VerifyServerVersionInfo(this.exchangeServiceBinding.ServerVersionInfoValue, this.exchangeServiceBinding.IsSchemaValidated);
            this.VerifyMarkAllItemsAsReadResponse(markAllItemsAsReadResponse, this.exchangeServiceBinding.IsSchemaValidated);
            return(markAllItemsAsReadResponse);
        }
        /// <summary>
        /// Verify the MarkAllItemsAsReadResponseTypes structure.
        /// </summary>
        /// <param name="markAllItemsAsReadResponseType">A MarkAllItemsAsReadResponseType instance.</param>
        /// <param name="isSchemaValidated">Indicate whether schema is verified.</param>
        private void VerifyMarkAllItemsAsReadResponse(MarkAllItemsAsReadResponseType markAllItemsAsReadResponseType, bool isSchemaValidated)
        {
            Site.Assert.IsTrue(isSchemaValidated, "The schema should be validated.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1168
            Site.CaptureRequirementIfIsNotNull(
                markAllItemsAsReadResponseType,
                1168,
                @"[In MarkAllItemsAsRead Operation] The following is the WSDL port type specification for the MarkAllItemsAsRead operation: <wsdl:operation name=""MarkAllItemsAsRead"">
                      <wsdl:input message=""tns:MarkAllItemsAsReadSoapIn""/>
                      <wsdl:output message=""tns:MarkAllItemsAsReadSoapOut""/>
                    </wsdl:operation>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1170
            Site.CaptureRequirementIfIsNotNull(
                markAllItemsAsReadResponseType,
                1170,
                @"[In MarkAllItemsAsRead Operation] The following is the WSDL binding specification for the MarkAllItemsAsRead operation: <wsdl:operation name=""MarkAllItemsAsRead"">
                      <soap:operation soapAction=""http://schemas.microsoft.com/exchange/services/2006/messages/MarkAllItemsAsRead""/>
                      <wsdl:input>
                        <soap:header message=""tns:MarkAllItemsAsReadSoapIn"" part=""Impersonation"" use=""literal""/>
                        <soap:header message=""tns:MarkAllItemsAsReadSoapIn"" part=""MailboxCulture"" use=""literal""/>
                        <soap:header message=""tns:MarkAllItemsAsReadSoapIn"" part=""RequestVersion"" use=""literal""/>
                        <soap:body parts=""request"" use=""literal""/>
                      </wsdl:input>
                      <wsdl:output>
                        <soap:body parts=""MarkAllItemsAsReadResult"" use=""literal""/>
                        <soap:header message=""tns:MarkAllItemsAsReadSoapOut"" part=""ServerVersion"" use=""literal""/>
                      </wsdl:output>
                    </wsdl:operation>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1187
            Site.CaptureRequirementIfIsNotNull(
                markAllItemsAsReadResponseType,
                1187,
                @"[In tns:MarkAllItemsAsReadSoapOut Message] The message [MarkAllItemsAsReadSoapOut] is defined as follow: <wsdl:message name=""MarkAllItemsAsReadSoapOut"">
                      <wsdl:part name=""MarkAllItemsAsReadResult"" element=""tns:MarkAllItemsAsReadResponse""/>
                      <wsdl:part name=""ServerVersion"" element=""t:ServerVersionInfo""/>
                    </wsdl:message>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1201
            Site.CaptureRequirementIfIsNotNull(
                markAllItemsAsReadResponseType,
                1201,
                @"[In m:MarkAllItemsAsReadResponse Element] The element [MarkAllItemsAsReadResponse] is defined as follow: <xs:element name=""MarkAllItemsAsReadResponse"" type=""m:MarkAllItemsAsReadResponseType""/>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1213
            Site.CaptureRequirementIfIsNotNull(
                markAllItemsAsReadResponseType,
                1213,
                @"[In m:MarkAllItemsAsReadResponseType Complex Type] The complex type [MarkAllItemsAsReadResponseType] is defined as follow: <xs:complexType name=""MarkAllItemsAsReadResponseType"">
                  <xs:complexContent>
                    <xs:extension base=""m:BaseResponseMessageType""/>
                  </xs:complexContent>
                </xs:complexType>");

            // Verify the BaseResponseMessageType schema.
            this.VerifyBaseResponseMessageType(markAllItemsAsReadResponseType);

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1442
            Site.CaptureRequirementIfIsNotNull(
                markAllItemsAsReadResponseType,
                1442,
                @"[In tns:MarkAllItemsAsReadSoapOut Message] The type of MarkAllItemsAsReadResult is tns:MarkAllItemsAsReadResponse (section 3.1.4.5.2.2).");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1190
            // According to the schema, markAllItemsAsReadResponseType is the SOAP body of a response message returned by server, 
            // this requirement can be verified directly.
            Site.CaptureRequirement(
                1190,
                @"[In tns:MarkAllItemsAsReadSoapOut Message] [The part name ""MarkAllItemsAsReadResult""] 
                Specifies the SOAP body of a response message.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1443
            Site.CaptureRequirementIfIsNotNull(
                this.exchangeServiceBinding.ServerVersionInfoValue,
                1443,
                @"[In tns:MarkAllItemsAsReadSoapOut Message] The type of ServerVersion is t:ServerVersionInfo ([MS-OXWSCDATA] section 2.2.5.10).");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1191
            // According to the schema, ServerVersion is the SOAP header that contains the server version information, 
            // this requirement can be verified directly.
            Site.CaptureRequirement(
                1191,
                @"[In tns:MarkAllItemsAsReadSoapOut Message] [The part name ""ServerVersion""] 
                    Specifies a SOAP header that identifies the server version for the response to a MarkAllItemsAsRead operation request.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1195
            // This requirement can be captured directly, since MarkAllItemsAsReadResponse is the response of a MarkAllItemsAsRead operation request.
            Site.CaptureRequirement(
                1195,
                @"[In Elements] [The element ""MarkAllItemsAsReadResponse""] Specifies a response to a MarkAllItemsAsRead operation request.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1200
            // The request of MarkAllItemsAsRead operation is formed according to schema
            // And the response of MarkAllItemsAsRead operation is returned by server according to schema
            // This requirement can be verified directly.
            Site.CaptureRequirement(
                1200,
                @"[In m:MarkAllItemsAsReadResponse Element] The MarkAllItemsAsReadResponse element specifies a response to a MarkAllItemsAsRead operation request.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1157
            // The request of MarkAllItemsAsRead operation is formed according to schema
            // And the response of MarkAllItemsAsRead operation is returned by server according to schema
            // This requirement can be verified directly.
            Site.CaptureRequirement(
                1157,
                @"[In Message Processing Events and Sequencing Rules] [The operation ""MarkAllItemsAsRead""] Marks all the items in a folder as read.");
        }