1 // ================================================================================================
3 // MediaWikiLinkのテストクラスソース。</summary>
5 // <copyright file="MediaWikiLinkTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Parsers
14 using System.Collections.Generic;
15 using Honememo.Parsers;
16 using NUnit.Framework;
19 /// MediaWikiLinkのテストクラスです。
22 public class MediaWikiLinkTest
30 public void TestConstructor()
32 MediaWikiLink element;
34 element = new MediaWikiLink();
35 Assert.IsNull(element.Title);
36 Assert.IsNotNull(element.PipeTexts);
37 Assert.AreEqual(0, element.PipeTexts.Count);
39 element = new MediaWikiLink("記事名");
40 Assert.AreEqual("記事名", element.Title);
41 Assert.IsNotNull(element.PipeTexts);
42 Assert.AreEqual(0, element.PipeTexts.Count);
53 public void TestTitle()
55 MediaWikiLink element = new MediaWikiLink();
57 Assert.IsNull(element.Title);
58 element.Title = "test";
59 Assert.AreEqual("test", element.Title);
63 /// Sectionプロパティテストケース。
66 public void TestSection()
68 MediaWikiLink element = new MediaWikiLink();
70 Assert.IsNull(element.Section);
71 element.Section = "test";
72 Assert.AreEqual("test", element.Section);
76 /// PipeTextsプロパティテストケース。
79 public void TestPipeTexts()
81 MediaWikiLink element = new MediaWikiLink();
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);
91 /// Interwikiプロパティテストケース。
94 public void TestInterwiki()
96 MediaWikiLink element = new MediaWikiLink();
98 Assert.IsNull(element.Interwiki);
99 element.Interwiki = "test";
100 Assert.AreEqual("test", element.Interwiki);
104 /// IsColonプロパティテストケース。
107 public void TestIsColon()
109 MediaWikiLink element = new MediaWikiLink();
111 Assert.IsFalse(element.IsColon);
112 element.IsColon = true;
113 Assert.IsTrue(element.IsColon);
114 element.IsColon = false;
115 Assert.IsFalse(element.IsColon);
123 /// IsSubpageメソッドテストケース。
126 public void TestIsSubpage()
128 MediaWikiLink element = new MediaWikiLink();
131 element.Title = "testtitle";
132 Assert.IsFalse(element.IsSubpage());
134 // 先頭が / で始まるサブページへのリンク
135 element.Title = "/testtitle";
136 Assert.IsTrue(element.IsSubpage());
137 element.Title = "/testtitle/";
138 Assert.IsTrue(element.IsSubpage());
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());
152 /// GetLinkStringメソッドテストケース。
155 public void TestGetLinkString()
157 MediaWikiLink element = new MediaWikiLink();
160 element.Title = "testtitle";
161 Assert.AreEqual("testtitle", element.GetLinkString());
164 element.Section = String.Empty;
165 Assert.AreEqual("testtitle#", element.GetLinkString());
166 element.Section = "testsection";
167 Assert.AreEqual("testtitle#testsection", element.GetLinkString());
169 // タイトルとセクションとパイプ後の文字列
170 element.PipeTexts.Add(new TextElement("testpipe1"));
171 element.PipeTexts.Add(new TextElement("testpipe2"));
172 Assert.AreEqual("testtitle#testsection", element.GetLinkString());
174 // タイトルとセクションとパイプ後の文字列とコード
175 element.Interwiki = "en";
176 Assert.AreEqual("en:testtitle#testsection", element.GetLinkString());
178 // タイトルとセクションとパイプ後の文字列とコードとコロン
179 element.IsColon = true;
180 Assert.AreEqual(":en:testtitle#testsection", element.GetLinkString());
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());
196 #region インタフェース実装メソッドテストケース
199 /// ToStringメソッドテストケース。
202 public void TestToString()
204 MediaWikiLink element = new MediaWikiLink();
207 element.Title = "testtitle";
208 Assert.AreEqual("[[testtitle]]", element.ToString());
211 element.Section = String.Empty;
212 Assert.AreEqual("[[testtitle#]]", element.ToString());
213 element.Section = "testsection";
214 Assert.AreEqual("[[testtitle#testsection]]", element.ToString());
216 // タイトルとセクションとパイプ後の文字列
217 element.PipeTexts.Add(new TextElement("testpipe1"));
218 element.PipeTexts.Add(new TextElement("testpipe2"));
219 Assert.AreEqual("[[testtitle#testsection|testpipe1|testpipe2]]", element.ToString());
221 // タイトルとセクションとパイプ後の文字列とコード
222 element.Interwiki = "en";
223 Assert.AreEqual("[[en:testtitle#testsection|testpipe1|testpipe2]]", element.ToString());
225 // タイトルとセクションとパイプ後の文字列とコードとコロン
226 element.IsColon = true;
227 Assert.AreEqual("[[:en:testtitle#testsection|testpipe1|testpipe2]]", element.ToString());
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());