Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace CompanyName.Linq.Test
- {
- using CompanyName.Linq;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Diagnostics;
- [TestClass]
- public class EnumerableExtensionsTester
- {
- [TestMethod]
- [ExpectedException(typeof(ArgumentNullException))]
- public void TestSingleOrNull_NullSource()
- {
- IEnumerable<int> enumerable = null;
- enumerable.SingleOrNull();
- }
- [TestMethod]
- public void TestSingleOrNull_EmptyList()
- {
- var enumerable = new int[0];
- var result = enumerable.SingleOrNull();
- Assert.IsNull(result);
- }
- [TestMethod]
- public void TestSingleOrNull_SingleElementList()
- {
- var enumerable = new[] { 42 };
- var result = enumerable.SingleOrNull();
- Assert.AreEqual(42, result);
- }
- [TestMethod]
- public void TestSingleOrNull_MultiElementList()
- {
- var enumerable = new[] { 42, 43 };
- var result = enumerable.SingleOrNull();
- Assert.IsNull(result);
- }
- private sealed class EnumerableFake<T> : IEnumerable<T>
- {
- private readonly IEnumerable<T> source;
- public EnumerableFake(IEnumerable<T> source)
- {
- Debug.Assert(source != null);
- this.source = source;
- }
- public IEnumerator<T> GetEnumerator()
- {
- return source.GetEnumerator();
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return source.GetEnumerator();
- }
- }
- [TestMethod]
- public void TestSingleOrNull_Empty()
- {
- var enumerable = new EnumerableFake<int>(new int[0]);
- var result = enumerable.SingleOrNull();
- Assert.IsNull(result);
- }
- [TestMethod]
- public void TestSingleOrNull_SingleElement()
- {
- var enumerable = new EnumerableFake<int>(new[] { 42 });
- var result = enumerable.SingleOrNull();
- Assert.AreEqual(42, result);
- }
- [TestMethod]
- public void TestSingleOrNull_MultiElement()
- {
- var enumerable = new EnumerableFake<int>(new[] { 42, 43 });
- var result = enumerable.SingleOrNull();
- Assert.IsNull(result);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement