1 // ================================================================================================
3 // Languageのテストクラスソース。</summary>
5 // <copyright file="LanguageTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Models
15 using System.Reflection;
18 using System.Xml.Serialization;
19 using Honememo.Utilities;
20 using Microsoft.VisualStudio.TestTools.UnitTesting;
23 /// <see cref="Language"/>のテストクラスです。
26 public class LanguageTest
34 public void TestCode()
36 Language lang = new Language("en");
37 Assert.AreEqual("en", lang.Code);
41 /// Codeプロパティテストケース(コードがnull)。
44 [ExpectedException(typeof(ArgumentNullException))]
45 public void TestCodeNull()
47 Language lang = new Language(null);
51 /// Codeプロパティテストケース(コードが空)。
54 [ExpectedException(typeof(ArgumentException))]
55 public void TestCodeBlank()
57 Language lang = new Language(" ");
64 public void TestNames()
66 Language lang = new Language("en");
69 Assert.IsNotNull(lang.Names);
70 Assert.AreEqual(0, lang.Names.Count);
72 Language.LanguageName name = new Language.LanguageName { Name = "テスト", ShortName = "テ" };
73 lang.Names.Add("ja", name);
74 Assert.IsTrue(lang.Names.ContainsKey("ja"));
75 Assert.AreEqual(name, lang.Names["ja"]);
76 Assert.IsFalse(lang.Names.ContainsKey("en"));
80 /// Namesプロパティテストケース(オブジェクトがnull)。
83 [ExpectedException(typeof(ArgumentNullException))]
84 public void TestNamesNull()
86 new Language("en").Names = null;
90 /// Bracketプロパティテストケース。
93 public void TestBracket()
95 Language lang = new Language("en");
97 // 設定ファイルからデフォルト値が設定されていること
98 Assert.AreEqual(" ($1) ", lang.Bracket);
101 lang.Bracket = "test";
102 Assert.AreEqual("test", lang.Bracket);
106 Assert.AreEqual(" ($1) ", lang.Bracket);
107 lang.Bracket = string.Empty;
108 Assert.AreEqual(" ($1) ", lang.Bracket);
116 /// FormatLinkInterwikiメソッドテストケース。
119 public void TestFormatLinkInterwiki()
121 Language lang = new Language("en");
124 Assert.AreEqual(" (値1) ", lang.FormatBracket("値1"));
125 lang.Bracket = " {$1} ";
126 Assert.AreEqual(" {値2} ", lang.FormatBracket("値2"));
127 lang.Bracket = "xxx";
128 Assert.AreEqual("xxx", lang.FormatBracket("値3"));
132 Assert.AreEqual(" () ", lang.FormatBracket(null));
137 #region XMLシリアライズ用メソッドテストケース
140 /// XMLデシリアライズテストケース。
143 public void TestReadXml()
146 using (XmlReader r = XmlReader.Create(
148 "<Language Code=\"ja\"><Names>"
149 + "<LanguageName Code=\"en\"><Name>Japanese language</Name><ShortName>Japanese</ShortName></LanguageName>"
150 + "<LanguageName Code=\"zh\"><Name>日语</Name><ShortName /></LanguageName>"
151 + "</Names><Bracket>({0})</Bracket></Language>")))
153 lang = new XmlSerializer(typeof(Language)).Deserialize(r) as Language;
156 Assert.IsNotNull(lang);
157 Assert.AreEqual("ja", lang.Code);
158 Assert.AreEqual("Japanese language", lang.Names["en"].Name);
159 Assert.AreEqual("Japanese", lang.Names["en"].ShortName);
160 Assert.AreEqual("日语", lang.Names["zh"].Name);
161 Assert.AreEqual(string.Empty, lang.Names["zh"].ShortName);
162 Assert.IsFalse(lang.Names.ContainsKey("ja"));
163 Assert.AreEqual("({0})", lang.Bracket);
170 public void TestWriteXml()
172 Language lang = new Language("ja");
173 XmlWriterSettings settings = new XmlWriterSettings();
174 settings.OmitXmlDeclaration = true;
176 StringBuilder b = new StringBuilder();
177 using (XmlWriter w = XmlWriter.Create(b, settings))
179 new XmlSerializer(typeof(Language)).Serialize(w, lang);
182 Assert.AreEqual("<Language Code=\"ja\"><Names /><Bracket /></Language>", b.ToString());
184 lang.Names.Add("en", new Language.LanguageName { Name = "Japanese language", ShortName = "Japanese" });
185 lang.Names.Add("zh", new Language.LanguageName { Name = "日语" });
186 lang.Bracket = "({0})";
188 StringBuilder b2 = new StringBuilder();
189 using (XmlWriter w = XmlWriter.Create(b2, settings))
191 new XmlSerializer(typeof(Language)).Serialize(w, lang);
195 "<Language Code=\"ja\"><Names>"
196 + "<LanguageName Code=\"en\"><Name>Japanese language</Name><ShortName>Japanese</ShortName></LanguageName>"
197 + "<LanguageName Code=\"zh\"><Name>日语</Name><ShortName /></LanguageName>"
198 + "</Names><Bracket>({0})</Bracket></Language>",