Ejemplo n.º 1
0
        /// <summary>
        /// Calculates number of external links in a webpage.
        /// </summary>
        /// <returns>Dictionary of external link.</returns>
        public override Dictionary <string, int> CalculateExternalLink()
        {
            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 hrefNodeCollection = htmlPage.DocumentNode.SelectNodes("//a[@href]");

            return(CoreUtil.ProcessExternalLink(hrefNodeCollection, Input));
        }
Ejemplo n.º 2
0
        public void ProcessExternalLink_WithEmptyText_ReturnDictionaryOfExternalLink(string input)
        {
            //arrange
            var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase);


            //act
            var actual = CoreUtil.ProcessExternalLink(input);

            //assert
            Assert.AreEqual(actual, expected);
            Assert.IsEmpty(actual);
        }
Ejemplo n.º 3
0
        public void ProcessExternalLink_WithEnglishText_ReturnDictionaryOfExternalLink(string input)
        {
            //arrange
            var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase)
            {
                { "http://www.google.com", 1 },
                { "https://www.google.com", 2 }
            };

            //act
            var actual = CoreUtil.ProcessExternalLink(input);

            //assert
            Assert.AreEqual(actual, expected);
        }
Ejemplo n.º 4
0
        public void ProcessExternalLink_onURLAnalyserWithRelativeOrAbsoluteUrl_ReturnDictionaryOfExternalLink(string html, string baseUrl)
        {
            //arrange

            var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase)
            {
                { "https://www.google.com/", 1 },
                { "https://www.w3schools.com/cs/exercise.asp?filename=exercise_syntax1", 1 }
            };

            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(html);
            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//html//a");

            //act
            var actual = CoreUtil.ProcessExternalLink(nodes, baseUrl);

            //assert
            Assert.AreEqual(actual, expected);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Calculates number of external links in a english text.
 /// </summary>
 /// <returns>Dictionary of external link.</returns>
 public override Dictionary <string, int> CalculateExternalLink() => CoreUtil.ProcessExternalLink(Input);