OSDN Git Service

c058098b6ae87bc853e09e81643ad54c3cf17bf9
[wptscs/wpts.git] / WptscsTest / Parsers / MediaWikiLinkTest.cs
1 // ================================================================================================
2 // <summary>
3 //      MediaWikiLinkのテストクラスソース。</summary>
4 //
5 // <copyright file="MediaWikiLinkTest.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 System.Collections.Generic;
15     using Honememo.Parsers;
16     using NUnit.Framework;
17
18     /// <summary>
19     /// MediaWikiLinkのテストクラスです。
20     /// </summary>
21     [TestFixture]
22     public class MediaWikiLinkTest
23     {
24         #region コンストラクタテストケース
25
26         /// <summary>
27         /// コンストラクタテストケース。
28         /// </summary>
29         [Test]
30         public void TestConstructor()
31         {
32             MediaWikiLink element;
33
34             element = new MediaWikiLink();
35             Assert.IsNull(element.Title);
36             Assert.IsNotNull(element.PipeTexts);
37             Assert.AreEqual(0, element.PipeTexts.Count);
38
39             element = new MediaWikiLink("記事名");
40             Assert.AreEqual("記事名", element.Title);
41             Assert.IsNotNull(element.PipeTexts);
42             Assert.AreEqual(0, element.PipeTexts.Count);
43         }
44
45         #endregion
46
47         #region プロパティテストケース
48
49         /// <summary>
50         /// Titleプロパティテストケース。
51         /// </summary>
52         [Test]
53         public void TestTitle()
54         {
55             MediaWikiLink element = new MediaWikiLink();
56
57             Assert.IsNull(element.Title);
58             element.Title = "test";
59             Assert.AreEqual("test", element.Title);
60         }
61
62         /// <summary>
63         /// Sectionプロパティテストケース。
64         /// </summary>
65         [Test]
66         public void TestSection()
67         {
68             MediaWikiLink element = new MediaWikiLink();
69
70             Assert.IsNull(element.Section);
71             element.Section = "test";
72             Assert.AreEqual("test", element.Section);
73         }
74
75         /// <summary>
76         /// PipeTextsプロパティテストケース。
77         /// </summary>
78         [Test]
79         public void TestPipeTexts()
80         {
81             MediaWikiLink element = new MediaWikiLink();
82
83             Assert.AreEqual(0, element.PipeTexts.Count);
84             IList<IElement> list = new List<IElement>();
85             list.Add(new TextElement("test"));
86             element.PipeTexts = list;
87             Assert.AreEqual(1, element.PipeTexts.Count);
88         }
89
90         /// <summary>
91         /// Interwikiプロパティテストケース。
92         /// </summary>
93         [Test]
94         public void TestInterwiki()
95         {
96             MediaWikiLink element = new MediaWikiLink();
97
98             Assert.IsNull(element.Interwiki);
99             element.Interwiki = "test";
100             Assert.AreEqual("test", element.Interwiki);
101         }
102
103         /// <summary>
104         /// IsColonプロパティテストケース。
105         /// </summary>
106         [Test]
107         public void TestIsColon()
108         {
109             MediaWikiLink element = new MediaWikiLink();
110
111             Assert.IsFalse(element.IsColon);
112             element.IsColon = true;
113             Assert.IsTrue(element.IsColon);
114             element.IsColon = false;
115             Assert.IsFalse(element.IsColon);
116         }
117
118         #endregion
119
120         #region 公開メソッドテストケース
121
122         /// <summary>
123         /// IsSubpageメソッドテストケース。
124         /// </summary>
125         [Test]
126         public void TestIsSubpage()
127         {
128             MediaWikiLink element = new MediaWikiLink();
129
130             // 通常の記事へのリンク
131             element.Title = "testtitle";
132             Assert.IsFalse(element.IsSubpage());
133
134             // 先頭が / で始まるサブページへのリンク
135             element.Title = "/testtitle";
136             Assert.IsTrue(element.IsSubpage());
137             element.Title = "/testtitle/";
138             Assert.IsTrue(element.IsSubpage());
139
140             // 先頭が ../ で始まるサブページへのリンク
141             element.Title = "../";
142             Assert.IsTrue(element.IsSubpage());
143             element.Title = "../../";
144             Assert.IsTrue(element.IsSubpage());
145             element.Title = "../testtitle";
146             Assert.IsTrue(element.IsSubpage());
147             element.Title = "../../testtitle";
148             Assert.IsTrue(element.IsSubpage());
149         }
150
151         /// <summary>
152         /// GetLinkStringメソッドテストケース。
153         /// </summary>
154         [Test]
155         public void TestGetLinkString()
156         {
157             MediaWikiLink element = new MediaWikiLink();
158
159             // タイトルのみ
160             element.Title = "testtitle";
161             Assert.AreEqual("testtitle", element.GetLinkString());
162
163             // タイトルとセクション
164             element.Section = String.Empty;
165             Assert.AreEqual("testtitle#", element.GetLinkString());
166             element.Section = "testsection";
167             Assert.AreEqual("testtitle#testsection", element.GetLinkString());
168
169             // タイトルとセクションとパイプ後の文字列
170             element.PipeTexts.Add(new TextElement("testpipe1"));
171             element.PipeTexts.Add(new TextElement("testpipe2"));
172             Assert.AreEqual("testtitle#testsection", element.GetLinkString());
173
174             // タイトルとセクションとパイプ後の文字列とコード
175             element.Interwiki = "en";
176             Assert.AreEqual("en:testtitle#testsection", element.GetLinkString());
177
178             // タイトルとセクションとパイプ後の文字列とコードとコロン
179             element.IsColon = true;
180             Assert.AreEqual(":en:testtitle#testsection", element.GetLinkString());
181
182             // 実例)ファイルタグ
183             element.Title = "ファイル:Kepler22b-artwork.jpg";
184             element.Section = null;
185             element.PipeTexts.Clear();
186             element.PipeTexts.Add(new TextElement("thumb"));
187             element.PipeTexts.Add(new TextElement("right"));
188             element.PipeTexts.Add(new TextElement("[[ケプラー22b]](想像図)"));
189             element.Interwiki = null;
190             element.IsColon = false;
191             Assert.AreEqual("ファイル:Kepler22b-artwork.jpg", element.GetLinkString());
192         }
193
194         #endregion
195
196         #region インタフェース実装メソッドテストケース
197
198         /// <summary>
199         /// ToStringメソッドテストケース。
200         /// </summary>
201         [Test]
202         public void TestToString()
203         {
204             MediaWikiLink element = new MediaWikiLink();
205
206             // タイトルのみ
207             element.Title = "testtitle";
208             Assert.AreEqual("[[testtitle]]", element.ToString());
209
210             // タイトルとセクション
211             element.Section = String.Empty;
212             Assert.AreEqual("[[testtitle#]]", element.ToString());
213             element.Section = "testsection";
214             Assert.AreEqual("[[testtitle#testsection]]", element.ToString());
215
216             // タイトルとセクションとパイプ後の文字列
217             element.PipeTexts.Add(new TextElement("testpipe1"));
218             element.PipeTexts.Add(new TextElement("testpipe2"));
219             Assert.AreEqual("[[testtitle#testsection|testpipe1|testpipe2]]", element.ToString());
220
221             // タイトルとセクションとパイプ後の文字列とコード
222             element.Interwiki = "en";
223             Assert.AreEqual("[[en:testtitle#testsection|testpipe1|testpipe2]]", element.ToString());
224
225             // タイトルとセクションとパイプ後の文字列とコードとコロン
226             element.IsColon = true;
227             Assert.AreEqual("[[:en:testtitle#testsection|testpipe1|testpipe2]]", element.ToString());
228
229             // 実例)ファイルタグ
230             element.Title = "ファイル:Kepler22b-artwork.jpg";
231             element.Section = null;
232             element.PipeTexts.Clear();
233             element.PipeTexts.Add(new TextElement("thumb"));
234             element.PipeTexts.Add(new TextElement("right"));
235             element.PipeTexts.Add(new TextElement("[[ケプラー22b]](想像図)"));
236             element.Interwiki = null;
237             element.IsColon = false;
238             Assert.AreEqual("[[ファイル:Kepler22b-artwork.jpg|thumb|right|[[ケプラー22b]](想像図)]]", element.ToString());
239         }
240
241         #endregion
242     }
243 }