", xmlElement.ToString());
Assert.AreEqual("testtag6", xmlElement.Name);
Assert.AreEqual(2, xmlElement.Attributes.Count);
Assert.AreEqual("testvalue1", xmlElement.Attributes["testattr1"]);
Assert.AreEqual("testvalue2", xmlElement.Attributes["testattr2"]);
}
///
/// メソッドテストケース(不正な構文)。
///
[TestMethod]
public void TestTryParseLazy()
{
IElement element;
XmlElement xmlElement;
XmlElementParser parser = new XmlElementParser(this.xmlParser);
Assert.IsTrue(parser.TryParse("", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("
", xmlElement.ToString());
Assert.AreEqual("p", xmlElement.Name);
Assert.AreEqual(0, xmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse("test value", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("test value", xmlElement.ToString());
Assert.AreEqual("testtag", xmlElement.Name);
Assert.AreEqual(0, xmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse("test value", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("test value", xmlElement.ToString());
Assert.AreEqual("testtag2", xmlElement.Name);
Assert.AreEqual(2, xmlElement.Attributes.Count);
Assert.AreEqual("test", xmlElement.Attributes["testattr"]);
Assert.AreEqual(string.Empty, xmlElement.Attributes["value"]);
Assert.IsTrue(parser.TryParse("test value2 testtag3>testend", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("test value2 testtag3>testend", xmlElement.ToString());
Assert.AreEqual("testtag3", xmlElement.Name);
Assert.AreEqual(0, xmlElement.Attributes.Count);
}
///
/// メソッドテストケース(不正でNG)。
///
[TestMethod]
public void TestTryParseLazyNg()
{
IElement element;
XmlElementParser parser = new XmlElementParser(this.xmlParser);
Assert.IsFalse(parser.TryParse("< testtag>", out element));
Assert.IsNull(element);
Assert.IsFalse(parser.TryParse("", out element));
Assert.IsNull(element);
Assert.IsFalse(parser.TryParse("", out element));
Assert.IsNull(element);
Assert.IsFalse(parser.TryParse("4", out element));
Assert.IsNull(element);
}
///
/// メソッドテストケース(HTML)。
///
[TestMethod]
public void TestTryParseHtml()
{
IElement element;
HtmlElement htmlElement;
this.xmlParser.IsHtml = true;
XmlElementParser parser = new XmlElementParser(this.xmlParser);
Assert.IsTrue(parser.TryParse("", out element));
htmlElement = (HtmlElement)element;
Assert.AreEqual("", htmlElement.ToString());
Assert.AreEqual("testtag", htmlElement.Name);
Assert.AreEqual(0, htmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse("", out element));
htmlElement = (HtmlElement)element;
Assert.AreEqual("
", htmlElement.ToString());
Assert.AreEqual("p", htmlElement.Name);
Assert.AreEqual(0, htmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse("testtag3 />", out element));
htmlElement = (HtmlElement)element;
Assert.AreEqual("", htmlElement.ToString());
Assert.AreEqual("testtag2", htmlElement.Name);
Assert.AreEqual(0, htmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse("", out element));
htmlElement = (HtmlElement)element;
Assert.AreEqual("", htmlElement.ToString());
Assert.AreEqual("testtag4", htmlElement.Name);
Assert.AreEqual(0, htmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse(">", out element));
htmlElement = (HtmlElement)element;
Assert.AreEqual("", htmlElement.ToString());
Assert.AreEqual("testtag6", htmlElement.Name);
Assert.AreEqual(1, htmlElement.Attributes.Count);
Assert.AreEqual("testvalue", htmlElement.Attributes["testattr"]);
Assert.IsTrue(parser.TryParse("test", out element));
htmlElement = (HtmlElement)element;
Assert.AreEqual("test", htmlElement.ToString());
Assert.AreEqual("testtag7", htmlElement.Name);
Assert.AreEqual(2, htmlElement.Attributes.Count);
Assert.AreEqual("testvalue1", htmlElement.Attributes["testattr1"]);
Assert.AreEqual("testvalue2", htmlElement.Attributes["testattr2"]);
}
///
/// メソッドテストケース(大文字小文字)。
///
[TestMethod]
public void TestTryParseIgnoreCase()
{
IElement element;
XmlElement xmlElement;
this.xmlParser.IgnoreCase = false;
XmlElementParser parser = new XmlElementParser(this.xmlParser);
Assert.IsTrue(parser.TryParse("
", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("", xmlElement.ToString());
Assert.AreEqual("testtag", xmlElement.Name);
Assert.AreEqual(0, xmlElement.Attributes.Count);
Assert.IsTrue(parser.TryParse("", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("", xmlElement.ToString());
Assert.AreEqual("testtag", xmlElement.Name);
Assert.AreEqual(0, xmlElement.Attributes.Count);
this.xmlParser.IgnoreCase = true;
Assert.IsTrue(parser.TryParse("", out element));
xmlElement = (XmlElement)element;
Assert.AreEqual("", xmlElement.ToString());
Assert.AreEqual("testtag", xmlElement.Name);
Assert.AreEqual(0, xmlElement.Attributes.Count);
}
///
/// メソッドテストケース(タグ限定)。
///
[TestMethod]
public void TestTryParseTargets()
{
IElement element;
XmlElementParser parser = new XmlElementParser(this.xmlParser);
// 特定のタグのみを処理対象とするよう指定する
parser.Targets = new string[] { "div", "span" };
Assert.IsFalse(parser.TryParse("
test
", out element));
Assert.IsFalse(parser.TryParse("
", out element));
Assert.IsTrue(parser.TryParse("test
", out element));
Assert.AreEqual("test
", element.ToString());
// XmlParserに大文字小文字無視が指定されている場合、ここも無視する
Assert.IsTrue(parser.TryParse("test", out element));
Assert.AreEqual("test", element.ToString());
// 指定されていない場合、区別する
this.xmlParser.IgnoreCase = false;
Assert.IsFalse(parser.TryParse("test", out element));
Assert.IsTrue(parser.TryParse("test", out element));
Assert.AreEqual("test", element.ToString());
}
///
/// メソッドテストケース。
///
[TestMethod]
public void TestIsElementPossible()
{
XmlElementParser parser = new XmlElementParser(new XmlParser());
Assert.IsTrue(parser.IsPossibleParse('<'));
Assert.IsFalse(parser.IsPossibleParse('['));
Assert.IsFalse(parser.IsPossibleParse('-'));
Assert.IsFalse(parser.IsPossibleParse('/'));
Assert.IsFalse(parser.IsPossibleParse('#'));
}
#endregion
}
}