// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; using System.IO; using ICSharpCode.AspNet.Mvc.Folding; using NUnit.Framework; namespace AspNet.Mvc.Tests.Folding { public class WebFormsHtmlReaderTests { SimpleWebFormsHtmlReader htmlReader; void CreateHtmlReader(string html) { htmlReader = new SimpleWebFormsHtmlReader(html); } [Test] public void Value_ReadSingleParagraphTag_ReturnsParagraphTagName() { CreateHtmlReader("

"); htmlReader.Read(); string value = htmlReader.Value; Assert.AreEqual("p", value); } [Test] public void Read_EmptyString_ReturnsFalse() { CreateHtmlReader(String.Empty); bool result = htmlReader.Read(); Assert.IsFalse(result); } [Test] public void Read_ReadSingleParagraphTagHtml_ReturnsTrue() { CreateHtmlReader("

"); bool result = htmlReader.Read(); Assert.IsTrue(result); } [Test] public void Read_ReadTwiceFromSingleParagraphTag_SecondReadReturnsFalse() { CreateHtmlReader("

"); bool result = htmlReader.Read(); result = htmlReader.Read(); Assert.IsFalse(result); } [Test] public void Offset_SingleParagraphTagAtStartOfString_ReturnsZero() { CreateHtmlReader("

"); htmlReader.Read(); int offset = htmlReader.Offset; Assert.AreEqual(0, offset); } [Test] public void Length_SingleParagraphTagAtStartOfString_ReturnsThree() { CreateHtmlReader("

"); htmlReader.Read(); int length = htmlReader.Length; Assert.AreEqual(3, length); } [Test] public void Offset_SingleParagraphTagOnSecondLine_IsAfterCarriageReturnAndLineFeedAndReturnsTwo() { CreateHtmlReader("\r\n

"); htmlReader.Read(); int offset = htmlReader.Offset; Assert.AreEqual(2, offset); } [Test] public void Length_SingleParagraphTagOnSecondLine_ReturnsThreeForParagraphNodeRead() { CreateHtmlReader("\r\n

"); htmlReader.Read(); int length = htmlReader.Length; Assert.AreEqual(3, length); } [Test] public void Value_ReadSingleLineBreakTag_ReturnsLineBreakTagName() { CreateHtmlReader("
"); htmlReader.Read(); string value = htmlReader.Value; Assert.AreEqual("br", value); } [Test] public void Length_ReadSingleLineBreakTag_ReturnsFour() { CreateHtmlReader("
"); htmlReader.Read(); int length = htmlReader.Length; Assert.AreEqual(4, length); } [Test] public void Value_ReadParagraphTagFollowedByBoldTag_ReturnsBoldTagName() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); string value = htmlReader.Value; Assert.AreEqual("b", value); } [Test] public void Offset_ReadParagraphTagFollowedByBoldTag_ReturnsThree() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); int offset = htmlReader.Offset; Assert.AreEqual(3, offset); } [Test] public void Value_ReadParagraphTagFollowedByEndParagraphTag_ReturnsParagraphTagName() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); string value = htmlReader.Value; Assert.AreEqual("p", value); } [Test] public void IsEndElement_ReadParagraphTagFollowedByEndParagraphTag_ReturnsTrue() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); bool result = htmlReader.IsEndElement; Assert.IsTrue(result); } [Test] public void IsEmptyElement_ReadEmptyBreakTagElement_ReturnsTrue() { CreateHtmlReader("
"); htmlReader.Read(); bool result = htmlReader.IsEmptyElement; Assert.IsTrue(result); } [Test] public void IsEmptyElement_ReadParagraphTagFollowedByEndParagraphTag_ReturnsFalse() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); bool result = htmlReader.IsEmptyElement; Assert.IsFalse(result); } [Test] public void Length_ReadParagraphTagFollowedByEndParagraphTag_ReturnsFour() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); int length = htmlReader.Length; Assert.AreEqual(4, length); } [Test] public void IsStartElement_ReadSingleParagraphTag_ReturnTrue() { CreateHtmlReader("

"); htmlReader.Read(); bool result = htmlReader.IsStartElement; Assert.IsTrue(result); } [Test] public void IsEmptyElement_ReadEmptyBreakTagFollowedbySingleParagraphTag_ReturnFalse() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); bool result = htmlReader.IsEmptyElement; Assert.IsFalse(result); } [Test] public void IsStartElement_ReadEmptyBreakTag_ReturnsTrue() { CreateHtmlReader("
"); htmlReader.Read(); bool result = htmlReader.IsStartElement; Assert.IsTrue(result); } [Test] public void IsStartElement_ReadParagraphTagFollowedByEndParagraphTag_ReturnsFalse() { CreateHtmlReader("

"); htmlReader.Read(); htmlReader.Read(); bool result = htmlReader.IsStartElement; Assert.IsFalse(result); } [Test] public void Value_ReadParagraphTagsContainingText_ReturnsParagraphTagName() { CreateHtmlReader("

abcdef

"); htmlReader.Read(); htmlReader.Read(); string value = htmlReader.Value; Assert.AreEqual("p", value); } [Test] public void Value_ReadDivStartTagWithClassAttribute_ReturnsDivTagName() { CreateHtmlReader("
"); htmlReader.Read(); string value = htmlReader.Value; Assert.AreEqual("div", value); } [Test] public void Value_ScriptStartTagWithForwardSlashInTypeAttribute_ReturnsScriptTagName() { CreateHtmlReader("