// ================================================================================================ // // MediaWikiRedirectParserのテストクラスソース。 // // // Copyright (C) 2012 Honeplus. All rights reserved. // // Honeplus // ================================================================================================ namespace Honememo.Wptscs.Parsers { using System; using Honememo.Parsers; using Honememo.Wptscs.Models; using Honememo.Wptscs.Websites; using Microsoft.VisualStudio.TestTools.UnitTesting; /// /// のテストクラスです。 /// [TestClass] internal class MediaWikiRedirectParserTest { #region ITextParserインタフェース実装メソッド /// /// メソッドテストケース。 /// [TestMethod] public void TestTryParseToEndCondition() { IElement element; MediaWikiLink link; using (MediaWikiRedirectParser parser = new MediaWikiRedirectParser(new MockFactory().GetMediaWiki("en"))) { // 通常のリダイレクト Assert.IsTrue(parser.TryParseToEndCondition("#redirect [[TestMethod]]", null, out element)); Assert.IsInstanceOfType(element, typeof(MediaWikiLink)); link = (MediaWikiLink)element; Assert.AreEqual("Test", link.Title); Assert.IsNull(link.Section); // セクション指定付きのリダイレクト Assert.IsTrue(parser.TryParseToEndCondition("#redirect [[Test#Section]]", null, out element)); Assert.IsInstanceOfType(element, typeof(MediaWikiLink)); link = (MediaWikiLink)element; Assert.AreEqual("Test", link.Title); Assert.AreEqual("Section", link.Section); // リダイレクトの前にスペースや空行があってもOK Assert.IsTrue(parser.TryParseToEndCondition(" \r\n \r\n#REDIRECT [[ Test2 ]] \r\n \r\n", null, out element)); Assert.IsInstanceOfType(element, typeof(MediaWikiLink)); link = (MediaWikiLink)element; Assert.AreEqual("Test2", link.Title); Assert.IsNull(link.Section); // 普通の記事 Assert.IsFalse(parser.TryParseToEndCondition("'''Example''' may refer to:", null, out element)); Assert.IsNull(element); // enで日本語の転送書式 Assert.IsFalse(parser.TryParseToEndCondition("#転送 [[TestMethod]]", null, out element)); Assert.IsNull(element); // 空文字列・null Assert.IsFalse(parser.TryParseToEndCondition(string.Empty, null, out element)); Assert.IsNull(element); Assert.IsFalse(parser.TryParseToEndCondition(null, null, out element)); Assert.IsNull(element); } using (MediaWikiRedirectParser parser = new MediaWikiRedirectParser(new MockFactory().GetMediaWiki("ja"))) { // jaで日本語の転送書式 Assert.IsTrue(parser.TryParseToEndCondition("#転送 [[TestMethod]]", null, out element)); Assert.IsInstanceOfType(element, typeof(MediaWikiLink)); link = (MediaWikiLink)element; Assert.AreEqual("Test", link.Title); } } /// /// /// メソッドテストケース(Dispose)。 /// [TestMethod] [ExpectedException(typeof(ObjectDisposedException))] public void TestTryParseToEndConditionDispose() { MediaWikiRedirectParser parser = new MediaWikiRedirectParser(new MockFactory().GetMediaWiki("en")); parser.Dispose(); IElement result; parser.TryParseToEndCondition(string.Empty, null, out result); } #endregion } }