1 // ================================================================================================
3 // CacheParserのテストクラスソース。</summary>
5 // <copyright file="CacheParserTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Parsers
14 using NUnit.Framework;
17 /// <see cref="CacheParser"/>のテストクラスです。
25 /// コンストラクタテストケース(異常系)。
27 /// <remarks>正常系は他のメソッドのテストの中で実施。</remarks>
29 [ExpectedException(typeof(ArgumentNullException))]
30 public void TestConstructorNull()
32 new CacheParser(null);
37 #region IParserインタフェース実装メソッドテストケース
40 /// <see cref="CacheParser.Parse"/>メソッドテストケース(正常系)。
43 public void TestParse()
45 // ラップしているパーサーと同じ結果を返すこと
46 // (一度目は同じ値で、二度目は一度目と同じオブジェクトで)
47 XmlCommentElementParser child = new XmlCommentElementParser();
48 CacheParser parser = new CacheParser(child);
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));
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));
71 /// <see cref="CacheParser.Parse"/>メソッドテストケース(null)。
74 [ExpectedException(typeof(ArgumentNullException))]
75 public void TestParseNull()
77 // nullはどのParserをラップしている場合も自前で例外
78 new CacheParser(new XmlCommentElementParser()).Parse(null);
82 /// <see cref="CacheParser.Parse"/>メソッドテストケース(解析失敗)。
85 [ExpectedException(typeof(FormatException))]
86 public void TestParseIgnore()
88 // ラップしているパーサーと同じ例外を投げること
89 new CacheParser(new XmlCommentElementParser()).Parse(" <!-- comment -->test");
93 /// <see cref="CacheParser.TryParse"/>メソッドテストケース。
96 public void TestTryParse()
98 // ラップしているパーサーと同じ結果を返すこと
99 // (一度目は同じ値で、二度目は一度目と同じオブジェクトで)
100 XmlCommentElementParser child = new XmlCommentElementParser();
101 CacheParser parser = new CacheParser(child);
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);
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);
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);
133 Assert.IsFalse(parser.TryParse(text, out element));
134 Assert.IsNull(element);
135 Assert.IsFalse(parser.TryParse(text, out element));
136 Assert.IsNull(element);
140 /// <see cref="CacheParser.IsPossibleParse"/>メソッドテストケース。
143 public void TestIsPossibleParse()
145 // ラップしているパーサーと同じ結果を返すこと
146 XmlCommentElementParser child = new XmlCommentElementParser();
147 CacheParser parser = new CacheParser(child);
151 Assert.IsTrue(parser.IsPossibleParse(c));
152 Assert.AreEqual(child.IsPossibleParse(c), parser.IsPossibleParse(c));
155 Assert.IsFalse(parser.IsPossibleParse(c));
156 Assert.AreEqual(child.IsPossibleParse(c), parser.IsPossibleParse(c));
159 Assert.IsFalse(parser.IsPossibleParse(c));
160 Assert.AreEqual(child.IsPossibleParse(c), parser.IsPossibleParse(c));