示例#1
0
        public MyList <T> Filter(GenericPredicate <T> p)
        {
            var res = new MyList <T>();

            foreach (var i in this)
            {
                if (p(i))
                {
                    res.Add(i);
                }
            }
            return(res);
        }
        public void IndexPredicateTest()
        {
            //Predicate returns true only for the third one.
            Func <Person, bool> predicate = GenericPredicate <Person> .IndexPredicateOf(2);

            var thirdPerson = Persons.First(predicate);

            Console.WriteLine("Third person of the Persons:");
            Console.WriteLine(thirdPerson);

            //Use the predicate again would not return the third person because its count is not reset
            var nextThirdPerson = Persons.FirstOrDefault(predicate);

            Console.WriteLine("Try to get the Third person again, and it is:");
            Console.WriteLine(nextThirdPerson);

            Assert.IsNull(nextThirdPerson);
        }
示例#3
0
        /// <summary>
        /// Returns a list of all the resx files contained recursivelly in the basePath directory passed.
        /// The
        /// </summary>
        /// <param name="basePath">Where do you want to search for .resx</param>
        /// <param name="display">A predicate function to modify the string to be displayed.  Can be null.</param>
        /// <returns></returns>
        public static SortedList <string, string> GetResXInDirectory(string basePath, GenericPredicate <string, string> display)
        {
            DirectoryInfo dir = new DirectoryInfo(basePath);

            FileInfo[] files = dir.GetFiles("*.resx", SearchOption.AllDirectories);

            SortedList <string, string> dict = new SortedList <string, string>();

            foreach (FileInfo file in files)
            {
                string baseName = GetBaseName(file.FullName);
                string path     = Path.GetDirectoryName(file.FullName);

                string displayName = display == null ? path : display(path, basePath);
                displayName = Path.Combine(displayName, baseName);
                if (!dict.ContainsKey(displayName))
                {
                    dict.Add(displayName, file.FullName);
                }
            }

            return(dict);
        }
示例#4
0
        public void SearchTest()
        {
            //Input something to search
            Page.CurrentPage[GooglePage.TextByName.textToBeSearched] = "WebDriver wrapper";
            Assert.AreEqual("WebDriver wrapper", Page.CurrentPage[GooglePage.TextByName.textToBeSearched]);

            //Only for TextLocator, the command shall be specified as "extraInfo" instead of "value", just like this:
            Page.CurrentPage[GooglePage.TextByName.textToBeSearched, "highlight"] = "";

            //After input something, the button of "Google Search" (<button name="btnK">) would disappear
            //So any command on it would throw exception, using "tryXXX" would quit and set "LastTrySuccess" to "false"
            //Notice also the failed "tryXXX" would halt the browser for a period (10s or 20s?)
            Page.CurrentPage[GooglePage.ButtonByName.SearchBeforeInput] = "tryclick";
            if (!Page.LastTrySuccess)
            {
                Page.CurrentPage[GooglePage.ButtonByName.Search] = "clickscript";
            }

            //Alternatively, SendKeys(Keys.Enter) could function just like click the button
            //Page.CurrentPage[GooglePage.ButtonByName.Search, "sendkeys"] = Keys.Enter;

            Page.CurrentPage[GooglePage.LinkByClass.SearchByVoice] = "hover";

            //Scroll page to bottom to show the link of "Next"
            Page.CurrentPage[GooglePage.LinkById.Next] = "show";
#if Highlight_Target
            //Highlight it now, otherwise it may not be noticed
            Page.CurrentPage[GooglePage.LinkById.Next] = "highlight";
#endif

            //There is no link whose Text is "Web", so the click would throw Exception:
            Assert.Catch <NoSuchElementException>(() =>
                                                  Page.CurrentPage[SearchNavFragment.LinkByText.Web] = "click");

            Page.CurrentPage[SearchNavFragment.LinkByText.Web] = "tryclick";

#if Highlight_Target
            Page.CurrentPage[SearchNavFragment.DivByCustom.Web] = "highlight";
#endif
            //However, click the Div container of "Web" would be OK, though nothing would happen
            Page.CurrentPage[SearchNavFragment.DivByCustom.Web] = "click";

            var text = Page.CurrentPage[SearchNavFragment.DivByCustom.Web, "selected"];

            //Shall throw NullReferenceException since there is no filters applied to choose parent of LinkByParent.Title
            Assert.Catch <NullReferenceException>(() =>
                                                  Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title] = "click");

            //Click the Downward Arrow of the third result item (index = 2)
            Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.DownArrow, null,
                             GenericPredicate <IWebElement> .IndexPredicateOf(2)] = "click";

            //Validate now the above Downward Arrow can still be highlighted when "filters" is missing
            Page.CurrentPage[GooglePage.ResultItemFragment.AnyByCustom.LinkAddress] = "highlight";

            Page.CurrentPage[GooglePage.ResultItemFragment.ListItemAllByClass.g] = "highlight";

            Page.CurrentPage[GooglePage.ResultItemFragment.AnyByCustom.LinkAddress, null,
                             (e) => e.HasChildOfText(GooglePage.ResultItemFragment.AnyByCustom.LinkAddress, "stackoverflow.com")] = "highlight";

            Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title] = "click";

            DriverManager.Driver.Navigate().Back();

            string css       = Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title, "css"];
            string parentCss = Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title, "parentcss"];
            string fullCss   = Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title, "fullcss"];
            string href      = Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title, "href"];
            string clas      = Page.CurrentPage[GooglePage.ResultItemFragment.AnyByCustom.LinkAddress, "class"];

            //Control click to open a new tab
            Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.Title, null,
                             (e) => e.HasChildOfText(GooglePage.ResultItemFragment.AnyByCustom.LinkAddress, "code.google")] = "controlclick";

            //Notice: when a Google DownArrow is focused, clicking another DownArrow immediately would just close the previous DownArrow
            //Thus it is better to click another element first
            Page.CurrentPage[GooglePage.ResultItemFragment.SpanByClass.Description, null,
                             GenericPredicate <IWebElement> .IndexPredicateOf(2)] = "click";
