1 // ================================================================================================
3 // IgnoreCaseSetのテストクラスソース。</summary>
5 // <copyright file="IgnoreCaseSetTest.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Models
14 using System.Collections.Generic;
15 using Microsoft.VisualStudio.TestTools.UnitTesting;
18 /// <see cref="IgnoreCaseSet"/>のテストクラスです。
21 public class IgnoreCaseSetTest
26 /// コンストラクタテストケース(引数なし)。
29 public void TestConstructor()
31 IgnoreCaseSet set = new IgnoreCaseSet();
32 Assert.AreEqual(0, set.Set.Count);
36 /// コンストラクタテストケース(引数Set)。
39 public void TestConstructorSet()
41 ISet<string> inner = new HashSet<string>();
42 inner.Add("TestValue");
43 IgnoreCaseSet set = new IgnoreCaseSet(inner);
44 Assert.AreEqual(inner, set.Set);
45 Assert.IsTrue(set.Contains("TESTValue"));
49 /// コンストラクタテストケース(引数Enumerable)。
52 public void TestConstructorEnumerable()
54 IList<string> other = new List<string>();
55 other.Add("TestValue");
56 IgnoreCaseSet set = new IgnoreCaseSet(other);
57 Assert.IsTrue(set.Contains("TESTValue"));
61 /// コンストラクタテストケース(null値)。
64 [ExpectedException(typeof(ArgumentNullException))]
65 public void TestConstructorSetNull()
67 new IgnoreCaseSet(null);
72 #region 独自実装公開プロパティテストケース
75 /// Setプロパティテストケース(正常系)。
80 IgnoreCaseSet set = new IgnoreCaseSet();
81 ISet<string> inner = new HashSet<string>();
82 inner.Add("TestValue");
84 Assert.AreSame(inner, set.Set);
85 Assert.IsTrue(set.Contains("TESTvalue"));
89 /// Setプロパティテストケース(null値)。
92 [ExpectedException(typeof(ArgumentNullException))]
93 public void TestSetNull()
95 IgnoreCaseSet set = new IgnoreCaseSet();
101 #region ラップするインスタンスを参照するプロパティテストケース
104 /// Countプロパティテストケース。
107 public void TestCount()
109 // ラップするISetと同じ値であること
110 ISet<string> inner = new HashSet<string>();
111 inner.Add("TestValue");
112 IgnoreCaseSet set = new IgnoreCaseSet(inner);
113 Assert.AreEqual(inner.Count, set.Count);
117 /// IsReadOnlyプロパティテストケース。
120 public void TestIsReadOnly()
122 // ラップするISetと同じ値であること
123 ISet<string> inner = new HashSet<string>();
124 inner.Add("TestValue");
125 IgnoreCaseSet set = new IgnoreCaseSet(inner);
126 Assert.AreEqual(inner.IsReadOnly, set.IsReadOnly);
131 #region 独自実装メソッドテストケース
134 /// Addメソッドテストケース(正常系)。
137 public void TestAdd()
139 IgnoreCaseSet set = new IgnoreCaseSet();
140 Assert.AreEqual(0, set.Count);
141 set.Add("TestValue");
142 Assert.AreEqual(1, set.Count);
143 Assert.IsTrue(set.Contains("TESTvalue"));
144 Assert.IsTrue(set.Set.Contains("TestValue"));
145 Assert.IsFalse(set.Set.Contains("TESTvalue"));
146 set.Add("tESTvALUE2");
147 Assert.AreEqual(2, set.Count);
148 Assert.IsTrue(set.Contains("TESTvalue2"));
149 Assert.IsTrue(set.Set.Contains("tESTvALUE2"));
153 /// Addメソッドテストケース(null値)。
156 [ExpectedException(typeof(ArgumentNullException))]
157 public void TestAddNull()
159 new IgnoreCaseSet().Add(null);
163 /// Containsメソッドテストケース(正常系)。
166 public void TestContains()
168 IgnoreCaseSet set = new IgnoreCaseSet();
169 Assert.IsFalse(set.Contains("TestValue"));
170 set.Add("TestValue");
171 Assert.IsTrue(set.Contains("TestValue"));
172 Assert.IsTrue(set.Contains("tESTvALue"));
173 Assert.IsFalse(set.Contains("TestValue2"));
177 /// Containsメソッドテストケース(null値)。
180 [ExpectedException(typeof(ArgumentNullException))]
181 public void TestContainsNull()
183 new IgnoreCaseSet().Contains(null);
190 public void TestClear()
192 // 全データが削除されること、またラップしているオブジェクトは維持されること
193 ISet<string> inner = new HashSet<string>();
194 IgnoreCaseSet set = new IgnoreCaseSet(inner);
195 set.Add("TestValue");
196 set.Add("tESTVAlue2");
197 Assert.AreEqual(2, set.Count);
198 Assert.AreSame(inner, set.Set);
201 Assert.AreEqual(0, set.Count);
202 Assert.AreSame(inner, set.Set);
206 /// CopyToメソッドテストケース(正常系)。
209 public void TestCopyTo()
211 IgnoreCaseSet set = new IgnoreCaseSet();
212 set.Add("TestValue");
213 set.Add("tESTvAlue2");
214 string[] array = new string[5];
215 set.CopyTo(array, 3);
216 Assert.IsNull(array[0]);
217 Assert.IsNull(array[1]);
218 Assert.IsNull(array[2]);
219 Assert.AreEqual("TestValue", array[3]);
220 Assert.AreEqual("tESTvAlue2", array[4]);
224 /// CopyToメソッドテストケース(null値)。
227 [ExpectedException(typeof(ArgumentNullException))]
228 public void TestCopyToNull()
230 new IgnoreCaseSet().CopyTo(null, 0);
234 /// CopyToメソッドテストケース(インデックスがマイナス値)。
237 [ExpectedException(typeof(ArgumentOutOfRangeException))]
238 public void TestCopyToOutOfRange()
240 new IgnoreCaseSet().CopyTo(new string[5], -1);
244 /// CopyToメソッドテストケース(領域不足)。
247 [ExpectedException(typeof(ArgumentException))]
248 public void TestCopyToOverflow()
250 IgnoreCaseSet set = new IgnoreCaseSet();
251 set.Add("TestValue");
252 set.Add("tESTvAlue2");
253 set.CopyTo(new string[5], 4);
257 /// ExceptWithメソッドテストケース(正常系)。
260 public void TestExceptWith()
262 IgnoreCaseSet set = new IgnoreCaseSet();
263 set.Add("TestValue");
264 set.Add("tESTvAlue2");
265 set.Add("testvalue3");
266 set.ExceptWith(new string[] { "TestValue", "testvalUE2", "TestValue4" });
267 Assert.AreEqual(1, set.Count);
268 Assert.IsTrue(set.Set.Contains("testvalue3"));
272 /// ExceptWithメソッドテストケース(null値)。
275 [ExpectedException(typeof(ArgumentNullException))]
276 public void TestExceptWithNull()
278 new IgnoreCaseSet().ExceptWith(null);
282 /// IntersectWithメソッドテストケース(正常系)。
285 public void TestIntersectWith()
287 IgnoreCaseSet set = new IgnoreCaseSet();
288 set.Add("TestValue");
289 set.Add("tESTvAlue2");
290 set.Add("testvalue3");
291 set.IntersectWith(new string[] { "TestValue", "testvalUE2", "TestValue4" });
292 Assert.AreEqual(2, set.Count);
293 Assert.IsTrue(set.Set.Contains("TestValue"));
294 Assert.IsTrue(set.Set.Contains("tESTvAlue2"));
298 /// IntersectWithメソッドテストケース(null値)。
301 [ExpectedException(typeof(ArgumentNullException))]
302 public void TestIntersectWithNull()
304 new IgnoreCaseSet().IntersectWith(null);
308 /// IsProperSubsetOfメソッドテストケース(正常系)。
311 public void TestIsProperSubsetOf()
313 IgnoreCaseSet set = new IgnoreCaseSet();
314 set.Add("TestValue");
315 set.Add("tESTvAlue2");
316 set.Add("testvalue3");
317 Assert.IsFalse(set.IsProperSubsetOf(new string[0]));
318 Assert.IsFalse(set.IsProperSubsetOf(new string[] { "TestValue", "testvalUE2" }));
319 Assert.IsFalse(set.IsProperSubsetOf(new string[] { "TestValue", "testvalUE2", "TestValue4" }));
320 Assert.IsFalse(set.IsProperSubsetOf(new string[] { "TestValue", "testvalUE2", "TestValue3" }));
321 Assert.IsTrue(set.IsProperSubsetOf(new string[] { "TestValue", "testvalUE2", "TestValue3", "TestValue4" }));
322 Assert.IsFalse(set.IsProperSubsetOf(new string[] { "TestValue4" }));
326 /// IsProperSubsetOfメソッドテストケース(null値)。
329 [ExpectedException(typeof(ArgumentNullException))]
330 public void TestIsProperSubsetOfNull()
332 new IgnoreCaseSet().IsProperSubsetOf(null);
336 /// IsProperSupersetOfメソッドテストケース(正常系)。
339 public void TestIsProperSupersetOf()
341 IgnoreCaseSet set = new IgnoreCaseSet();
342 set.Add("TestValue");
343 set.Add("tESTvAlue2");
344 set.Add("testvalue3");
345 Assert.IsTrue(set.IsProperSupersetOf(new string[0]));
346 Assert.IsTrue(set.IsProperSupersetOf(new string[] { "TestValue", "testvalUE2" }));
347 Assert.IsFalse(set.IsProperSupersetOf(new string[] { "TestValue", "testvalUE2", "TestValue4" }));
348 Assert.IsFalse(set.IsProperSupersetOf(new string[] { "TestValue", "testvalUE2", "TestValue3" }));
349 Assert.IsFalse(set.IsProperSupersetOf(new string[] { "TestValue", "testvalUE2", "TestValue3", "TestValue4" }));
350 Assert.IsFalse(set.IsProperSupersetOf(new string[] { "TestValue4" }));
354 /// IsProperSupersetOfメソッドテストケース(null値)。
357 [ExpectedException(typeof(ArgumentNullException))]
358 public void TestIsProperSupersetOfNull()
360 new IgnoreCaseSet().IsProperSupersetOf(null);
364 /// IsSubsetOfメソッドテストケース(正常系)。
367 public void TestIsSubsetOf()
369 IgnoreCaseSet set = new IgnoreCaseSet();
370 set.Add("TestValue");
371 set.Add("tESTvAlue2");
372 set.Add("testvalue3");
373 Assert.IsFalse(set.IsSubsetOf(new string[0]));
374 Assert.IsFalse(set.IsSubsetOf(new string[] { "TestValue", "testvalUE2" }));
375 Assert.IsFalse(set.IsSubsetOf(new string[] { "TestValue", "testvalUE2", "TestValue4" }));
376 Assert.IsTrue(set.IsSubsetOf(new string[] { "TestValue", "testvalUE2", "TestValue3" }));
377 Assert.IsTrue(set.IsSubsetOf(new string[] { "TestValue", "testvalUE2", "TestValue3", "TestValue4" }));
378 Assert.IsFalse(set.IsSubsetOf(new string[] { "TestValue4" }));
382 /// IsSubsetOfメソッドテストケース(null値)。
385 [ExpectedException(typeof(ArgumentNullException))]
386 public void TestIsSubsetOfNull()
388 new IgnoreCaseSet().IsSubsetOf(null);
392 /// IsSupersetOfメソッドテストケース(正常系)。
395 public void TestIsSupersetOf()
397 IgnoreCaseSet set = new IgnoreCaseSet();
398 set.Add("TestValue");
399 set.Add("tESTvAlue2");
400 set.Add("testvalue3");
401 Assert.IsTrue(set.IsSupersetOf(new string[0]));
402 Assert.IsTrue(set.IsSupersetOf(new string[] { "TestValue", "testvalUE2" }));
403 Assert.IsFalse(set.IsSupersetOf(new string[] { "TestValue", "testvalUE2", "TestValue4" }));
404 Assert.IsTrue(set.IsSupersetOf(new string[] { "TestValue", "testvalUE2", "TestValue3" }));
405 Assert.IsFalse(set.IsSupersetOf(new string[] { "TestValue", "testvalUE2", "TestValue3", "TestValue4" }));
406 Assert.IsFalse(set.IsSupersetOf(new string[] { "TestValue4" }));
410 /// IsSupersetOfメソッドテストケース(null値)。
413 [ExpectedException(typeof(ArgumentNullException))]
414 public void TestIsSupersetOfNull()
416 new IgnoreCaseSet().IsSupersetOf(null);
420 /// Overlapsメソッドテストケース(正常系)。
423 public void TestOverlaps()
425 IgnoreCaseSet set = new IgnoreCaseSet();
426 set.Add("TestValue");
427 set.Add("tESTvAlue2");
428 set.Add("testvalue3");
429 Assert.IsFalse(set.Overlaps(new string[0]));
430 Assert.IsTrue(set.Overlaps(new string[] { "TestValue", "testvalUE2" }));
431 Assert.IsTrue(set.Overlaps(new string[] { "TestValue", "testvalUE2", "TestValue4" }));
432 Assert.IsTrue(set.Overlaps(new string[] { "TestValue", "testvalUE2", "TestValue3" }));
433 Assert.IsTrue(set.Overlaps(new string[] { "TestValue", "testvalUE2", "TestValue3", "TestValue4" }));
434 Assert.IsFalse(set.Overlaps(new string[] { "TestValue4" }));
438 /// Overlapsメソッドテストケース(null値)。
441 [ExpectedException(typeof(ArgumentNullException))]
442 public void TestOverlapsNull()
444 new IgnoreCaseSet().Overlaps(null);
448 /// Removeメソッドテストケース(正常系)。
451 public void TestRemove()
453 IgnoreCaseSet set = new IgnoreCaseSet();
454 set.Add("TestValue");
455 set.Add("tESTvAlUe2");
456 Assert.AreEqual(2, set.Count);
457 Assert.IsTrue(set.Contains("TestValue"));
458 Assert.IsTrue(set.Contains("tESTvAlUe2"));
460 Assert.IsTrue(set.Remove("tEstValue"));
461 Assert.AreEqual(1, set.Count);
462 Assert.IsFalse(set.Contains("TestValue"));
463 Assert.IsTrue(set.Contains("tESTvAlUe2"));
465 Assert.IsFalse(set.Remove("tESTvAlUe3"));
466 Assert.AreEqual(1, set.Count);
467 Assert.IsTrue(set.Contains("tESTvAlUe2"));
469 Assert.IsTrue(set.Remove("tESTvAlUe2"));
470 Assert.AreEqual(0, set.Count);
471 Assert.IsFalse(set.Contains("tESTvAlUe2"));
475 /// Removeメソッドテストケース(null値)。
478 [ExpectedException(typeof(ArgumentNullException))]
479 public void TestRemoveNull()
481 new IgnoreCaseSet().Remove(null);
485 /// SetEqualsメソッドテストケース(正常系)。
488 public void TestSetEquals()
490 IgnoreCaseSet set = new IgnoreCaseSet();
491 set.Add("TestValue");
492 set.Add("tESTvAlue2");
493 set.Add("testvalue3");
494 Assert.IsFalse(set.SetEquals(new string[0]));
495 Assert.IsFalse(set.SetEquals(new string[] { "TestValue", "testvalUE2" }));
496 Assert.IsFalse(set.SetEquals(new string[] { "TestValue", "testvalUE2", "TestValue4" }));
497 Assert.IsTrue(set.SetEquals(new string[] { "TestValue", "testvalUE2", "TestValue3" }));
498 Assert.IsFalse(set.SetEquals(new string[] { "TestValue", "testvalUE2", "TestValue3", "TestValue4" }));
499 Assert.IsFalse(set.SetEquals(new string[] { "TestValue4" }));
503 /// SetEqualsメソッドテストケース(null値)。
506 [ExpectedException(typeof(ArgumentNullException))]
507 public void TestSetEqualsNull()
509 new IgnoreCaseSet().SetEquals(null);
513 /// SymmetricExceptWithメソッドテストケース(正常系)。
516 public void TestSymmetricExceptWith()
518 IgnoreCaseSet set = new IgnoreCaseSet();
519 set.Add("TestValue");
520 set.Add("tESTvAlue2");
521 set.Add("testvalue3");
522 set.SymmetricExceptWith(new string[] { "TestValue", "testvalUE2", "TestValue4" });
523 Assert.AreEqual(2, set.Count);
524 Assert.IsTrue(set.Set.Contains("testvalue3"));
525 Assert.IsTrue(set.Set.Contains("TestValue4"));
529 /// SymmetricExceptWithメソッドテストケース(null値)。
532 [ExpectedException(typeof(ArgumentNullException))]
533 public void TestSymmetricExceptWithNull()
535 new IgnoreCaseSet().SymmetricExceptWith(null);
539 /// UnionWithメソッドテストケース(正常系)。
542 public void TestUnionWith()
544 // 両方の値が格納される、重複するものは後の値で上書き
545 IgnoreCaseSet set = new IgnoreCaseSet();
546 set.Add("TestValue");
547 set.Add("tESTvAlue2");
548 set.Add("testvalue3");
549 set.UnionWith(new string[] { "TestValue", "testvalUE2", "TestValue4" });
550 Assert.AreEqual(4, set.Count);
551 Assert.IsTrue(set.Set.Contains("TestValue"));
552 Assert.IsTrue(set.Set.Contains("testvalUE2"));
553 Assert.IsTrue(set.Set.Contains("testvalue3"));
554 Assert.IsTrue(set.Set.Contains("TestValue4"));
558 /// UnionWithメソッドテストケース(null値)。
561 [ExpectedException(typeof(ArgumentNullException))]
562 public void TestUnionWithNull()
564 new IgnoreCaseSet().UnionWith(null);
569 #region ラップするインスタンスを参照するメソッドテストケース
572 /// GetEnumeratorメソッドテストケース。
575 public void TestGetEnumerator()
577 // ラップするISetと同じ値であること
578 ISet<string> inner = new HashSet<string>();
579 inner.Add("TestValue");
580 IgnoreCaseSet set = new IgnoreCaseSet(inner);
581 Assert.AreEqual(inner.GetEnumerator(), set.GetEnumerator());