public void AddCssClassWorksAsExpected() { // --- Arrange const string TAG = "mytag"; const string CLASS = "class"; const string ATTR1 = "attr1"; const string ATTR2 = "attr2"; const string EXPECTED1 = ATTR1; const string EXPECTED2 = ATTR1 + " " + ATTR2; // --- Act var elem1 = new MyHtmlElement(TAG); elem1.CssClass(ATTR1); var elem2 = new MyHtmlElement(TAG); elem2.CssClass(ATTR1); elem2.CssClass(ATTR2); // --- Assert elem1.HtmlAttributes.ShouldHaveCountOf(1); elem1.HtmlAttributes.Keys.ShouldContain(CLASS); elem1.HtmlAttributes[CLASS].ShouldEqual(EXPECTED1); elem1.CssClasses.ShouldHaveCountOf(1); elem1.CssClasses.ShouldContain(ATTR1); elem2.HtmlAttributes.ShouldHaveCountOf(1); elem2.HtmlAttributes.Keys.ShouldContain(CLASS); elem2.HtmlAttributes[CLASS].ShouldEqual(EXPECTED2); elem2.CssClasses.ShouldHaveCountOf(2); elem2.CssClasses.ShouldContain(ATTR1); elem2.CssClasses.ShouldContain(ATTR2); }
public void ConstructionWithTagAndAttributesWorksAsExpected() { // --- Arrange const string TAG = "mytag"; const string EXPECTED_START = "<mytag attr1=\"1\" attr2=\"2\" attr3=\"True\">"; const string EXPECTED_END = "</mytag>"; // --- Act var attribs = new Dictionary <string, object> { { "attr1", 1 }, { "attr2", "2" }, { "attr3", true } }; var myElement = new MyHtmlElement(TAG, attribs); // --- Assert myElement.Tag.ShouldEqual(TAG); myElement.StartTag.ShouldEqual(EXPECTED_START); myElement.EndTag.ShouldEqual(EXPECTED_END); myElement.HtmlAttributes.ShouldHaveCountOf(3); myElement.HtmlAttributes.Keys.ShouldContain("attr1"); myElement.HtmlAttributes["attr1"].ShouldEqual(1); myElement.HtmlAttributes.Keys.ShouldContain("attr1"); myElement.HtmlAttributes["attr2"].ShouldEqual("2"); myElement.HtmlAttributes.Keys.ShouldContain("attr1"); myElement.HtmlAttributes["attr3"].ShouldEqual(true); }
/* * <html> * <header> * </header> * <body> * </body> * </html> * */ private static void HtmlDiet(string originFile, string targetFile) { StreamReader reader = new StreamReader(originFile,Encoding.GetEncoding(new CultureInfo("EN-US").TextInfo.ANSICodePage)); StreamWriter writer = new StreamWriter(targetFile,false,Encoding.UTF8); string file = reader.ReadToEnd(); MyHtmlElement page = new MyHtmlElement(ref file, root); writer.Write(page); writer.Flush(); writer.Close();reader.Close(); }
public void ConstructionWithTagWorksAsExpected() { // --- Arrange const string TAG = "mytag"; const string EXPECTED_START = "<mytag>"; const string EXPECTED_END = "</mytag>"; // --- Act var myElement = new MyHtmlElement(TAG); // --- Assert myElement.Tag.ShouldEqual(TAG); myElement.HtmlAttributes.ShouldHaveCountOf(0); myElement.StartTag.ShouldEqual(EXPECTED_START); myElement.EndTag.ShouldEqual(EXPECTED_END); }
public void RemoveCssClassRemovesCssAttributeAsExpected() { // --- Arrange const string TAG = "mytag"; const string ATTR1 = "attr1"; const string ATTR2 = "attr2"; var elem = new MyHtmlElement(TAG); elem.CssClass(ATTR1); elem.CssClass(ATTR2); // --- Act elem.RemoveCssClass(ATTR1); elem.RemoveCssClass(ATTR2); // --- Assert elem.CssClasses.ShouldHaveCountOf(0); elem.HtmlAttributes.ShouldHaveCountOf(0); }
public void RemoveCssClassWorksAsExpected() { // --- Arrange const string TAG = "mytag"; const string CLASS = "class"; const string ATTR1 = "attr1"; const string ATTR2 = "attr2"; var elem = new MyHtmlElement(TAG); elem.CssClass(ATTR1); elem.CssClass(ATTR2); // --- Act elem.RemoveCssClass(ATTR1); // --- Assert elem.HtmlAttributes.ShouldHaveCountOf(1); elem.HtmlAttributes.Keys.ShouldContain(CLASS); elem.HtmlAttributes[CLASS].ShouldEqual(ATTR2); elem.CssClasses.ShouldHaveCountOf(1); elem.CssClasses.ShouldContain(ATTR2); }
public void ConstructionWithTagAndAttributeParamsWorksWithMissingValue() { // --- Arrange const string TAG = "mytag"; const string EXPECTED_START = "<mytag attr1=\"1\" attr2=\"2\" attr3=\"\">"; const string EXPECTED_END = "</mytag>"; // --- Act var myElement = new MyHtmlElement(TAG, "attr1", 1, "attr2", "2", "attr3"); // --- Assert myElement.Tag.ShouldEqual(TAG); myElement.StartTag.ShouldEqual(EXPECTED_START); myElement.EndTag.ShouldEqual(EXPECTED_END); myElement.HtmlAttributes.ShouldHaveCountOf(3); myElement.HtmlAttributes.Keys.ShouldContain("attr1"); myElement.HtmlAttributes["attr1"].ShouldEqual(1); myElement.HtmlAttributes.Keys.ShouldContain("attr1"); myElement.HtmlAttributes["attr2"].ShouldEqual("2"); myElement.HtmlAttributes.Keys.ShouldContain("attr1"); myElement.HtmlAttributes["attr3"].ShouldEqual(""); }
public void EnsureHtmlAttributeWorksAsExpected() { // --- Arrange const string TAG = "mytag"; const string CLASS = "class"; const string ATTR1 = "attr1"; const string ATTR_NAME = "attr"; const string ATTR_VAL = "value"; var elem = new MyHtmlElement(TAG); elem.CssClass(ATTR1); // --- Act elem.Attr(ATTR_NAME, ATTR_VAL); // --- Assert elem.CssClasses.ShouldHaveCountOf(1); elem.CssClasses.ShouldContain(ATTR1); elem.HtmlAttributes.ShouldHaveCountOf(2); elem.HtmlAttributes.Keys.ShouldContain(CLASS); elem.HtmlAttributes.Keys.ShouldContain(ATTR_NAME); elem.HtmlAttributes[ATTR_NAME].ShouldEqual(ATTR_VAL); }
public void AddCssClassWorksWithMultipleClasses() { // --- Arrange const string TAG = "mytag"; const string CLASS = "class"; const string ATTR1 = "attr1"; const string ATTR2 = "attr2"; const string ATTR = ATTR1 + " " + ATTR2; const string EXPECTED = ATTR1 + " " + ATTR2; // --- Act var elem = new MyHtmlElement(TAG); elem.CssClass(ATTR); // --- Assert elem.HtmlAttributes.ShouldHaveCountOf(1); elem.HtmlAttributes.Keys.ShouldContain(CLASS); elem.HtmlAttributes[CLASS].ShouldEqual(EXPECTED); elem.CssClasses.ShouldHaveCountOf(2); elem.CssClasses.ShouldContain(ATTR1); elem.CssClasses.ShouldContain(ATTR2); }
public MyHtmlElement(ref string html, MyHtmlElement parent) : this() { html = html.Replace("'", "\""); html = html.Replace("\r", "\n"); html = html.Replace("\n", " "); Parent = parent; html = html.TrimStart(); if (!html.StartsWith("<")) { throw new Exception("Texto Html tem de começar por '<'"); } if (html.StartsWith("</")) return ; ParseComments(ref html); ParseElementHeader(ref html); if(HasChilds) { string elementFooter = "</" + Name + '>'; while (!html.TrimStart().StartsWith(elementFooter)) { var elem = new MyHtmlElement(ref html, this); Child.Add(elem); } html = html.Remove(0, elementFooter.Length); } //while (!html.Equals("")) //{ // Child.Add(new MyHtmlElement(ref html, Parent)); //} //Console.WriteLine(html.Substring(0,html.IndexOf('\n'))); html = html.TrimStart(); }