OSDN Git Service

#30244 Visual Studio 2012 Express for Windows Desktop, StyleCop 4.7, WiX 3.6 に合わせたソース...
[wptscs/wpts.git] / WptscsTest / Parsers / MediaWikiRedirectParserTest.cs
1 // ================================================================================================
2 // <summary>
3 //      MediaWikiRedirectParserのテストクラスソース。</summary>
4 //
5 // <copyright file="MediaWikiRedirectParserTest.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Wptscs.Parsers
12 {
13     using System;
14     using Honememo.Parsers;
15     using Honememo.Wptscs.Models;
16     using Honememo.Wptscs.Websites;
17     using Microsoft.VisualStudio.TestTools.UnitTesting;
18
19     /// <summary>
20     /// <see cref="MediaWikiRedirectParser"/>のテストクラスです。
21     /// </summary>
22     [TestClass]
23     internal class MediaWikiRedirectParserTest
24     {
25         #region ITextParserインタフェース実装メソッド
26
27         /// <summary>
28         /// <see cref="MediaWikiRedirectParser.TryParseToEndCondition"/>メソッドテストケース。
29         /// </summary>
30         [TestMethod]
31         public void TestTryParseToEndCondition()
32         {
33             IElement element;
34             MediaWikiLink link;
35             using (MediaWikiRedirectParser parser = new MediaWikiRedirectParser(new MockFactory().GetMediaWiki("en")))
36             {
37                 // 通常のリダイレクト
38                 Assert.IsTrue(parser.TryParseToEndCondition("#redirect [[TestMethod]]", null, out element));
39                 Assert.IsInstanceOfType(element, typeof(MediaWikiLink));
40                 link = (MediaWikiLink)element;
41                 Assert.AreEqual("Test", link.Title);
42                 Assert.IsNull(link.Section);
43
44                 // セクション指定付きのリダイレクト
45                 Assert.IsTrue(parser.TryParseToEndCondition("#redirect [[Test#Section]]", null, out element));
46                 Assert.IsInstanceOfType(element, typeof(MediaWikiLink));
47                 link = (MediaWikiLink)element;
48                 Assert.AreEqual("Test", link.Title);
49                 Assert.AreEqual("Section", link.Section);
50
51                 // リダイレクトの前にスペースや空行があってもOK
52                 Assert.IsTrue(parser.TryParseToEndCondition(" \r\n \r\n#REDIRECT [[ Test2 ]] \r\n \r\n", null, out element));
53                 Assert.IsInstanceOfType(element, typeof(MediaWikiLink));
54                 link = (MediaWikiLink)element;
55                 Assert.AreEqual("Test2", link.Title);
56                 Assert.IsNull(link.Section);
57
58                 // 普通の記事
59                 Assert.IsFalse(parser.TryParseToEndCondition("'''Example''' may refer to:", null, out element));
60                 Assert.IsNull(element);
61
62                 // enで日本語の転送書式
63                 Assert.IsFalse(parser.TryParseToEndCondition("#転送 [[TestMethod]]", null, out element));
64                 Assert.IsNull(element);
65
66                 // 空文字列・null
67                 Assert.IsFalse(parser.TryParseToEndCondition(string.Empty, null, out element));
68                 Assert.IsNull(element);
69                 Assert.IsFalse(parser.TryParseToEndCondition(null, null, out element));
70                 Assert.IsNull(element);
71             }
72
73             using (MediaWikiRedirectParser parser = new MediaWikiRedirectParser(new MockFactory().GetMediaWiki("ja")))
74             {
75                 // jaで日本語の転送書式
76                 Assert.IsTrue(parser.TryParseToEndCondition("#転送 [[TestMethod]]", null, out element));
77                 Assert.IsInstanceOfType(element, typeof(MediaWikiLink));
78                 link = (MediaWikiLink)element;
79                 Assert.AreEqual("Test", link.Title);
80             }
81         }
82
83         /// <summary>
84         /// <see cref="MediaWikiRedirectParser.TryParseToEndCondition"/>
85         /// メソッドテストケース(Dispose)。
86         /// </summary>
87         [TestMethod]
88         [ExpectedException(typeof(ObjectDisposedException))]
89         public void TestTryParseToEndConditionDispose()
90         {
91             MediaWikiRedirectParser parser = new MediaWikiRedirectParser(new MockFactory().GetMediaWiki("en"));
92             parser.Dispose();
93             IElement result;
94             parser.TryParseToEndCondition(string.Empty, null, out result);
95         }
96
97         #endregion
98     }
99 }