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); }