Inheritance: System.Web.Services.Protocols.SoapHeader
        public void MSOXWSCORE_S01_TC13_VerifyItemWithDateTimePrecisionEnums()
        {
            Site.Assume.IsTrue(Common.IsRequirementEnabled(1256, this.Site), "Exchange 2007 does not support the DateTimePrecision element.");

            // Clear the soap headers.
            this.ClearSoapHeaders();

            string[] dateTimePrecisionTypes = new string[] { "Seconds", "Milliseconds" };

            #region Step 1: Create the item.
            ItemType item = new ItemType();
            ItemIdType[] createdItemIds = this.CreateItemWithMinimumElements(item);
            #endregion

            // Define an item array to store the items got from GetItem operation response.
            // Each item should contain a DisposalType value as its element's value
            ItemType[] items = new ItemType[dateTimePrecisionTypes.Length];
            XmlElement[] lastRawResponses = new XmlElement[dateTimePrecisionTypes.Length];
            for (int i = 0; i < dateTimePrecisionTypes.Length; i++)
            {
                DateTimePrecisionType dateTimePrecision = new DateTimePrecisionType();
                dateTimePrecision.Text = new string[1];
                dateTimePrecision.Text[0] = dateTimePrecisionTypes[i];

                #region Step 2: Configure the DateTimePrecision.
                Dictionary<string, object> soapHeaders = new Dictionary<string, object>();
                soapHeaders.Add("DateTimePrecision", dateTimePrecision);
                this.COREAdapter.ConfigureSOAPHeader(soapHeaders);
                #endregion

                #region Step 3: Get the item.
                // Call the GetItem operation.
                GetItemResponseType getItemResponse = this.CallGetItemOperation(createdItemIds);

                // Get the LastRawResponseXml.
                lastRawResponses[i] = (XmlElement)this.COREAdapter.LastRawResponseXml;

                // Check the operation response.
                Common.CheckOperationSuccess(getItemResponse, 1, this.Site);

                ItemType[] getItems = Common.GetItemsFromInfoResponse<ItemType>(getItemResponse);

                // One item should be returned.
                Site.Assert.AreEqual<int>(
                     1,
                     getItems.GetLength(0),
                     "One item should be returned! Expected Item Count: {0}, Actual Item Count: {1}",
                     1,
                     getItems.GetLength(0));

                Site.Assert.IsTrue(this.IsSchemaValidated, "The schema should be validated.");

                items[i] = getItems[0];
                #endregion
            }

            if (Common.IsRequirementEnabled(132502, this.Site))
            {
                // Add the debug information
                this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R132502");

                // Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R132502
                // The schema is validated and the DateTimePrecision element is set in request, so this requirement can be captured.
                this.Site.CaptureRequirement(
                    "MS-OXWSCDATA",
                    132502,
                    @"[In Appendix C: Product Behavior] Implementation does include the DateTimePrecision element which specifies precision of DateTime values that are returned in responses. This element is optional. <xs:element name=""DateTimePrecision"" type=""t:DateTimePrecisionType"" /> (Exchange 2013 and above follow this behavior.)");

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

                // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1256
                // The DateTimePrecision SOAP header is set in request and the schema is validated, so this requirement can be captured.
                this.Site.CaptureRequirement(
                    1256,
                    @"[In Appendix C: Product Behavior] Implementation does introduce the DateTimePrecision SOAP header. (<98> Section 3.1.4.4.1.1:  The DateTimePrecision SOAP header was introduced in Microsoft Exchange Server 2010 Service Pack 2 (SP2). (Exchange 2013 Preview and above follow this behavior).)");
            }

            if (Common.IsRequirementEnabled(1816, this.Site))
            {
                // Add the debug information
                this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCDATA_R1816");

                // Verify MS-OXWSCORE requirement: MS-OXWSCDATA_R1816
                // The DateTimePrecision SOAP header is set in request and the schema is validated, so this requirement can be captured.
                this.Site.CaptureRequirement(
                    "MS-OXWSCDATA",
                    1816,
                    @"[In Appendix C: Product Behavior] Implementation does introduce the DateTimePrecisionType simple type. (<8> Section 2.2.3.3: The DateTimePrecisionType simple type was introduced in Exchange 2010 SP2 (Exchange 2013 and above follow this behavior).)");

                this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1670");

                // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1670
                this.Site.CaptureRequirementIfIsTrue(
                    this.IsExpectedDateTimePrecision(lastRawResponses[0], dateTimePrecisionTypes[0]),
                    1670,
                    @"[In tns:GetItemSoapIn Message] The value ""Seconds"" of ""DateTimePrecision"" which specifies that the precision for date/time return values is seconds.");

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

                // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1671
                this.Site.CaptureRequirementIfIsTrue(
                    this.IsExpectedDateTimePrecision(lastRawResponses[1], dateTimePrecisionTypes[1]),
                    1671,
                    @"[In tns:GetItemSoapIn Message] The value ""Milliseconds"" of ""DateTimePrecision"" which specifies that the precision for date/time return values is milliseconds.");

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

                // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1162
                // After R1670 or R1671 was verified successfully, R1162 can be verified.
                this.Site.CaptureRequirement(
                    1162,
                    @"[In tns:GetItemSoapIn Message] [The part ""DateTimePrecision""]  Specifies a SOAP header that identifies the resolution of date/time values in responses from the server, either in seconds or in milliseconds.");

                // Clear the soap header.
                this.ClearSoapHeaders();
            }
        }