/// <summary> /// Calculates number of occurrences of each word listed in keywords Meta Tag. /// </summary> /// <returns>Dictionary of each word listed in keywords meta tags.</returns> public override Dictionary <string, int> CalculateOccuranceInMetaTag() { if (IsFilterStopWords && stopwordDictionary == null) { stopwordDictionary = CoreUtil.ProcessStopWords(StopWords); } if (htmlPage == null) { var htmlWeb = new HtmlWeb(); var lastStatusCode = HttpStatusCode.OK; htmlWeb.PostResponse = (request, response) => { if (response != null) { lastStatusCode = response.StatusCode; } }; htmlPage = htmlWeb.Load(Input); if (lastStatusCode != HttpStatusCode.OK) { throw new Exception($"{Constant.WEB_REQUEST_ERROR_MESSAGE} {lastStatusCode}"); } } var metaTagCollection = htmlPage.DocumentNode.SelectNodes("//meta"); return(CoreUtil.ProcessMetaTag(metaTagCollection, stopwordDictionary, allWordDictionary)); }
public void ProcessMetaTag_WithDifferentMetaTagsInHtml_WithEmptyWordDictionary_ReturnDictionaryOfMetaTagWithZeorOccurence(string html) { //arrange var stopwordDictionary = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); var allWordDictionary = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase) { { "hello", 0 }, { "world", 0 }, { "happy", 0 }, { "coding", 0 }, { "start", 0 }, { "today", 0 } }; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//meta"); //act var actual = CoreUtil.ProcessMetaTag(nodes, stopwordDictionary, allWordDictionary); //assert Assert.AreEqual(actual, expected); }
public void ProcessMetaTag_WithWordsNotExistWithinMetaTag_ReturnDictionaryOfWordOccurenceListedInMetaTag(string html) { //arrange var stopwordDictionary = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); var allWordDictionary = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase) { { "happy", 5 }, { "coding", 5 }, { "Seo", 5 }, { "Analyser", 5 }, { "Text", 5 } }; var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase) { { "hello", 0 }, { "world", 0 }, { "happy", 5 }, { "coding", 5 }, { "start", 0 }, { "today", 0 } }; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//meta"); //act var actual = CoreUtil.ProcessMetaTag(nodes, stopwordDictionary, allWordDictionary); //assert Assert.AreEqual(actual, expected); }
public void ProcessMetaTag_WithNoMetaTagsInHtml_WithEmptyWordDictionary_ReturnEmptyMetaTagDictionary(string html) { //arrange var stopwordDictionary = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); var allWordDictionary = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//meta"); //act var actual = CoreUtil.ProcessMetaTag(nodes, stopwordDictionary, allWordDictionary); //assert Assert.AreEqual(actual, expected); Assert.IsEmpty(actual); }