// ================================================================================================
//
// XmlParserのテストクラスソース。
//
//
// Copyright (C) 2012 Honeplus. All rights reserved.
//
// Honeplus
// ================================================================================================
namespace Honememo.Parsers
{
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
///
/// のテストクラスです。
///
[TestClass]
public class XmlParserTest
{
#region プロパティテストケース
///
/// プロパティテストケース。
///
[TestMethod]
public void TestParsers()
{
using (XmlParser parser = new XmlParser())
{
// 初期状態で値が格納されていること
Assert.IsNotNull(parser.Parsers);
Assert.AreEqual(2, parser.Parsers.Length);
// 設定すればそのオブジェクトが入ること
IParser[] parsers = new IParser[0];
parser.Parsers = parsers;
Assert.AreSame(parsers, parser.Parsers);
}
}
///
/// プロパティテストケース(null)。
///
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void TestParsersNull()
{
using (XmlParser parser = new XmlParser())
{
parser.Parsers = null;
}
}
///
/// プロパティテストケース。
///
[TestMethod]
public void TestIgnoreCase()
{
using (XmlParser parser = new XmlParser())
{
// 初期値はtrue、値を設定すればその値に変わる
Assert.IsTrue(parser.IgnoreCase);
parser.IgnoreCase = false;
Assert.IsFalse(parser.IgnoreCase);
parser.IgnoreCase = true;
Assert.IsTrue(parser.IgnoreCase);
}
}
///
/// プロパティテストケース。
///
[TestMethod]
public void TestIsHtml()
{
using (XmlParser parser = new XmlParser())
{
// 初期値はfalse、値を設定すればその値に変わる
Assert.IsFalse(parser.IsHtml);
parser.IsHtml = true;
Assert.IsTrue(parser.IsHtml);
parser.IsHtml = false;
Assert.IsFalse(parser.IsHtml);
}
}
#endregion
#region IParserインタフェースメソッドテストケース
// ※ 2012年2月現在、IParser, ITextParserの各メソッド実装は抽象クラス側で共通になっており、
// 改造部分はどこかでやればテストされるのでそれで割愛
///
/// メソッドテストケース。
///
[TestMethod]
public void TestParse()
{
using (XmlParser parser = new XmlParser())
{
Assert.AreEqual("test", parser.Parse("test").ToString());
IElement element = parser.Parse("testbefore
testinner
testafter");
Assert.IsInstanceOfType(element, typeof(ICollection));
ICollection collection = (ICollection)element;
Assert.AreEqual(4, collection.Count);
Assert.AreEqual("testbefore", collection.ElementAt(0).ToString());
Assert.IsInstanceOfType(collection.ElementAt(1), typeof(XmlElement));
Assert.AreEqual("testinner
", collection.ElementAt(1).ToString());
Assert.IsInstanceOfType(collection.ElementAt(2), typeof(XmlCommentElement));
Assert.AreEqual("", collection.ElementAt(2).ToString());
Assert.AreEqual("testafter", collection.ElementAt(3).ToString());
}
}
///
/// メソッドテストケース(null)。
///
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void TestParseNull()
{
using (XmlParser parser = new XmlParser())
{
parser.Parse(null);
}
}
///
/// メソッドテストケース(Dispose)。
///
[TestMethod]
[ExpectedException(typeof(ObjectDisposedException))]
public void TestParseDispose()
{
XmlParser parser = new XmlParser();
parser.Dispose();
IElement result;
parser.TryParse("test", out result);
}
#endregion
#region IDisposableインタフェース実装メソッドテストケース
///
/// メソッドテストケース。
///
[TestMethod]
public void TestDispose()
{
// 循環参照のあるParsersを解放する
XmlParser parser = new XmlParser();
Assert.IsNotNull(parser.Parsers);
parser.Dispose();
Assert.IsNull(parser.Parsers);
}
#endregion
}
}