// 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.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("
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("