IEnumerable を実装する .net フレームワークのクラスのいずれかが ICollection インターフェイスを実装していないかどうかを知りたいです。
私が書いた次の拡張メソッドでは 100% のコード カバレッジが得られないため、質問しています。
public static int GetSafeCount<T>(this IEnumerable<T> nullableCollaction)
{
if (nullableCollaction == null)
{
return 0;
}
var collection = nullableCollaction as ICollection<T>;
if (collection != null)
{
return collection.Count;
}
return nullableCollaction.Count();
}
最後の行はどのテストでもカバーされておらず、それをカバーするためにインスタンス化する正しいクラスが見つかりません。
私のテストコードは次のとおりです。
[Test]
public void GetSafeCount_NullObject_Return0()
{
IEnumerable<string> enumerable=null;
Assert.AreEqual(0, enumerable.GetSafeCount());
}
[Test]
public void GetSafeCount_NonICollectionObject_ReturnCount()
{
IEnumerable<string> enumerable = new string[]{};
Assert.AreEqual(0, enumerable.GetSafeCount());
}