Microsoft.Protocols.TestSuites.MS_ASCMD.S14_Search.MSASCMD_S14_TC15_Search_WithAllClass C# (CSharp) Method

MSASCMD_S14_TC15_Search_WithAllClass() private method

private MSASCMD_S14_TC15_Search_WithAllClass ( ) : void
return void
        public void MSASCMD_S14_TC15_Search_WithAllClass()
        {
            Site.Assume.IsTrue(Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site) == "14.1" || Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site) == "14.0", "[In Appendix A: Product Behavior] <14> Section 2.2.3.27.4: The SMS and Notes classes are only available if the MS-ASProtocolVersion header is set to 14.0 [or 14.1].");

            #region Create one item in User2 Inbox folder, Calendar folder, Contacts subfolder
            string searchPrefix = "keyWord" + TestSuiteBase.ClientId;

            // Respectively create one item in User2 Inbox folder, Calendar folder and Contacts sub-folder
            this.CreateItemsWithKeyword(searchPrefix);
            #endregion

            #region Create Search request with class element
            Request.SearchStore store = new Request.SearchStore
            {
                Name = SearchName.Mailbox.ToString(),
                Options = new Request.Options1
                {
                    ItemsElementName = new Request.ItemsChoiceType6[]
                    {
                        Request.ItemsChoiceType6.DeepTraversal,
                        Request.ItemsChoiceType6.RebuildResults
                    },
                    Items = new object[] { string.Empty, string.Empty }
                },
                Query = new Request.queryType
                {
                    ItemsElementName = new Request.ItemsChoiceType2[] { Request.ItemsChoiceType2.And },
                    Items = new Request.queryType[] { new Request.queryType() }
                }
            };

            ((Request.queryType)store.Query.Items[0]).ItemsElementName = new Request.ItemsChoiceType2[]
            {
                Request.ItemsChoiceType2.CollectionId,
                Request.ItemsChoiceType2.CollectionId,
                Request.ItemsChoiceType2.CollectionId,
                Request.ItemsChoiceType2.Class,
                Request.ItemsChoiceType2.Class,
                Request.ItemsChoiceType2.Class,
                Request.ItemsChoiceType2.Class,
                Request.ItemsChoiceType2.Class,
                Request.ItemsChoiceType2.Class,
                Request.ItemsChoiceType2.FreeText
            };

            ((Request.queryType)store.Query.Items[0]).Items = new object[] { this.User2Information.InboxCollectionId, this.User2Information.CalendarCollectionId, this.User2Information.ContactsCollectionId, "Tasks", "Email", "Calendar", "Contacts", "Notes", "SMS", searchPrefix };
            #endregion

            #region Call search command
            SearchRequest searchRequest = Common.CreateSearchRequest(new Request.SearchStore[] { store });
            SearchResponse searchResponse = this.CMDAdapter.Search(searchRequest);
            Site.Assert.AreEqual("1", searchResponse.ResponseData.Response.Store.Status, "If server successfully completed command, server should return status 1");
            if (searchResponse.ResponseData.Response.Store.Status != "1" || searchResponse.ResponseData.Response.Store.Result.Length != 3)
            {
                searchResponse = this.LoopSearch(searchRequest, 3);
            }
            #endregion

            #region Verify requirements MS-ASCMD_R1322, MS-ASCMD_R920, MS-ASCMD_R5146, MS-ASCMD_R5883
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R920");

            // Verify MS-ASCMD requirement: MS-ASCMD_R920
            Site.CaptureRequirementIfAreEqual<string>(
                "1",
                searchResponse.ResponseData.Response.Store.Status,
                920,
                @"[In Class(Search)] The valid airsync:Class element values are: Tasks, Email, Calendar, Contacts, Notes, SMS<14>.");

            if (Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site) == "14.0")
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5146");

                // Verify MS-ASCMD requirement: MS-ASCMD_R5146
                Site.CaptureRequirementIfAreEqual<string>(
                    "1",
                    searchResponse.ResponseData.Response.Store.Status,
                    5146,
                    @"[In Appendix A: Product Behavior] <14> Section 2.2.3.27.4: The SMS and Notes classes are only available if the MS-ASProtocolVersion header is set to 14.0 [or 14.1].");
            }

            if (Common.GetConfigurationPropertyValue("ActiveSyncProtocolVersion", this.Site) == "14.1")
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-ASCMD_R5883");

                // Verify MS-ASCMD requirement: MS-ASCMD_R5883
                Site.CaptureRequirementIfAreEqual<string>(
                    "1",
                    searchResponse.ResponseData.Response.Store.Status,
                    5883,
                    @"[In Appendix A: Product Behavior] <14> Section 2.2.3.27.4: The SMS and Notes classes are only available if the MS-ASProtocolVersion header is set to [14.0 or] 14.1.");
            }

            bool isAllResultContainClass = false;
            foreach (Response.SearchResponseStoreResult result in searchResponse.ResponseData.Response.Store.Result)
            {
                // Check if every search result contains Class element.
                isAllResultContainClass = result.Class != null && IsClassSupported(result.Class);
            }

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

            // Verify MS-ASCMD requirement: MS-ASCMD_R1322
            Site.CaptureRequirementIfIsTrue(
                isAllResultContainClass,
                1322,
                @"[In Class(Search)] Element Class (Search) in Search command response, the number allowed is 1? (required, 1 per Result element).");
            #endregion
        }
S14_Search