Beispiel #1
0
        public void AbstractXPathBuilder_Synthetize_ExactSamePathsButDifferentHierarchies()
        {
            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(GenerateHtmlPageForSynthetizeTests());

            HtmlNode             article1 = doc.DocumentNode.SelectSingleNode("//*[@id=\"article1\"]/h2");
            AbstractXPathBuilder xpath1   = new HtmlXPathBuilder();

            xpath1.Build(article1);

            HtmlNode             article2 = doc.DocumentNode.SelectSingleNode("//*[@id=\"article2\"]/h2");
            AbstractXPathBuilder xpath2   = new HtmlXPathBuilder();

            xpath2.Build(article2);

            List <AbstractXPathBuilder> list = new List <AbstractXPathBuilder>();

            list.Add(xpath1);
            list.Add(xpath2);
            AbstractXPathBuilder synthetisis = HtmlXPathBuilder.Synthetize(list);
            string expectedResult            = "/html/body/div/section/article[@id]/h2";
            string actualResult = synthetisis.ToString();

            Assert.AreEqual(expectedResult, actualResult);

            synthetisis.Optimize();
            string expectedOptimization = "//article[@id]/h2";
            string optimizedResult      = synthetisis.ToString();

            Assert.AreEqual(expectedOptimization, optimizedResult);
        }