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

            doc.LoadHtml(GenerateHtmlPageForSynthetizeTests());

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

            xpath1.Build(article1);

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

            xpath3.Build(article3);

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

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

            Assert.AreEqual(expectedResult, actualResult);

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

            Assert.AreEqual(expectedOptimization, optimizedResult);
        }