OSDN Git Service

#30244 Visual Studioの自動テストはテストクラスがinternalだと実行されていなかったので修正,
[wptscs/wpts.git] / HmLibTest / Parsers / CacheParserTest.cs
1 // ================================================================================================
2 // <summary>
3 //      CacheParserのテストクラスソース。</summary>
4 //
5 // <copyright file="CacheParserTest.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Parsers
12 {
13     using System;
14     using Microsoft.VisualStudio.TestTools.UnitTesting;
15
16     /// <summary>
17     /// <see cref="CacheParser"/>のテストクラスです。
18     /// </summary>
19     [TestClass]
20     public class CacheParserTest
21     {
22         #region コンストラクタテストケース
23
24         /// <summary>
25         /// コンストラクタテストケース(異常系)。
26         /// </summary>
27         /// <remarks>正常系は他のメソッドのテストの中で実施。</remarks>
28         [TestMethod]
29         [ExpectedException(typeof(ArgumentNullException))]
30         public void TestConstructorNull()
31         {
32             new CacheParser(null);
33         }
34
35         #endregion
36
37         #region IParserインタフェース実装メソッドテストケース
38
39         /// <summary>
40         /// <see cref="CacheParser.Parse"/>メソッドテストケース(正常系)。
41         /// </summary>
42         [TestMethod]
43         public void TestParse()
44         {
45             // ラップしているパーサーと同じ結果を返すこと
46             // (一度目は同じ値で、二度目は一度目と同じオブジェクトで)
47             XmlCommentElementParser child = new XmlCommentElementParser();
48             CacheParser parser = new CacheParser(child);
49             IElement element;
50             IElement diff;
51             string text;
52
53             text = "<!-- comment -->test";
54             element = parser.Parse(text);
55             diff = child.Parse(text);
56             Assert.AreEqual("<!-- comment -->", element.ToString());
57             Assert.AreEqual(diff.ToString(), element.ToString());
58             Assert.AreNotSame(diff, element);
59             Assert.AreSame(element, parser.Parse(text));
60
61             text = "<!-- [[comment]] -->test";
62             element = parser.Parse(text);
63             diff = child.Parse(text);
64             Assert.AreEqual("<!-- [[comment]] -->", element.ToString());
65             Assert.AreEqual(diff.ToString(), element.ToString());
66             Assert.AreNotSame(diff, element);
67             Assert.AreSame(element, parser.Parse(text));
68         }
69
70         /// <summary>
71         /// <see cref="CacheParser.Parse"/>メソッドテストケース(null)。
72         /// </summary>
73         [TestMethod]
74         [ExpectedException(typeof(ArgumentNullException))]
75         public void TestParseNull()
76         {
77             // nullはどのParserをラップしている場合も自前で例外
78             new CacheParser(new XmlCommentElementParser()).Parse(null);
79         }
80
81         /// <summary>
82         /// <see cref="CacheParser.Parse"/>メソッドテストケース(解析失敗)。
83         /// </summary>
84         [TestMethod]
85         [ExpectedException(typeof(FormatException))]
86         public void TestParseIgnore()
87         {
88             // ラップしているパーサーと同じ例外を投げること
89             new CacheParser(new XmlCommentElementParser()).Parse(" <!-- comment -->test");
90         }
91
92         /// <summary>
93         /// <see cref="CacheParser.TryParse"/>メソッドテストケース。
94         /// </summary>
95         [TestMethod]
96         public void TestTryParse()
97         {
98             // ラップしているパーサーと同じ結果を返すこと
99             // (一度目は同じ値で、二度目は一度目と同じオブジェクトで)
100             XmlCommentElementParser child = new XmlCommentElementParser();
101             CacheParser parser = new CacheParser(child);
102             IElement element;
103             IElement diff;
104             string text;
105
106             text = "<!-- comment -->test";
107             Assert.IsTrue(parser.TryParse(text, out element));
108             Assert.IsTrue(child.TryParse(text, out diff));
109             Assert.AreEqual("<!-- comment -->", element.ToString());
110             Assert.AreEqual(diff.ToString(), element.ToString());
111             Assert.AreNotSame(diff, element);
112             Assert.AreEqual(child.TryParse(text, out diff), parser.TryParse(text, out element));
113             Assert.IsTrue(parser.TryParse(text, out diff));
114             Assert.AreSame(element, diff);
115
116             text = "<!-- [[comment]] -->test";
117             Assert.IsTrue(parser.TryParse(text, out element));
118             Assert.IsTrue(child.TryParse(text, out diff));
119             Assert.AreEqual("<!-- [[comment]] -->", element.ToString());
120             Assert.AreEqual(diff.ToString(), element.ToString());
121             Assert.AreNotSame(diff, element);
122             Assert.AreEqual(child.TryParse(text, out diff), parser.TryParse(text, out element));
123             Assert.IsTrue(parser.TryParse(text, out diff));
124             Assert.AreSame(element, diff);
125
126             text = " <!-- comment -->test";
127             Assert.IsFalse(parser.TryParse(text, out element));
128             Assert.IsNull(element);
129             Assert.IsFalse(parser.TryParse(text, out element));
130             Assert.IsNull(element);
131
132             text = null;
133             Assert.IsFalse(parser.TryParse(text, out element));
134             Assert.IsNull(element);
135             Assert.IsFalse(parser.TryParse(text, out element));
136             Assert.IsNull(element);
137         }
138
139         /// <summary>
140         /// <see cref="CacheParser.IsPossibleParse"/>メソッドテストケース。
141         /// </summary>
142         [TestMethod]
143         public void TestIsPossibleParse()
144         {
145             // ラップしているパーサーと同じ結果を返すこと
146             XmlCommentElementParser child = new XmlCommentElementParser();
147             CacheParser parser = new CacheParser(child);
148             char c;
149
150             c = '<';
151             Assert.IsTrue(parser.IsPossibleParse(c));
152             Assert.AreEqual(child.IsPossibleParse(c), parser.IsPossibleParse(c));
153
154             c = '>';
155             Assert.IsFalse(parser.IsPossibleParse(c));
156             Assert.AreEqual(child.IsPossibleParse(c), parser.IsPossibleParse(c));
157
158             c = '[';
159             Assert.IsFalse(parser.IsPossibleParse(c));
160             Assert.AreEqual(child.IsPossibleParse(c), parser.IsPossibleParse(c));
161         }
162
163         #endregion
164     }
165 }