X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=WptscsTest%2FWebsites%2FMediaWikiPageTest.cs;h=6535861bb140faa0a1031e9fc82ccb1d7564b3d6;hb=37517d324914f66633a6aad7004b6cbc17fe78f2;hp=7092b0d1f6906d5ea3a569c86d586a2762d63306;hpb=d4aa6c79214cc295c646bc91ecbd2d9387f195bd;p=wptscs%2Fwpts.git diff --git a/WptscsTest/Websites/MediaWikiPageTest.cs b/WptscsTest/Websites/MediaWikiPageTest.cs index 7092b0d..6535861 100644 --- a/WptscsTest/Websites/MediaWikiPageTest.cs +++ b/WptscsTest/Websites/MediaWikiPageTest.cs @@ -13,17 +13,16 @@ namespace Honememo.Wptscs.Websites using System; using System.Collections.Generic; using Honememo.Parsers; - using Honememo.Tests; using Honememo.Utilities; using Honememo.Wptscs.Models; using Honememo.Wptscs.Parsers; using NUnit.Framework; /// - /// MediaWikiPageのテストクラスです。 + /// のテストクラスです。 /// [TestFixture] - public class MediaWikiPageTest + class MediaWikiPageTest { #region コンストラクタテストケース @@ -34,7 +33,7 @@ namespace Honememo.Wptscs.Websites public void TestConstructorWebsiteTitleTextTimestamp() { DateTime t = DateTime.Now; - MediaWiki s = new DummySite(new Language("en")); + MediaWiki s = new MediaWiki(new Language("en")); MediaWikiPage page = new MediaWikiPage(s, "TestTitle", "TestText", t); Assert.AreSame(s, page.Website); Assert.AreEqual("TestTitle", page.Title); @@ -48,7 +47,7 @@ namespace Honememo.Wptscs.Websites [Test] public void TestConstructorWebsiteTitleText() { - MediaWiki s = new DummySite(new Language("en")); + MediaWiki s = new MediaWiki(new Language("en")); MediaWikiPage page = new MediaWikiPage(s, "TestTitle", "TestText"); Assert.AreEqual(s, page.Website); Assert.AreEqual("TestTitle", page.Title); @@ -62,7 +61,7 @@ namespace Honememo.Wptscs.Websites [Test] public void TestConstructorWebsiteTitle() { - MediaWiki s = new DummySite(new Language("en")); + MediaWiki s = new MediaWiki(new Language("en")); MediaWikiPage page = new MediaWikiPage(s, "TestTitle"); Assert.AreEqual(s, page.Website); Assert.AreEqual("TestTitle", page.Title); @@ -87,7 +86,7 @@ namespace Honememo.Wptscs.Websites [ExpectedException(typeof(ArgumentException))] public void TestConstructorTitleBlank() { - new MediaWikiPage(new DummySite(new Language("en")), " "); + new MediaWikiPage(new MediaWiki(new Language("en")), " "); } #endregion @@ -95,7 +94,7 @@ namespace Honememo.Wptscs.Websites #region プロパティテストケース /// - /// Redirectプロパティテストケース(正常系)。 + /// プロパティテストケース(正常系)。 /// [Test] public void TestRedirect() @@ -117,7 +116,7 @@ namespace Honememo.Wptscs.Websites } /// - /// Redirectプロパティテストケース(Text未設定)。 + /// プロパティテストケース(Text未設定)。 /// [Test] [ExpectedException(typeof(InvalidOperationException))] @@ -126,47 +125,19 @@ namespace Honememo.Wptscs.Websites MediaWikiLink dummy = new MediaWikiPage(new MockFactory().GetMediaWiki("en"), "TestTitle").Redirect; } - /// - /// Elementプロパティテストケース(正常系)。 - /// - [Test] - public void TestElement() - { - IElement element = new MediaWikiPage(new MockFactory().GetMediaWiki("en"), "TestTitle", "'''Title''' is [[xxx]].").Element; - Assert.IsNotNull(element); - Assert.AreEqual("'''Title''' is [[xxx]].", element.ToString()); - Assert.IsInstanceOf(typeof(ListElement), element); - ListElement list = (ListElement)element; - Assert.AreEqual(3, list.Count); - Assert.AreEqual("'''Title''' is ", list[0].ToString()); - Assert.AreEqual("[[xxx]]", list[1].ToString()); - Assert.IsInstanceOf(typeof(MediaWikiLink), list[1]); - Assert.AreEqual(".", list[2].ToString()); - } - - /// - /// Elementプロパティテストケース(Text未設定)。 - /// - [Test] - [ExpectedException(typeof(InvalidOperationException))] - public void TestElementTextNull() - { - IElement dummy = new MediaWikiPage(new MockFactory().GetMediaWiki("en"), "TestTitle").Element; - } - #endregion #region 公開メソッドテストケース /// - /// GetInterlanguageメソッドテストケース(通常ページ)。 + /// メソッドテストケース(通常ページ)。 /// [Test] public void TestGetInterlanguage() { // 普通のページ MediaWikiPage page = new MediaWikiPage( - new DummySite(new Language("en")), + new MediaWiki(new Language("en")), "TestTitle", "TestText\n [[ja:テストページ]][[zh:試験]][[fr:Test_Fr]]"); Assert.AreEqual("[[ja:テストページ]]", page.GetInterlanguage("ja").ToString()); @@ -177,7 +148,7 @@ namespace Honememo.Wptscs.Websites } /// - /// GetInterlanguageメソッドテストケース(通常ページ実データ使用)。 + /// メソッドテストケース(通常ページ実データ使用)。 /// [Test, Timeout(20000)] public void TestGetInterlanguageDiscoveryChannel() @@ -191,7 +162,7 @@ namespace Honememo.Wptscs.Websites } /// - /// GetInterlanguageメソッドテストケース(テンプレートページ実データ使用)。 + /// メソッドテストケース(テンプレートページ実データ使用)。 /// [Test, Timeout(20000)] public void TestGetInterlanguagePlanetboxBegin() @@ -203,7 +174,7 @@ namespace Honememo.Wptscs.Websites } /// - /// GetInterlanguageメソッドテストケース(Template:Documentation使用ページ)。 + /// メソッドテストケース(Template:Documentation使用ページ)。 /// [Test] public void TestGetInterlanguageDocumentation() @@ -222,12 +193,23 @@ namespace Honememo.Wptscs.Websites } /// - /// IsRedirectメソッドテストケース。 + /// メソッドテストケース(Template:Documentationにnoincludeで囲まれた言語間リンクが存在)。 + /// + [Test] + public void TestGetInterlanguagePartial() + { + MediaWikiPage page = (MediaWikiPage)new MockFactory().GetMediaWiki("en").GetPage("Template:Partial"); + Assert.AreEqual("[[ja:Template:Partial]]", page.GetInterlanguage("ja").ToString()); + Assert.IsNull(page.GetInterlanguage("ru")); + } + + /// + /// メソッドテストケース。 /// [Test] public void TestIsRedirect() { - MediaWiki site = new DummySite(new Language("en")); + MediaWiki site = new MediaWiki(new Language("en")); MediaWikiPage page = new MediaWikiPage(site, "TestTitle", "#REDIRECT [[Test Redirect]]"); Assert.IsTrue(page.IsRedirect()); Assert.AreEqual("Test Redirect", page.Redirect.Title); @@ -250,12 +232,12 @@ namespace Honememo.Wptscs.Websites } /// - /// Normalizeメソッドテストケース。 + /// メソッドテストケース。 /// [Test] public void TestNormalize() { - MediaWiki site = new DummySite(new Language("en")); + MediaWiki site = new MediaWiki(new Language("en")); MediaWikiPage page = new MediaWikiPage(site, "A/b/c"); // サブページの正規化 @@ -285,33 +267,26 @@ namespace Honememo.Wptscs.Websites // 非公開メソッドについてはprotected以上、またはやりたい部分だけ実施 /// - /// ValidateIncompleteメソッドテストケース(正常系)。 + /// メソッドテストケース(正常系)。 /// [Test] public void TestValidateIncomplete() { - // 正常系は例外が発生しなければOK - PrivateAccessor acc = new PrivateAccessor( - new MediaWikiPage( - new MediaWiki(new Language("en")), - "TestTitle", - "TestText")); - acc.SetMethod("ValidateIncomplete", new Type[0]); - acc.Invoke(new object[0]); + // Textが空の場合例外発生、正常系は例外が発生しなければOK + MediaWikiPageMock page = new MediaWikiPageMock(new MediaWiki(new Language("en")), "TestTitle"); + page.Text = "TestText"; + page.ValidateIncomplete(); } /// - /// ValidateIncompleteメソッドテストケース(異常系)。 + /// メソッドテストケース(異常系)。 /// [Test] [ExpectedException(typeof(InvalidOperationException))] public void TestValidateIncompleteNg() { - // 正常系は例外が発生しなければOK - PrivateAccessor acc = new PrivateAccessor( - new MediaWikiPage(new MediaWiki(new Language("en")), "TestTitle")); - acc.SetMethod("ValidateIncomplete"); - acc.Invoke(); + // Textが空の場合例外発生 + new MediaWikiPageMock(new MediaWiki(new Language("en")), "TestTitle").ValidateIncomplete(); } #endregion @@ -319,9 +294,9 @@ namespace Honememo.Wptscs.Websites #region モッククラス /// - /// MediaWikiテスト用のモッククラスです。 + /// テスト用のモッククラスです。 /// - public class DummySite : MediaWiki + private class DummySite : MediaWiki { #region コンストラクタ @@ -339,7 +314,7 @@ namespace Honememo.Wptscs.Websites #region ダミーメソッド /// - /// ページを取得。 + /// ページを取得。に応じてテスト用の結果を返す。 /// /// ページタイトル。 /// 取得したページ。 @@ -360,6 +335,61 @@ namespace Honememo.Wptscs.Websites #endregion } + /// + /// テスト用のモッククラスです。 + /// + private class MediaWikiPageMock : MediaWikiPage + { + #region コンストラクタ + + /// + /// コンストラクタ。 + /// ページの本文, タイムスタンプにはnullを設定。 + /// + /// ページが所属するウェブサイト。 + /// ページタイトル。 + public MediaWikiPageMock(MediaWiki website, string title) + : base(website, title) + { + } + + #endregion + + #region 非公開プロパティテスト用のオーラーライドプロパティ + + /// + /// ページの本文。 + /// + public new string Text + { + get + { + return base.Text; + } + + set + { + base.Text = value; + } + } + + #endregion + + #region 非公開メソッドテスト用のオーラーライドメソッド + + /// + /// オブジェクトがメソッドの実行に不完全な状態でないか検証する。 + /// 不完全な場合、例外をスローする。 + /// + /// オブジェクトは不完全。 + public new void ValidateIncomplete() + { + base.ValidateIncomplete(); + } + + #endregion + } + #endregion } }