コード例 #1
0
        /// <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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }