-// ================================================================================================\r
-// <summary>\r
-// Websiteのテストクラスソース。</summary>\r
-//\r
-// <copyright file="WebsiteTest.cs.cs" company="honeplusのメモ帳">\r
-// Copyright (C) 2010 Honeplus. All rights reserved.</copyright>\r
-// <author>\r
-// Honeplus</author>\r
-// ================================================================================================\r
-\r
-namespace Honememo.Wptscs.Models\r
-{\r
- using System;\r
- using System.IO;\r
- using System.Reflection;\r
- using System.Text;\r
- using System.Xml;\r
- using System.Xml.Serialization;\r
- using NUnit.Framework;\r
- using Honememo.Utilities;\r
-\r
- /// <summary>\r
- /// Websiteのテストクラスです。\r
- /// </summary>\r
- [TestFixture]\r
- public class WebsiteTest\r
- {\r
- #region モッククラス\r
-\r
- /// <summary>\r
- /// Websiteテスト用のモッククラスです。\r
- /// </summary>\r
- public class DummySite : Website, IXmlSerializable\r
- {\r
- #region テスト用プロパティ\r
-\r
- /// <summary>\r
- /// ウェブサイトの場所。\r
- /// </summary>\r
- /// <remarks>動作確認はhttpとfileスキームのみ。</remarks>\r
- public new string Location\r
- {\r
- get\r
- {\r
- return base.Location;\r
- }\r
-\r
- set\r
- {\r
- base.Location = value;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// ウェブサイトの言語。\r
- /// </summary>\r
- public new Language Language\r
- {\r
- get\r
- {\r
- return base.Language;\r
- }\r
-\r
- set\r
- {\r
- base.Language = value;\r
- }\r
- }\r
-\r
- #endregion\r
-\r
- #region ダミーメソッド\r
-\r
- /// <summary>\r
- /// ページを取得。\r
- /// </summary>\r
- /// <param name="title">ページタイトル。</param>\r
- /// <returns>取得したページ。</returns>\r
- /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>\r
- public override Page GetPage(string title)\r
- {\r
- return null;\r
- }\r
-\r
- #endregion\r
-\r
- #region テスト用XMLシリアライズ用メソッド\r
-\r
- /// <summary>\r
- /// シリアライズするXMLのスキーマ定義を返す。\r
- /// </summary>\r
- /// <returns>XML表現を記述するXmlSchema。</returns>\r
- public System.Xml.Schema.XmlSchema GetSchema()\r
- {\r
- return null;\r
- }\r
-\r
- /// <summary>\r
- /// XMLからオブジェクトをデシリアライズする。\r
- /// </summary>\r
- /// <param name="reader">デシリアライズ元のXmlReader</param>\r
- public void ReadXml(XmlReader reader)\r
- {\r
- XmlDocument xml = new XmlDocument();\r
- xml.Load(reader);\r
-\r
- // Webサイト\r
- // ※ 以下、基本的に無かったらNGの部分はいちいちチェックしない。例外飛ばす\r
- XmlElement siteElement = xml.SelectSingleNode("DummySite") as XmlElement;\r
- this.Location = siteElement.SelectSingleNode("Location").InnerText;\r
-\r
- using (XmlReader r = XmlReader.Create(\r
- new StringReader(siteElement.SelectSingleNode("Language").OuterXml), reader.Settings))\r
- {\r
- this.Language = new XmlSerializer(typeof(Language)).Deserialize(r) as Language;\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// オブジェクトをXMLにシリアライズする。\r
- /// </summary>\r
- /// <param name="writer">シリアライズ先のXmlWriter</param>\r
- public void WriteXml(XmlWriter writer)\r
- {\r
- writer.WriteElementString("Location", this.Location);\r
- new XmlSerializer(typeof(Language)).Serialize(writer, this.Language);\r
- }\r
-\r
- #endregion\r
- }\r
-\r
- #endregion\r
-\r
- #region プロパティテストケース\r
-\r
- /// <summary>\r
- /// Locationプロパティテストケース。\r
- /// </summary>\r
- [Test]\r
- public void TestLocation()\r
- {\r
- DummySite site = new DummySite();\r
- site.Location = "test";\r
- Assert.AreEqual("test", site.Location);\r
- }\r
-\r
- /// <summary>\r
- /// Locationプロパティテストケース(null)。\r
- /// </summary>\r
- [Test]\r
- [ExpectedException(typeof(ArgumentNullException))]\r
- public void TestLocationNull()\r
- {\r
- new DummySite().Location = null;\r
- }\r
-\r
- /// <summary>\r
- /// Locationプロパティテストケース(空)。\r
- /// </summary>\r
- [Test]\r
- [ExpectedException(typeof(ArgumentException))]\r
- public void TestLocationBlank()\r
- {\r
- new DummySite().Location = " ";\r
- }\r
-\r
- /// <summary>\r
- /// Languageプロパティテストケース。\r
- /// </summary>\r
- [Test]\r
- public void TestLanguage()\r
- {\r
- DummySite site = new DummySite();\r
- site.Language = new Language("ja");\r
- Assert.AreEqual("ja", site.Language.Code);\r
- }\r
-\r
- /// <summary>\r
- /// Languageプロパティテストケース(null)。\r
- /// </summary>\r
- [Test]\r
- [ExpectedException(typeof(ArgumentNullException))]\r
- public void TestLanguageNull()\r
- {\r
- new DummySite().Language = null;\r
- }\r
-\r
- #endregion\r
-\r
- #region メソッドテストケース\r
-\r
- /// <summary>\r
- /// XMLデシリアライズテストケース。\r
- /// </summary>\r
- [Test]\r
- public void TestReadXml()\r
- {\r
- DummySite site;\r
- using (XmlReader r = XmlReader.Create(\r
- new StringReader("<DummySite><Location>http://ja.wikipedia.org</Location>"\r
- + "<Language Code=\"ja\"><Names /></Language></DummySite>")))\r
- {\r
- site = new XmlSerializer(typeof(DummySite)).Deserialize(r) as DummySite;\r
- }\r
-\r
- Assert.IsNotNull(site);\r
- Assert.AreEqual("http://ja.wikipedia.org", site.Location);\r
- Assert.AreEqual("ja", site.Language.Code);\r
- }\r
-\r
- /// <summary>\r
- /// XMLシリアライズテストケース。\r
- /// </summary>\r
- [Test]\r
- public void TestWriteXml()\r
- {\r
- Language lang = new Language("ja");\r
- DummySite site = new DummySite();\r
- site.Location = "http://ja.wikipedia.org";\r
- site.Language = lang;\r
- XmlWriterSettings settings = new XmlWriterSettings();\r
- settings.OmitXmlDeclaration = true;\r
-\r
- StringBuilder b = new StringBuilder();\r
- using (XmlWriter w = XmlWriter.Create(b, settings))\r
- {\r
- new XmlSerializer(typeof(DummySite)).Serialize(w, site);\r
- }\r
-\r
- Assert.AreEqual("<DummySite><Location>http://ja.wikipedia.org</Location><Language Code=\"ja\"><Names /><Bracket /></Language></DummySite>", b.ToString());\r
- }\r
-\r
- #endregion\r
- }\r
-}\r
+// ================================================================================================
+// <summary>
+// Websiteのテストクラスソース。</summary>
+//
+// <copyright file="WebsiteTest.cs.cs" company="honeplusのメモ帳">
+// Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
+// <author>
+// Honeplus</author>
+// ================================================================================================
+
+namespace Honememo.Wptscs.Models
+{
+ using System;
+ using System.IO;
+ using System.Reflection;
+ using System.Text;
+ using System.Xml;
+ using System.Xml.Serialization;
+ using NUnit.Framework;
+ using Honememo.Utilities;
+
+ /// <summary>
+ /// Websiteのテストクラスです。
+ /// </summary>
+ [TestFixture]
+ public class WebsiteTest
+ {
+ #region モッククラス
+
+ /// <summary>
+ /// Websiteテスト用のモッククラスです。
+ /// </summary>
+ public class DummySite : Website, IXmlSerializable
+ {
+ #region テスト用プロパティ
+
+ /// <summary>
+ /// ウェブサイトの場所。
+ /// </summary>
+ /// <remarks>動作確認はhttpとfileスキームのみ。</remarks>
+ public new string Location
+ {
+ get
+ {
+ return base.Location;
+ }
+
+ set
+ {
+ base.Location = value;
+ }
+ }
+
+ /// <summary>
+ /// ウェブサイトの言語。
+ /// </summary>
+ public new Language Language
+ {
+ get
+ {
+ return base.Language;
+ }
+
+ set
+ {
+ base.Language = value;
+ }
+ }
+
+ #endregion
+
+ #region ダミーメソッド
+
+ /// <summary>
+ /// ページを取得。
+ /// </summary>
+ /// <param name="title">ページタイトル。</param>
+ /// <returns>取得したページ。</returns>
+ /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>
+ public override Page GetPage(string title)
+ {
+ return null;
+ }
+
+ #endregion
+
+ #region テスト用XMLシリアライズ用メソッド
+
+ /// <summary>
+ /// シリアライズするXMLのスキーマ定義を返す。
+ /// </summary>
+ /// <returns>XML表現を記述するXmlSchema。</returns>
+ public System.Xml.Schema.XmlSchema GetSchema()
+ {
+ return null;
+ }
+
+ /// <summary>
+ /// XMLからオブジェクトをデシリアライズする。
+ /// </summary>
+ /// <param name="reader">デシリアライズ元のXmlReader</param>
+ public void ReadXml(XmlReader reader)
+ {
+ XmlDocument xml = new XmlDocument();
+ xml.Load(reader);
+
+ // Webサイト
+ // ※ 以下、基本的に無かったらNGの部分はいちいちチェックしない。例外飛ばす
+ XmlElement siteElement = xml.SelectSingleNode("DummySite") as XmlElement;
+ this.Location = siteElement.SelectSingleNode("Location").InnerText;
+
+ using (XmlReader r = XmlReader.Create(
+ new StringReader(siteElement.SelectSingleNode("Language").OuterXml), reader.Settings))
+ {
+ this.Language = new XmlSerializer(typeof(Language)).Deserialize(r) as Language;
+ }
+ }
+
+ /// <summary>
+ /// オブジェクトをXMLにシリアライズする。
+ /// </summary>
+ /// <param name="writer">シリアライズ先のXmlWriter</param>
+ public void WriteXml(XmlWriter writer)
+ {
+ writer.WriteElementString("Location", this.Location);
+ new XmlSerializer(typeof(Language)).Serialize(writer, this.Language);
+ }
+
+ #endregion
+ }
+
+ #endregion
+
+ #region プロパティテストケース
+
+ /// <summary>
+ /// Locationプロパティテストケース。
+ /// </summary>
+ [Test]
+ public void TestLocation()
+ {
+ DummySite site = new DummySite();
+ site.Location = "test";
+ Assert.AreEqual("test", site.Location);
+ }
+
+ /// <summary>
+ /// Locationプロパティテストケース(null)。
+ /// </summary>
+ [Test]
+ [ExpectedException(typeof(ArgumentNullException))]
+ public void TestLocationNull()
+ {
+ new DummySite().Location = null;
+ }
+
+ /// <summary>
+ /// Locationプロパティテストケース(空)。
+ /// </summary>
+ [Test]
+ [ExpectedException(typeof(ArgumentException))]
+ public void TestLocationBlank()
+ {
+ new DummySite().Location = " ";
+ }
+
+ /// <summary>
+ /// Languageプロパティテストケース。
+ /// </summary>
+ [Test]
+ public void TestLanguage()
+ {
+ DummySite site = new DummySite();
+ site.Language = new Language("ja");
+ Assert.AreEqual("ja", site.Language.Code);
+ }
+
+ /// <summary>
+ /// Languageプロパティテストケース(null)。
+ /// </summary>
+ [Test]
+ [ExpectedException(typeof(ArgumentNullException))]
+ public void TestLanguageNull()
+ {
+ new DummySite().Language = null;
+ }
+
+ #endregion
+
+ #region メソッドテストケース
+
+ /// <summary>
+ /// XMLデシリアライズテストケース。
+ /// </summary>
+ [Test]
+ public void TestReadXml()
+ {
+ DummySite site;
+ using (XmlReader r = XmlReader.Create(
+ new StringReader("<DummySite><Location>http://ja.wikipedia.org</Location>"
+ + "<Language Code=\"ja\"><Names /></Language></DummySite>")))
+ {
+ site = new XmlSerializer(typeof(DummySite)).Deserialize(r) as DummySite;
+ }
+
+ Assert.IsNotNull(site);
+ Assert.AreEqual("http://ja.wikipedia.org", site.Location);
+ Assert.AreEqual("ja", site.Language.Code);
+ }
+
+ /// <summary>
+ /// XMLシリアライズテストケース。
+ /// </summary>
+ [Test]
+ public void TestWriteXml()
+ {
+ Language lang = new Language("ja");
+ DummySite site = new DummySite();
+ site.Location = "http://ja.wikipedia.org";
+ site.Language = lang;
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.OmitXmlDeclaration = true;
+
+ StringBuilder b = new StringBuilder();
+ using (XmlWriter w = XmlWriter.Create(b, settings))
+ {
+ new XmlSerializer(typeof(DummySite)).Serialize(w, site);
+ }
+
+ Assert.AreEqual("<DummySite><Location>http://ja.wikipedia.org</Location><Language Code=\"ja\"><Names /><Bracket /></Language></DummySite>", b.ToString());
+ }
+
+ #endregion
+ }
+}