OSDN Git Service

Wikipedia翻訳支援ツール Ver1.10時点のソース
[wptscs/wpts.git] / WptscsTest / Websites / PageTest.cs
1 // ================================================================================================
2 // <summary>
3 //      Pageのテストクラスソース。</summary>
4 //
5 // <copyright file="PageTest.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2011 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 NUnit.Framework;
16     using Honememo.Tests;
17     using Honememo.Utilities;
18
19     /// <summary>
20     /// Pageのテストクラスです。
21     /// </summary>
22     [TestFixture]
23     public class PageTest
24     {
25         /// <summary>
26         /// Pageテスト用のモッククラスです。
27         /// </summary>
28         public class DummySite : Website
29         {
30             #region ダミーメソッド
31
32             /// <summary>
33             /// ページを取得。
34             /// </summary>
35             /// <param name="title">ページタイトル。</param>
36             /// <returns>取得したページ。</returns>
37             /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>
38             public override Page GetPage(string title)
39             {
40                 return null;
41             }
42
43             #endregion
44         }
45
46         #region コンストラクタテストケース
47
48         /// <summary>
49         /// コンストラクタテストケース。
50         /// </summary>
51         [Test]
52         public void TestConstructorWebsiteTitleTextTimestamp()
53         {
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);
61         }
62
63         /// <summary>
64         /// コンストラクタテストケース(タイムスタンプ無し)。
65         /// </summary>
66         [Test]
67         public void TestConstructorWebsiteTitleText()
68         {
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);
75         }
76
77         /// <summary>
78         /// コンストラクタテストケース(本文・タイムスタンプ無し)。
79         /// </summary>
80         [Test]
81         public void TestConstructorWebsiteTitle()
82         {
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);
89         }
90
91         /// <summary>
92         /// コンストラクタテストケース(ウェブサイトがnull)。
93         /// </summary>
94         [Test]
95         [ExpectedException(typeof(ArgumentNullException))]
96         public void TestConstructorWebsiteNull()
97         {
98             new Page(null, "TestTitle");
99         }
100
101         /// <summary>
102         /// コンストラクタテストケース(タイトルが空)。
103         /// </summary>
104         [Test]
105         [ExpectedException(typeof(ArgumentException))]
106         public void TestConstructorTitleBlank()
107         {
108             Page page = new Page(new DummySite(), "  ");
109         }
110
111         #endregion
112
113         #region プロパティ
114
115         /// <summary>
116         /// Websiteプロパティテストケース(正常系)。
117         /// </summary>
118         [Test]
119         public void TestWebsite()
120         {
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);
126         }
127
128         /// <summary>
129         /// Websiteプロパティテストケース(null値)。
130         /// </summary>
131         [Test]
132         [ExpectedException(typeof(ArgumentNullException))]
133         public void TestWebsiteNull()
134         {
135             new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
136                 .SetProperty("Website", null);
137         }
138
139         /// <summary>
140         /// Titleプロパティテストケース(正常系)。
141         /// </summary>
142         [Test]
143         public void TestTitle()
144         {
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);
149         }
150
151         /// <summary>
152         /// Titleプロパティテストケース(null値)。
153         /// </summary>
154         [Test]
155         [ExpectedException(typeof(ArgumentNullException))]
156         public void TestTitleNull()
157         {
158             new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
159                 .SetProperty("Title", null);
160         }
161
162         /// <summary>
163         /// Titleプロパティテストケース(空)。
164         /// </summary>
165         [Test]
166         [ExpectedException(typeof(ArgumentException))]
167         public void TestTitleBlank()
168         {
169             new PrivateAccessor<Page>(new Page(new DummySite(), "TestTitle"))
170                 .SetProperty("Title", "  ");
171         }
172
173         /// <summary>
174         /// Textプロパティテストケース。
175         /// </summary>
176         [Test]
177         public void TestText()
178         {
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);
183         }
184
185         /// <summary>
186         /// Timestampプロパティテストケース。
187         /// </summary>
188         [Test]
189         public void TestTimestamp()
190         {
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);
196         }
197
198         #endregion
199     }
200 }