« [イベント] TDD 道場 ~場外乱闘編~ (2011/10/29) | トップページ | [記事紹介] Visual Studio のインテリセンスって、テストファースト中には邪魔だよね »

2011年10月31日 (月)

[コラム] NUnit の CollectionAssert で、 配列やリストを比較・検証する

NUnit (2.4.6以降) には、 コレクションを調べるための CollectionAssert があります。
簡単な動作説明用のコードを載せておきます。 (NotEqual系は省略)

using System;
using NUnit.Framework;    //2.6.0beta

namespace NUnitCollectionAssertTest {

    // http://www.nunit.org/index.php?p=collectionAssert&r=2.6

    [TestFixture(Description = "NUnit の CollectionAssert を使ってみる。(NotEqual系は省略)")]
    public class CollectionAssertTests {

        [Test()]
        public void AllItemsAreInstancesOfTypeTest() {
            object[] obj1 = { "foo", "bar", "buz", };
            CollectionAssert.AllItemsAreInstancesOfType(obj1, typeof(string));    // GREEN

            object[] obj2 = { "foo", "bar", 123, };
            CollectionAssert.AllItemsAreInstancesOfType(obj2, typeof(string));    // RED!
        }

        [Test()]
        public void AllItemsAreNotNullTest() {
            string[] s1 = { "foo", "bar", "buz", };
            CollectionAssert.AllItemsAreNotNull(s1);    // GREEN

            string[] s2 = { "foo", "bar", null, };
            CollectionAssert.AllItemsAreNotNull(s2);    // RED!
        }

        [Test()]
        public void AllItemsAreUniqueTest() {
            string[] s1 = { "foo", "bar", "buz", };
            CollectionAssert.AllItemsAreUnique(s1);    // GREEN

            string[] s2 = { "foo", "bar", "foo", };
            CollectionAssert.AllItemsAreUnique(s2);    // RED!
        }

        [Test()]
        public void AreEqualTest() {
            string[] s1 = { "foo", "bar", "buz", };
            string[] s2 = { "foo", "bar", "buz", };
            CollectionAssert.AreEqual(s2, s1);    // GREEN

            string[] s3 = { "foo", "buz", "bar", };
            CollectionAssert.AreEqual(s3, s1);    // RED!
        }

        [Test()]
        public void AreEquivalentTest() {
            string[] s1 = { "foo", "bar", "buz", };
            string[] s2 = { "foo", "bar", "buz", };
            CollectionAssert.AreEquivalent(s2, s1);    // GREEN

            string[] s3 = { "foo", "buz", "bar", };
            CollectionAssert.AreEquivalent(s3, s1);    // GREEN

            string[] s4 = { "foo", "buzz", "bar", };
            CollectionAssert.AreEquivalent(s4, s1);    // RED!
        }

        [Test()]
        public void ContainsTest() {
            string[] s1 = { "foo", "bar", "buz", };
            CollectionAssert.Contains(s1, "buz");    // GREEN
            CollectionAssert.Contains(s1, "bu");     // RED!
        }

        [Test()]
        public void IsSubsetOfTest() {
            string[] s1 = { "foo", "bar", "buz", };
            string[] s2 = { "foo", "bar", };
            CollectionAssert.IsSubsetOf(s2, s1);    // GREEN

            string[] s3 = { };    //要素無し
            CollectionAssert.IsSubsetOf(s3, s1);    // GREEN

            string[] s4 = { "foo", "buzz", };
            CollectionAssert.IsSubsetOf(s4, s1);    // RED!
        }

        [Test()]
        public void IsEmptyTest() {
            string[] s1 = { };
            CollectionAssert.IsEmpty(s1);    // GREEN

            string[] s2 = { string.Empty, };
            CollectionAssert.IsEmpty(s2);    // RED!
        }

        [Test()]
        public void IsOrderedTest() {
            string[] s1 = { "10", "200", "3", };
            CollectionAssert.IsOrdered(s1);    // GREEN

            string[] s2 = { "aaa", "bbb", "ABC", };
            CollectionAssert.IsOrdered(s1, StringComparer.Ordinal);    // GREEN

            string[] s3 = { "aaa", "ABC", "bbb", };
            CollectionAssert.IsOrdered(s3, StringComparer.OrdinalIgnoreCase);    // GREEN

            int[] n1 = { 10, 200, 3, };
            CollectionAssert.IsOrdered(n1);    // RED!
        }

    }
}

|

« [イベント] TDD 道場 ~場外乱闘編~ (2011/10/29) | トップページ | [記事紹介] Visual Studio のインテリセンスって、テストファースト中には邪魔だよね »

*コラム」カテゴリの記事

<NUnit>」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: [コラム] NUnit の CollectionAssert で、 配列やリストを比較・検証する:

« [イベント] TDD 道場 ~場外乱闘編~ (2011/10/29) | トップページ | [記事紹介] Visual Studio のインテリセンスって、テストファースト中には邪魔だよね »