// Author: Gockner, Simon // Created: 2019-07-03 // Copyright(c) 2019 SimonG. All Rights Reserved. using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; using LightweightIocContainer; using NSubstitute; using NUnit.Framework; namespace Test.LightweightIocContainer; [TestFixture] public class EnumerableExtensionTest { private class ListObject { public int Index { get; set; } } private class Given : ListObject { } [UsedImplicitly] public interface ITest { void DoSomething(); } [Test] [SuppressMessage("ReSharper", "CollectionNeverUpdated.Local")] public void TestFirstOrGivenNoPredicateEmpty() { List list = new(); Assert.IsInstanceOf(list.FirstOrGiven()); } [Test] public void TestFirstOrGivenNoPredicate() { List list = new() { new ListObject {Index = 0}, new ListObject {Index = 1}, new ListObject {Index = 2}, new ListObject {Index = 3} }; ListObject listObject = list.FirstOrGiven(); Assert.IsNotInstanceOf(listObject); Assert.AreEqual(0, listObject.Index); } [Test] [SuppressMessage("ReSharper", "CollectionNeverUpdated.Local")] public void TestFirstOrGivenPredicateEmpty() { List list = new(); Assert.IsInstanceOf(list.FirstOrGiven(o => o.Index == 2)); } [Test] public void TestFirstOrGivenPredicate() { List list = new() { new ListObject {Index = 0}, new ListObject {Index = 1}, new ListObject {Index = 2}, new ListObject {Index = 3} }; ListObject listObject = list.FirstOrGiven(o => o.Index == 2); Assert.IsNotInstanceOf(listObject); Assert.AreEqual(2, listObject.Index); } [Test] public void TestForEach() { ITest test1 = Substitute.For(); ITest test2 = Substitute.For(); ITest test3 = Substitute.For(); ITest test4 = Substitute.For(); IEnumerable enumerable = new[] { test1, test2, test3, test4 }; enumerable.ForEach(t => t.DoSomething()); test1.Received(1).DoSomething(); test2.Received(1).DoSomething(); test3.Received(1).DoSomething(); test4.Received(1).DoSomething(); } }