1 // ================================================================================================
3 // Languageのテストクラスソース。</summary>
5 // <copyright file="LanguageTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Models
15 using System.Reflection;
18 using System.Xml.Serialization;
19 using NUnit.Framework;
20 using Honememo.Utilities;
23 /// 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.NotNull(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(" ({0}) ", lang.Bracket);
101 lang.Bracket = "test";
102 Assert.AreEqual("test", lang.Bracket);
106 Assert.AreEqual(" ({0}) ", lang.Bracket);
108 Assert.AreEqual(" ({0}) ", lang.Bracket);
113 #region XMLシリアライズ用メソッドテストケース
116 /// XMLデシリアライズテストケース。
119 public void TestReadXml()
122 using (XmlReader r = XmlReader.Create(
123 new StringReader("<Language Code=\"ja\"><Names>"
124 + "<LanguageName Code=\"en\"><Name>Japanese language</Name><ShortName>Japanese</ShortName></LanguageName>"
125 + "<LanguageName Code=\"zh\"><Name>日语</Name><ShortName /></LanguageName>"
126 + "</Names><Bracket>({0})</Bracket></Language>")))
128 lang = new XmlSerializer(typeof(Language)).Deserialize(r) as Language;
130 Assert.IsNotNull(lang);
131 Assert.AreEqual("ja", lang.Code);
132 Assert.AreEqual("Japanese language", lang.Names["en"].Name);
133 Assert.AreEqual("Japanese", lang.Names["en"].ShortName);
134 Assert.AreEqual("日语", lang.Names["zh"].Name);
135 Assert.IsEmpty(lang.Names["zh"].ShortName);
136 Assert.IsFalse(lang.Names.ContainsKey("ja"));
137 Assert.AreEqual("({0})", lang.Bracket);
144 public void TestWriteXml()
146 Language lang = new Language("ja");
147 XmlWriterSettings settings = new XmlWriterSettings();
148 settings.OmitXmlDeclaration = true;
150 StringBuilder b = new StringBuilder();
151 using (XmlWriter w = XmlWriter.Create(b, settings))
153 new XmlSerializer(typeof(Language)).Serialize(w, lang);
156 Assert.AreEqual("<Language Code=\"ja\"><Names /><Bracket /></Language>", b.ToString());
158 lang.Names.Add("en", new Language.LanguageName { Name = "Japanese language", ShortName = "Japanese" });
159 lang.Names.Add("zh", new Language.LanguageName { Name = "日语" });
160 lang.Bracket = "({0})";
162 StringBuilder b2 = new StringBuilder();
163 using (XmlWriter w = XmlWriter.Create(b2, settings))
165 new XmlSerializer(typeof(Language)).Serialize(w, lang);
168 Assert.AreEqual("<Language Code=\"ja\"><Names>"
169 + "<LanguageName Code=\"en\"><Name>Japanese language</Name><ShortName>Japanese</ShortName></LanguageName>"
170 + "<LanguageName Code=\"zh\"><Name>日语</Name><ShortName /></LanguageName>"
171 + "</Names><Bracket>({0})</Bracket></Language>", b2.ToString());