OSDN Git Service

7b88ac9387b2721073deedcc0528b833b2730076
[wptscs/wpts.git] / WptscsTest / Websites / PageTest.cs
1 // ================================================================================================
2 // <summary>
3 //      Pageのテストクラスソース。</summary>
4 //
5 // <copyright file="PageTest.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Wptscs.Websites
12 {
13     using System;
14     using System.Collections.Generic;
15     using Honememo.Tests;
16     using Honememo.Utilities;
17     using Microsoft.VisualStudio.TestTools.UnitTesting;
18
19     /// <summary>
20     /// <see cref="Page"/>のテストクラスです。
21     /// </summary>
22     [TestClass]
23     internal class PageTest
24     {
25         #region コンストラクタテストケース
26
27         /// <summary>
28         /// コンストラクタテストケース。
29         /// </summary>
30         [TestMethod]
31         public void TestConstructorWebsiteTitleTextTimestamp()
32         {
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);
42         }
43
44         /// <summary>
45         /// コンストラクタテストケース(タイムスタンプ無し)。
46         /// </summary>
47         [TestMethod]
48         public void TestConstructorWebsiteTitleText()
49         {
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);
57         }
58
59         /// <summary>
60         /// コンストラクタテストケース(本文・タイムスタンプ無し)。
61         /// </summary>
62         [TestMethod]
63         public void TestConstructorWebsiteTitle()
64         {
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);
72         }
73
74         /// <summary>
75         /// コンストラクタテストケース(ウェブサイトがnull)。
76         /// </summary>
77         [TestMethod]
78         [ExpectedException(typeof(ArgumentNullException))]
79         public void TestConstructorWebsiteNull()
80         {
81             new Page(null, "TestTitle");
82         }
83
84         /// <summary>
85         /// コンストラクタテストケース(タイトルが空)。
86         /// </summary>
87         [TestMethod]
88         [ExpectedException(typeof(ArgumentException))]
89         public void TestConstructorTitleBlank()
90         {
91             new Page(new DummySite(), "  ");
92         }
93
94         #endregion
95
96         #region プロパティ
97
98         /// <summary>
99         /// <see cref="Page.Website"/>プロパティテストケース(正常系)。
100         /// </summary>
101         [TestMethod]
102         public void TestWebsite()
103         {
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);
109         }
110
111         /// <summary>
112         /// <see cref="Page.Website"/>プロパティテストケース(null値)。
113         /// </summary>
114         [TestMethod]
115         [ExpectedException(typeof(ArgumentNullException))]
116         public void TestWebsiteNull()
117         {
118             new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
119                 .SetProperty("Website", null);
120         }
121
122         /// <summary>
123         /// <see cref="Page.Title"/>プロパティテストケース(正常系)。
124         /// </summary>
125         [TestMethod]
126         public void TestTitle()
127         {
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);
132         }
133
134         /// <summary>
135         /// <see cref="Page.Title"/>プロパティテストケース(null値)。
136         /// </summary>
137         [TestMethod]
138         [ExpectedException(typeof(ArgumentNullException))]
139         public void TestTitleNull()
140         {
141             new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
142                 .SetProperty("Title", null);
143         }
144
145         /// <summary>
146         /// <see cref="Page.Title"/>プロパティテストケース(空)。
147         /// </summary>
148         [TestMethod]
149         [ExpectedException(typeof(ArgumentException))]
150         public void TestTitleBlank()
151         {
152             new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
153                 .SetProperty("Title", "  ");
154         }
155
156         /// <summary>
157         /// <see cref="Page.Text"/>プロパティテストケース。
158         /// </summary>
159         [TestMethod]
160         public void TestText()
161         {
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);
166         }
167
168         /// <summary>
169         /// <see cref="Page.Timestamp"/>プロパティテストケース。
170         /// </summary>
171         [TestMethod]
172         public void TestTimestamp()
173         {
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);
179         }
180
181         /// <summary>
182         /// <see cref="Page.Uri"/>プロパティテストケース。
183         /// </summary>
184         [TestMethod]
185         public void TestUri()
186         {
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);
192         }
193
194         #endregion
195
196         #region モッククラス
197
198         /// <summary>
199         /// <see cref="Page"/>テスト用のモッククラスです。
200         /// </summary>
201         private class DummySite : Website
202         {
203             #region ダミーメソッド
204
205             /// <summary>
206             /// ページを取得。空実装。
207             /// </summary>
208             /// <param name="title">ページタイトル。</param>
209             /// <returns><c>null</c>。</returns>
210             public override Page GetPage(string title)
211             {
212                 return null;
213             }
214
215             #endregion
216         }
217
218         #endregion
219     }
220 }