public void HtmlContentCollectionTest2() { // ARRANGE var text = "<p>Click <a href=\"http://www.google.com\">Me</a>!</p>"; // ACT var contents = new HtmlContentCollection(text); // ASSERT Assert.AreEqual("<p>Click <a href=\"http://www.google.com\">Me</a>!</p>", contents.Text); Assert.AreEqual("<p>Click <a href=\"http://www.google.com\">Me</a>!</p>", contents[0].Text); Assert.AreEqual("<p>", contents[0].StartTag); Assert.AreEqual("</p>", contents[0].EndTag); Assert.AreEqual("p", contents[0].TagName); Assert.AreEqual(HtmlContentType.HtmlElement, contents[0].Type); Assert.AreEqual("Click ", contents[0].Contents[0].Text); Assert.AreEqual(HtmlContentType.HtmlText, contents[0].Contents[0].Type); Assert.AreEqual("<a href=\"http://www.google.com\">Me</a>", contents[0].Contents[1].Text); Assert.AreEqual(HtmlContentType.HtmlElement, contents[0].Contents[1].Type); Assert.AreEqual("!", contents[0].Contents[2].Text); Assert.AreEqual(HtmlContentType.HtmlText, contents[0].Contents[2].Type); // ASSERT (Attributes) Assert.AreEqual(true, contents[0].Contents[1].Attributes.ContainsKey("href")); Assert.AreEqual("\"http://www.google.com\"", contents[0].Contents[1].Attributes["href"]); }
public void HtmlContentCollectionTest1() { // ARRANGE var text = "<title>Hello</title>"; // ACT var contents = new HtmlContentCollection(text); // ASSERT (1) Assert.AreEqual(1, contents.Count); Assert.AreEqual("<title>Hello</title>", contents.Text); Assert.AreEqual("<title>Hello</title>", contents.RawText); Assert.AreEqual("<title>Hello</title>", contents[0].Text); Assert.AreEqual("<title>Hello</title>", contents[0].RawText); Assert.AreEqual("<title>", contents[0].StartTag); Assert.AreEqual("</title>", contents[0].EndTag); Assert.AreEqual("title", contents[0].TagName); Assert.AreEqual(HtmlContentType.HtmlElement, contents[0].Type); Assert.AreEqual(1, contents[0].Contents.Count); // ASSERT (2) Assert.AreEqual("Hello", contents[0].Contents[0].Text); Assert.AreEqual("Hello", contents[0].Contents[0].RawText); Assert.AreEqual(HtmlContentType.HtmlText, contents[0].Contents[0].Type); }
public void TextTest(string input, string expected) { // ARRANGE var contents = new HtmlContentCollection(input); // ACT & ASSERT Assert.AreEqual(expected, contents.Text); }
public void RawTextTest(string text) { // ARRANGE var contents = new HtmlContentCollection(text); // ACT & ASSERT Assert.AreEqual(text, contents.RawText); }
public void ClearMethodTest(string text) { // ARRANGE: NEW Content(s) var contents = new HtmlContentCollection(text); // ACT contents.Clear(); // Manual Update is NOT required. // contents.UpdateRawText(); // ASSERT Assert.AreEqual("", contents.Text); }
public void GetNodeMethodTest(string input, string xpath, string text) { // ARRANGE: NEW Content(s) var contents = new HtmlContentCollection(input); // Output Blank Debug.WriteLine(""); // ACT var nodes = contents.GetNodes(xpath) as List <HtmlContent>; // ASSERT Assert.AreEqual(text, nodes[0].Contents.Text); }
public void HtmlContentCollectionTest4(string text) { // ARRANGE // (None) // ACT var contents = new HtmlContentCollection(text); // ASSERT (Root Contents) Assert.AreEqual(1, contents.Count); Assert.AreEqual("<head><title>Hello, world</title></head>", contents.Text); // ASSERT (head) Assert.AreEqual("<head><title>Hello, world</title></head>", contents["head"].Text); Assert.AreEqual("<head>", contents["head"].StartTag); Assert.AreEqual("</head>", contents["head"].EndTag); Assert.AreEqual("head", contents["head"].TagName); Assert.AreEqual(HtmlContentType.HtmlElement, contents["head"].Type); // ASSERT (head.Contents) // Assert.AreEqual(1, contents["head"].Contents.Count); // Count is not correct. Assert.AreEqual("<title>Hello, world</title>", contents["head"].Contents.Text); // ASSERT (title) Assert.AreEqual("<title>Hello, world</title>", contents["head"]["title"].Text); Assert.AreEqual("<title>", contents["head"]["title"].StartTag); Assert.AreEqual("</title>", contents["head"]["title"].EndTag); Assert.AreEqual("title", contents["head"]["title"].TagName); Assert.AreEqual(HtmlContentType.HtmlElement, contents["head"]["title"].Type); // ASSERT (title.Contents) // Assert.AreEqual(1, contents[0].Contents[0].Contents.Count); // Count is not correct. Assert.AreEqual("Hello, world", contents["head"]["title"].Contents.Text); // ASSERT (text) Assert.AreEqual("Hello, world", contents["head"]["title"].Contents[0].Text); Assert.AreEqual(null, contents["head"]["title"].Contents[0].StartTag); Assert.AreEqual(null, contents["head"]["title"].Contents[0].EndTag); Assert.AreEqual(null, contents["head"]["title"].Contents[0].TagName); Assert.AreEqual(HtmlContentType.HtmlText, contents["head"]["title"].Contents[0].Type); // ASSERT (text.Contents) Assert.AreEqual(null, contents["head"]["title"].Contents[0].Contents); }
public void HtmlContentCollectionTest3() { // ARRANGE var text = @"<table> <tr> <th>Item No.</th> <th>Value</th> </tr> <tr> <td>Item 1</td> <td>101</td> </tr> <tr> <td><a href=""./item2.html"">Item 2</a></td> <td>102</td> </tr> <tr> <td>Item 3</td> <td>103</td> </tr> </table>"; // ACT var contents = new HtmlContentCollection(text); // ASSERT Assert.AreEqual("Value", contents[0].Contents[1].Contents[3].Contents.Text); Assert.AreEqual(@"""./item2.html""", contents[0].Contents[5].Contents[1].Contents[0].Attributes["href"]); Assert.AreEqual("Item 3", contents[0].Contents[7].Contents[1].Contents.Text); Assert.AreEqual("103", contents[0].Contents[7].Contents[3].Contents.Text); // ASSERT (Indexer) Assert.AreEqual("Value", contents["table"].Contents["tr"].Contents["th", 1].Contents.Text); Assert.AreEqual(@"""./item2.html""", contents["table"].Contents["tr", 2].Contents["td"].Contents["a"].Attributes["href"]); Assert.AreEqual("Item 3", contents["table"].Contents["tr", 3].Contents["td"].Contents.Text); Assert.AreEqual("103", contents["table"].Contents["tr", 3].Contents["td", 1].Contents.Text); // ASSERT (Indexer 2) Assert.AreEqual("Value", contents["table"]["tr"]["th", 1].Contents.Text); Assert.AreEqual(@"""./item2.html""", contents["table"]["tr", 2]["td"]["a"].Attributes["href"]); Assert.AreEqual("Item 3", contents["table"]["tr", 3]["td"].Contents.Text); Assert.AreEqual("103", contents["table"]["tr", 3]["td", 1].Contents.Text); }
// ---------------------------------------------------------------------------------------------------- // Post-Processing Operations // ---------------------------------------------------------------------------------------------------- // (None) // ---------------------------------------------------------------------------------------------------- // Private Method(s) // ---------------------------------------------------------------------------------------------------- // Write Output according parameter private void WriteContents(HtmlContentCollection contents) { // Check Node Parameter if (!string.IsNullOrEmpty(this.Node)) { // Node Parameter is specified. // GET Nodes var nodes = contents.GetNodes(this.Node); // OUTPUT Node Texts nodes.ToList().ConvertAll(node => node.Contents?.Text).ForEach(text => this.WriteObject(text)); } else { // Node Parameter is NOT specified. // OUTPUT Contents this.WriteObject(contents); } }
public void HtmlContentCollectionTest6() { // ARRANGE var text = @"<!DOCTYPE html> <html> <head> <title>Greeting</title> </head> <body> <p>Good morning,<br> Good morning.<br> And, good morning. <p>Good afternoon.<br/> Good afternoon.<br> And, good afternoon.</p> <p>Good evening.<br> Good afternoon.<br> And, good afternoon.<br> </body> </html>"; // ACT var contents = new HtmlContentCollection(text); // ASSERT (.html.body.RawText) Assert.AreEqual(@"<body> <p>Good morning,<br> Good morning.<br> And, good morning. <p>Good afternoon.<br/> Good afternoon.<br> And, good afternoon.</p> <p>Good evening.<br> Good afternoon.<br> And, good afternoon.<br> </body>", contents["html"]["body"].RawText); // ASSERT (Count) // Assert.AreEqual(8, contents[1].Contents[1].Contents.Count); // Assert.AreEqual(4, contents[1].Contents[1].Contents[3].Contents.Count); // ARRANGE (body.Contents) var expected_body_contents_texts = new string[] { "<p>Good morning,", "<br>Good morning.", "<br>And, good morning.", "<p>Good afternoon.<br/>Good afternoon.<br>And, good afternoon.</p>", "<p>Good evening.", "<br>Good afternoon.", "<br>And, good afternoon.", "<br>" }; var actual_body_contents = (from content in contents["html"]["body"].Contents where content.Type == HtmlContentType.HtmlElement select content.Text).ToArray(); // ASSERT (body.Contents) Assert.AreEqual(expected_body_contents_texts.Length, actual_body_contents.Length); for (int i = 0; i < expected_body_contents_texts.Length; i++) { Assert.AreEqual(expected_body_contents_texts[i], actual_body_contents[i]); } // ARRANGE (body.p) var expected_p_texts = new string[] { "<p>Good morning,", "<p>Good afternoon.<br/>Good afternoon.<br>And, good afternoon.</p>", "<p>Good evening.", }; var actual_p_texts = (from content in contents["html"]["body"].Contents where content.TagName == "p" select content.Text).ToArray(); // ASSERT (body.p) Assert.AreEqual(expected_p_texts.Length, actual_p_texts.Length); for (int i = 0; i < expected_p_texts.Length; i++) { Assert.AreEqual(expected_p_texts[i], actual_p_texts[i]); } // ARRANGE (Contents of "afternoon") var expected_afternoon_contents_texts = new string[] { "Good afternoon.", "<br/>", "Good afternoon.", "<br>And, good afternoon." }; var actual_afternoon_contents_texts = (from content in contents["html"]["body"]["p", 1].Contents select content.Text).ToArray(); // ASSERT (Contents of "afternoon") Assert.AreEqual(expected_afternoon_contents_texts.Length, actual_afternoon_contents_texts.Length); for (int i = 0; i < expected_afternoon_contents_texts.Length; i++) { Assert.AreEqual(expected_afternoon_contents_texts[i], actual_afternoon_contents_texts[i]); } }
public void HtmlContentCollectionTest5(string text, bool comment) { // ARRANGE // (None) // ACT var contents = new HtmlContentCollection(text); // ASSERT (Root Contents) // Assert.AreEqual(2, contents.Count); // Count is not correct. Assert.AreEqual("<!DOCTYPE html><html><head><title>Hello</title></head><body><p>Hello, world.</body></html>", contents.Text); if (!comment) { Assert.AreEqual(@"<!DOCTYPE html> <html> <head> <title>Hello</title> </head> <body> <p>Hello, world. </body> </html>", contents.RawText); } else { Assert.AreEqual(@"<!DOCTYPE html> <!-- This is comment 1 --> <html> <!-- This is comment 2 --> <head> <title>Hello</title> </head> <body> <p>Hello, world. </body> </html>", contents.RawText); } // ASSERT (DOCTYPE) Assert.AreEqual("<!DOCTYPE html>", contents[0].Text); Assert.AreEqual("<!DOCTYPE html>", contents[0].RawText); Assert.AreEqual("<!DOCTYPE html>", contents[0].StartTag); Assert.AreEqual(null, contents[0].EndTag); Assert.AreEqual("!DOCTYPE", contents[0].TagName); // Assert.AreEqual(0, contents[0].Contents.Count); // Count is not correct. // Attributes for !DOCTYPE has been changed into null. // Assert.AreEqual(1, contents[0].Attributes.Count); // Assert.AreEqual(true, contents[0].Attributes.ContainsKey("html")); // Assert.AreEqual(null, contents[0].Attributes["html"]); // ASSERT (html) Assert.AreEqual("<html><head><title>Hello</title></head><body><p>Hello, world.</body></html>", contents["html"].Text); if (!comment) { Assert.AreEqual(@"<html> <head> <title>Hello</title> </head> <body> <p>Hello, world. </body> </html>", contents["html"].RawText); } else { Assert.AreEqual(@"<html> <!-- This is comment 2 --> <head> <title>Hello</title> </head> <body> <p>Hello, world. </body> </html>", contents["html"].RawText); } // ASSERT (html.Contents) // Assert.AreEqual(2, contents[1].Contents.Count); // Count is not correct. Assert.AreEqual("<head><title>Hello</title></head><body><p>Hello, world.</body>", contents["html"].Contents.Text); if (!comment) { Assert.AreEqual(@" <head> <title>Hello</title> </head> <body> <p>Hello, world. </body> ", contents["html"].Contents.RawText); } else { Assert.AreEqual(@" <!-- This is comment 2 --> <head> <title>Hello</title> </head> <body> <p>Hello, world. </body> ", contents["html"].Contents.RawText); } // ASSERT (head) Assert.AreEqual("<head><title>Hello</title></head>", contents["html"]["head"].Text); Assert.AreEqual(@"<head> <title>Hello</title> </head>", contents["html"]["head"].RawText); // ASSERT (head.Contents) // Assert.AreEqual(1, contents["html"]["head"].Contents.Count); // Count is not correct. Assert.AreEqual("<title>Hello</title>", contents["html"]["head"].Contents.Text); Assert.AreEqual(@" <title>Hello</title> ", contents["html"]["head"].Contents.RawText); // ASSERT (body) Assert.AreEqual("<body><p>Hello, world.</body>", contents["html"]["body"].Text); Assert.AreEqual(@"<body> <p>Hello, world. </body>", contents["html"]["body"].RawText); // ASSERT (body.Contents) // Assert.AreEqual(1, contents["html"]["body"].Contents.Count); // Count is not correct. Assert.AreEqual("<p>Hello, world.", contents["html"]["body"].Contents.Text); Assert.AreEqual(@" <p>Hello, world. ", contents["html"]["body"].Contents.RawText); // ASSERT (p) Assert.AreEqual("<p>Hello, world.", contents["html"]["body"]["p"].Text); Assert.AreEqual(@"<p>Hello, world. ", contents["html"]["body"]["p"].RawText); // ASSERT (p.Contents) // Assert.AreEqual(1, contents["html"]["body"]["p"].Contents.Count); // Count is not correct. Assert.AreEqual("Hello, world.", contents["html"]["body"]["p"].Contents.Text); Assert.AreEqual(@"Hello, world. ", contents["html"]["body"]["p"].Contents.RawText); // ASSERT (text) Assert.AreEqual("Hello, world.", contents["html"]["body"]["p"].Contents.Text); Assert.AreEqual(@"Hello, world. ", contents["html"]["body"]["p"].Contents.RawText); // ASSERT (text.Contents) // Assert.AreEqual(null, contents[1].Contents[1].Contents[0].Contents[0].Contents); }