1 // ================================================================================================
\r
3 // Websiteのテストクラスソース。</summary>
\r
5 // <copyright file="WebsiteTest.cs.cs" company="honeplusのメモ帳">
\r
6 // Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
\r
9 // ================================================================================================
\r
11 namespace Honememo.Wptscs.Models
\r
15 using System.Reflection;
\r
18 using System.Xml.Serialization;
\r
19 using NUnit.Framework;
\r
20 using Honememo.Utilities;
\r
23 /// Websiteのテストクラスです。
\r
26 public class WebsiteTest
\r
31 /// Websiteテスト用のモッククラスです。
\r
33 public class DummySite : Website, IXmlSerializable
\r
40 /// <remarks>動作確認はhttpとfileスキームのみ。</remarks>
\r
41 public new string Location
\r
45 return base.Location;
\r
50 base.Location = value;
\r
57 public new Language Language
\r
61 return base.Language;
\r
66 base.Language = value;
\r
77 /// <param name="title">ページタイトル。</param>
\r
78 /// <returns>取得したページ。</returns>
\r
79 /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>
\r
80 public override Page GetPage(string title)
\r
87 #region テスト用XMLシリアライズ用メソッド
\r
90 /// シリアライズするXMLのスキーマ定義を返す。
\r
92 /// <returns>XML表現を記述するXmlSchema。</returns>
\r
93 public System.Xml.Schema.XmlSchema GetSchema()
\r
99 /// XMLからオブジェクトをデシリアライズする。
\r
101 /// <param name="reader">デシリアライズ元のXmlReader</param>
\r
102 public void ReadXml(XmlReader reader)
\r
104 XmlDocument xml = new XmlDocument();
\r
108 // ※ 以下、基本的に無かったらNGの部分はいちいちチェックしない。例外飛ばす
\r
109 XmlElement siteElement = xml.SelectSingleNode("DummySite") as XmlElement;
\r
110 this.Location = siteElement.SelectSingleNode("Location").InnerText;
\r
112 using (XmlReader r = XmlReader.Create(
\r
113 new StringReader(siteElement.SelectSingleNode("Language").OuterXml), reader.Settings))
\r
115 this.Language = new XmlSerializer(typeof(Language)).Deserialize(r) as Language;
\r
120 /// オブジェクトをXMLにシリアライズする。
\r
122 /// <param name="writer">シリアライズ先のXmlWriter</param>
\r
123 public void WriteXml(XmlWriter writer)
\r
125 writer.WriteElementString("Location", this.Location);
\r
126 new XmlSerializer(typeof(Language)).Serialize(writer, this.Language);
\r
134 #region プロパティテストケース
\r
137 /// Locationプロパティテストケース。
\r
140 public void TestLocation()
\r
142 DummySite site = new DummySite();
\r
143 site.Location = "test";
\r
144 Assert.AreEqual("test", site.Location);
\r
148 /// Locationプロパティテストケース(null)。
\r
151 [ExpectedException(typeof(ArgumentNullException))]
\r
152 public void TestLocationNull()
\r
154 new DummySite().Location = null;
\r
158 /// Locationプロパティテストケース(空)。
\r
161 [ExpectedException(typeof(ArgumentException))]
\r
162 public void TestLocationBlank()
\r
164 new DummySite().Location = " ";
\r
168 /// Languageプロパティテストケース。
\r
171 public void TestLanguage()
\r
173 DummySite site = new DummySite();
\r
174 site.Language = new Language("ja");
\r
175 Assert.AreEqual("ja", site.Language.Code);
\r
179 /// Languageプロパティテストケース(null)。
\r
182 [ExpectedException(typeof(ArgumentNullException))]
\r
183 public void TestLanguageNull()
\r
185 new DummySite().Language = null;
\r
193 /// XMLデシリアライズテストケース。
\r
196 public void TestReadXml()
\r
199 using (XmlReader r = XmlReader.Create(
\r
200 new StringReader("<DummySite><Location>http://ja.wikipedia.org</Location>"
\r
201 + "<Language Code=\"ja\"><Names /></Language></DummySite>")))
\r
203 site = new XmlSerializer(typeof(DummySite)).Deserialize(r) as DummySite;
\r
206 Assert.IsNotNull(site);
\r
207 Assert.AreEqual("http://ja.wikipedia.org", site.Location);
\r
208 Assert.AreEqual("ja", site.Language.Code);
\r
212 /// XMLシリアライズテストケース。
\r
215 public void TestWriteXml()
\r
217 Language lang = new Language("ja");
\r
218 DummySite site = new DummySite();
\r
219 site.Location = "http://ja.wikipedia.org";
\r
220 site.Language = lang;
\r
221 XmlWriterSettings settings = new XmlWriterSettings();
\r
222 settings.OmitXmlDeclaration = true;
\r
224 StringBuilder b = new StringBuilder();
\r
225 using (XmlWriter w = XmlWriter.Create(b, settings))
\r
227 new XmlSerializer(typeof(DummySite)).Serialize(w, site);
\r
230 Assert.AreEqual("<DummySite><Location>http://ja.wikipedia.org</Location><Language Code=\"ja\"><Names /><Bracket /></Language></DummySite>", b.ToString());
\r