1 // ================================================================================================
3 // Pageのテストクラスソース。</summary>
5 // <copyright file="PageTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2011 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Websites
14 using System.Collections.Generic;
15 using NUnit.Framework;
17 using Honememo.Utilities;
26 /// Pageテスト用のモッククラスです。
28 public class DummySite : Website
35 /// <param name="title">ページタイトル。</param>
36 /// <returns>取得したページ。</returns>
37 /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>
38 public override Page GetPage(string title)
52 public void TestConstructorWebsiteTitleTextTimestamp()
54 DateTime t = DateTime.Now;
55 Website s = new DummySite();
56 Page page = new Page(s, "TestTitle", "TestText", t);
57 Assert.AreEqual(s, page.Website);
58 Assert.AreEqual("TestTitle", page.Title);
59 Assert.AreEqual("TestText", page.Text);
60 Assert.AreEqual(t, page.Timestamp);
64 /// コンストラクタテストケース(タイムスタンプ無し)。
67 public void TestConstructorWebsiteTitleText()
69 Website s = new DummySite();
70 Page page = new Page(s, "TestTitle", "TestText");
71 Assert.AreEqual(s, page.Website);
72 Assert.AreEqual("TestTitle", page.Title);
73 Assert.AreEqual("TestText", page.Text);
74 Assert.IsNull(page.Timestamp);
78 /// コンストラクタテストケース(本文・タイムスタンプ無し)。
81 public void TestConstructorWebsiteTitle()
83 Website s = new DummySite();
84 Page page = new Page(s, "TestTitle");
85 Assert.AreEqual(s, page.Website);
86 Assert.AreEqual("TestTitle", page.Title);
87 Assert.IsNull(page.Text);
88 Assert.IsNull(page.Timestamp);
92 /// コンストラクタテストケース(ウェブサイトがnull)。
95 [ExpectedException(typeof(ArgumentNullException))]
96 public void TestConstructorWebsiteNull()
98 new Page(null, "TestTitle");
102 /// コンストラクタテストケース(タイトルが空)。
105 [ExpectedException(typeof(ArgumentException))]
106 public void TestConstructorTitleBlank()
108 Page page = new Page(new DummySite(), " ");
116 /// Websiteプロパティテストケース(正常系)。
119 public void TestWebsite()
121 Page page = new Page(new DummySite(), "TestTitle");
122 Website s = new DummySite();
123 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
124 acc.SetProperty("Website", s);
125 Assert.AreEqual(s, page.Website);
129 /// Websiteプロパティテストケース(null値)。
132 [ExpectedException(typeof(ArgumentNullException))]
133 public void TestWebsiteNull()
135 new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
136 .SetProperty("Website", null);
140 /// Titleプロパティテストケース(正常系)。
143 public void TestTitle()
145 Page page = new Page(new DummySite(), "TestTitle");
146 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
147 acc.SetProperty("Title", "ChangeTitle");
148 Assert.AreEqual("ChangeTitle", page.Title);
152 /// Titleプロパティテストケース(null値)。
155 [ExpectedException(typeof(ArgumentNullException))]
156 public void TestTitleNull()
158 new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
159 .SetProperty("Title", null);
163 /// Titleプロパティテストケース(空)。
166 [ExpectedException(typeof(ArgumentException))]
167 public void TestTitleBlank()
169 new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
170 .SetProperty("Title", " ");
177 public void TestText()
179 Page page = new Page(new DummySite(), "TestTitle");
180 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
181 acc.SetProperty("Text", "TestText");
182 Assert.AreEqual("TestText", page.Text);
186 /// Timestampプロパティテストケース。
189 public void TestTimestamp()
191 Page page = new Page(new DummySite(), "TestTitle");
192 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
193 DateTime t = DateTime.Now;
194 acc.SetProperty("Timestamp", t);
195 Assert.AreEqual(t, page.Timestamp);