// ================================================================================================
//
// 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
}
}