1 // ================================================================================================
3 // MediaWikiLoggerのテストクラスソース。</summary>
5 // <copyright file="MediaWikiLoggerTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Logics
14 using System.Collections.Generic;
15 using Honememo.Parsers;
16 using Honememo.Wptscs.Parsers;
17 using NUnit.Framework;
20 /// MediaWikiLoggerのテストクラスです。
23 public class MediaWikiLoggerTest
28 /// テスト実施中カルチャを変更し後で戻すため、そのバックアップ。
30 private System.Globalization.CultureInfo backupCulture;
40 public void SetUpBeforeClass()
42 // ロガーの処理結果はカルチャーにより変化するため、ja-JPを明示的に設定する
43 this.backupCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
44 System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("ja-JP");
51 public void TearDownAfterClass()
54 System.Threading.Thread.CurrentThread.CurrentUICulture = this.backupCulture;
59 #region ログ登録メソッド(翻訳支援処理)テストケース
62 /// AddSourceメソッドテストケース。
65 public void TestAddSource()
67 LoggerMock logger = new LoggerMock();
68 Logger diff = new Logger();
70 // 通常の要素の場合、普通のロガーと同様に処理される
71 Assert.IsEmpty(logger.ToString());
72 logger.AddSource(new TextElement("1st string"));
73 diff.AddSource(new TextElement("1st string"));
74 Assert.AreEqual(diff.ToString(), logger.ToString());
75 Assert.AreEqual(1, logger.Count);
76 logger.AddSource(new TextElement("2nd string"));
77 diff.AddSource(new TextElement("2nd string"));
78 Assert.AreEqual(diff.ToString(), logger.ToString());
79 Assert.AreEqual(3, logger.Count);
81 // MediaWiki関連の一部要素は独自に整形して出力
83 logger.AddSource(new MediaWikiLink("記事名") { Section = "セクション", Interwiki = "ja" });
84 Assert.AreEqual("[[記事名]] → ", logger.ToString());
86 logger.AddSource(new MediaWikiTemplate("記事名") { Section = "セクション", Interwiki = "ja" });
87 Assert.AreEqual("{{記事名}} → ", logger.ToString());
89 // 見出しの場合、右矢印が出ない&直前に空行が入る
91 logger.AddSource(new MediaWikiHeading { ParsedString = "==見出し==" });
92 Assert.AreEqual(Environment.NewLine + "==見出し==", logger.ToString());
94 // いずれのケースでも、親クラスにある改行されていなければ改行は行われる
97 logger.AddSource(new MediaWikiLink("記事名") { Section = "セクション", Interwiki = "ja" });
98 Assert.AreEqual("test" + Environment.NewLine + "[[記事名]] → ", logger.ToString());
99 logger.AddSource(new MediaWikiHeading { ParsedString = "==見出し==" });
100 Assert.AreEqual("test" + Environment.NewLine + "[[記事名]] → " + Environment.NewLine + Environment.NewLine + "==見出し==", logger.ToString());
104 /// AddAliasメソッドテストケース。
107 public void TestAddAlias()
109 LoggerMock logger = new LoggerMock();
112 Assert.IsEmpty(logger.ToString());
113 logger.AddAlias(new TextElement("1st string"));
114 Assert.AreEqual("リダイレクト 1st string → ", logger.ToString());
115 Assert.AreEqual(1, logger.Count);
116 logger.AddAlias(new TextElement("2nd string"));
117 Assert.AreEqual("リダイレクト 1st string → リダイレクト 2nd string → ", logger.ToString());
118 Assert.AreEqual(2, logger.Count);
120 // MediaWiki関連の一部要素は独自に整形して出力
122 logger.AddAlias(new MediaWikiLink("記事名") { Section = "セクション", Interwiki = "ja" });
123 Assert.AreEqual("リダイレクト [[記事名]] → ", logger.ToString());
125 logger.AddAlias(new MediaWikiTemplate("記事名") { Section = "セクション", Interwiki = "ja" });
126 Assert.AreEqual("リダイレクト {{記事名}} → ", logger.ToString());
128 // 直前のログが見出しの場合矢印を出力、その後リダイレクトを出力
129 // ※ 見出しでリダイレクトというのはありえないが、一応AddDestinationとあわせて処理は入れている
131 logger.AddSource(new MediaWikiHeading { ParsedString = "==見出し1==" });
132 logger.AddAlias(new MediaWikiHeading { ParsedString = "==見出し2==" });
133 Assert.AreEqual(Environment.NewLine + "==見出し1== → リダイレクト ==見出し2== → ", logger.ToString());
137 /// AddDestinationメソッドテストケース。
140 public void TestAddDestination()
142 LoggerMock logger = new LoggerMock();
143 Logger diff = new Logger();
145 // 通常の要素の場合、普通のロガーと同様に処理される
146 Assert.IsEmpty(logger.ToString());
147 logger.AddDestination(new TextElement("1st string"));
148 diff.AddDestination(new TextElement("1st string"));
149 Assert.AreEqual(diff.ToString(), logger.ToString());
150 Assert.AreEqual(1, logger.Count);
151 logger.AddDestination(new TextElement("2nd string"), false);
152 diff.AddDestination(new TextElement("2nd string"), false);
153 Assert.AreEqual(diff.ToString(), logger.ToString());
154 Assert.AreEqual(2, logger.Count);
155 logger.AddDestination(new TextElement("3rd string"), true);
156 diff.AddDestination(new TextElement("3rd string"), true);
157 Assert.AreEqual(diff.ToString(), logger.ToString());
158 Assert.AreEqual(3, logger.Count);
160 // MediaWiki関連の一部要素は独自に整形して出力
162 logger.AddDestination(new MediaWikiLink("記事名") { Section = "セクション", Interwiki = "ja" });
163 Assert.AreEqual("[[記事名]]" + Environment.NewLine, logger.ToString());
165 logger.AddDestination(new MediaWikiTemplate("記事名") { Section = "セクション", Interwiki = "ja" }, true);
166 Assert.AreEqual("{{記事名}} ※キャッシュ" + Environment.NewLine, logger.ToString());
168 // 直前のログが見出しの場合矢印を出力、その後独自に整形した変換先を出力
170 logger.AddSource(new MediaWikiHeading { ParsedString = "==見出し1==" });
171 logger.AddDestination(new MediaWikiHeading { ParsedString = "==見出し2==" });
172 Assert.AreEqual(Environment.NewLine + "==見出し1== → ==見出し2==" + Environment.NewLine, logger.ToString());
180 /// Loggerテスト用のモッククラスです。
182 public class LoggerMock : MediaWikiLogger
191 this.LogUpdate += new EventHandler((object sender, EventArgs e) => { ++Count; });
199 /// LogUpdateイベントが呼ばれた回数のカウンタ。
209 #region 非公開プロパティテスト用のオーラーライドプロパティ
214 public new string Log