#if Highlight_Target
            Page.CurrentPage[GooglePage.ResultItemFragment.SpanByClass.Description] = "highlight";
#endif

            //Define predicate to choose both Result item container (identified by ListItemAllByClass.g)
            // and the action menu item (identified by ListItemAllByClass.action_menu_item)
            Func <IWebElement, bool> predicate = (e) =>
            {
                string elementClass = e.GetAttribute("class");
                return(elementClass == "g" && e.HasChildOfText(GooglePage.ResultItemFragment.AnyByCustom.LinkAddress,
                                                               "stackoverflow.com") || (elementClass.Contains("action-menu-item") && e.Text == "Similar"));
            };

            Page.CurrentPage[GooglePage.ResultItemFragment.LinkByParent.DownArrow, null, predicate] = "click";

            //To highlight the action menu item whose text is "Similar"
            Page.CurrentPage[GooglePage.ResultItemFragment.ListItemAllByClass.action_menu_item, null, predicate] = "tryhighlight";

            if (Page.LastTrySuccess)
            {
                Page.CurrentPage[GooglePage.ResultItemFragment.ListItemAllByClass.action_menu_item] = "click";
            }

            Thread.Sleep(2000);
        }
示例#5
0
        /// <summary>
        /// Returns a list of all the resx files contained recursivelly in the basePath directory passed.
        /// The
        /// </summary>
        /// <param name="basePath">Where do you want to search for .resx</param>
        /// <param name="display">A predicate function to modify the string to be displayed.  Can be null.</param>
        /// <returns></returns>
        public static SortedList<string, string> GetResXInDirectory(string basePath, GenericPredicate<string, string> display)
        {
            DirectoryInfo dir = new DirectoryInfo(basePath);
            FileInfo[] files = dir.GetFiles("*.resx", SearchOption.AllDirectories);

            SortedList<string, string> dict = new SortedList<string, string>();

            foreach (FileInfo file in files)
            {
                string baseName = ResXUnified.GetBaseName(file.FullName);
                string path = Path.GetDirectoryName(file.FullName);

                string displayName = display == null ? path : display(path, basePath);
                displayName = Path.Combine(displayName, baseName);
                if (!dict.ContainsKey(displayName))
                    dict.Add(displayName, file.FullName);
            }

            return dict;
        }