1 // ================================================================================================
3 // Pageのテストクラスソース。</summary>
5 // <copyright file="PageTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Websites
14 using System.Collections.Generic;
16 using Honememo.Utilities;
17 using Microsoft.VisualStudio.TestTools.UnitTesting;
20 /// <see cref="Page"/>のテストクラスです。
23 internal class PageTest
31 public void TestConstructorWebsiteTitleTextTimestamp()
33 DateTime t = DateTime.Now;
34 Website s = new DummySite();
35 Uri uri = new Uri("http://example.com/TestTitle");
36 Page page = new Page(s, "TestTitle", "TestText", t, uri);
37 Assert.AreEqual(s, page.Website);
38 Assert.AreEqual("TestTitle", page.Title);
39 Assert.AreEqual("TestText", page.Text);
40 Assert.AreEqual(t, page.Timestamp);
41 Assert.AreSame(uri, page.Uri);
45 /// コンストラクタテストケース(タイムスタンプ無し)。
48 public void TestConstructorWebsiteTitleText()
50 Website s = new DummySite();
51 Page page = new Page(s, "TestTitle", "TestText");
52 Assert.AreEqual(s, page.Website);
53 Assert.AreEqual("TestTitle", page.Title);
54 Assert.AreEqual("TestText", page.Text);
55 Assert.IsNull(page.Timestamp);
56 Assert.IsNull(page.Uri);
60 /// コンストラクタテストケース(本文・タイムスタンプ無し)。
63 public void TestConstructorWebsiteTitle()
65 Website s = new DummySite();
66 Page page = new Page(s, "TestTitle");
67 Assert.AreEqual(s, page.Website);
68 Assert.AreEqual("TestTitle", page.Title);
69 Assert.IsNull(page.Text);
70 Assert.IsNull(page.Timestamp);
71 Assert.IsNull(page.Uri);
75 /// コンストラクタテストケース(ウェブサイトがnull)。
78 [ExpectedException(typeof(ArgumentNullException))]
79 public void TestConstructorWebsiteNull()
81 new Page(null, "TestTitle");
85 /// コンストラクタテストケース(タイトルが空)。
88 [ExpectedException(typeof(ArgumentException))]
89 public void TestConstructorTitleBlank()
91 new Page(new DummySite(), " ");
99 /// <see cref="Page.Website"/>プロパティテストケース(正常系)。
102 public void TestWebsite()
104 Page page = new Page(new DummySite(), "TestTitle");
105 Website s = new DummySite();
106 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
107 acc.SetProperty("Website", s);
108 Assert.AreEqual(s, page.Website);
112 /// <see cref="Page.Website"/>プロパティテストケース(null値)。
115 [ExpectedException(typeof(ArgumentNullException))]
116 public void TestWebsiteNull()
118 new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
119 .SetProperty("Website", null);
123 /// <see cref="Page.Title"/>プロパティテストケース(正常系)。
126 public void TestTitle()
128 Page page = new Page(new DummySite(), "TestTitle");
129 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
130 acc.SetProperty("Title", "ChangeTitle");
131 Assert.AreEqual("ChangeTitle", page.Title);
135 /// <see cref="Page.Title"/>プロパティテストケース(null値)。
138 [ExpectedException(typeof(ArgumentNullException))]
139 public void TestTitleNull()
141 new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
142 .SetProperty("Title", null);
146 /// <see cref="Page.Title"/>プロパティテストケース(空)。
149 [ExpectedException(typeof(ArgumentException))]
150 public void TestTitleBlank()
152 new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
153 .SetProperty("Title", " ");
157 /// <see cref="Page.Text"/>プロパティテストケース。
160 public void TestText()
162 Page page = new Page(new DummySite(), "TestTitle");
163 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
164 acc.SetProperty("Text", "TestText");
165 Assert.AreEqual("TestText", page.Text);
169 /// <see cref="Page.Timestamp"/>プロパティテストケース。
172 public void TestTimestamp()
174 Page page = new Page(new DummySite(), "TestTitle");
175 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
176 DateTime t = DateTime.Now;
177 acc.SetProperty("Timestamp", t);
178 Assert.AreEqual(t, page.Timestamp);
182 /// <see cref="Page.Uri"/>プロパティテストケース。
185 public void TestUri()
187 Page page = new Page(new DummySite(), "TestTitle");
188 PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
189 Uri uri = new Uri("http://example.com/TestTitle");
190 acc.SetProperty("Uri", uri);
191 Assert.AreEqual(uri, page.Uri);
199 /// <see cref="Page"/>テスト用のモッククラスです。
201 private class DummySite : Website
208 /// <param name="title">ページタイトル。</param>
209 /// <returns><c>null</c>。</returns>
210 public override Page GetPage(string title)