示例#1
0
        public void ElementAt_Skip_Take_Predicate_Selector_With_OutOfRange_Must_Return_None(int[] source, int skipCount, int takeCount, Func <int, bool> predicate, Func <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap.AsReadOnlyList(source);

            // Act
            var optionTooSmall = ReadOnlyListExtensions
                                 .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                                 .Take(takeCount)
                                 .Where(predicate)
                                 .Select(selector)
                                 .ElementAt(-1);
            var optionTooLarge = ReadOnlyListExtensions
                                 .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                                 .Take(takeCount)
                                 .Where(predicate)
                                 .Select(selector)
                                 .ElementAt(takeCount);

            // Assert
            _ = optionTooSmall.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
            _ = optionTooLarge.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
        public void ToArray_Predicate_Selector_Must_Succeed(int[] source, int skip, int take, Func <int, bool> predicate, Func <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected = Enumerable
                           .Skip(source, skip)
                           .Take(take)
                           .Where(predicate)
                           .Select(selector)
                           .ToArray();

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                         .Take(take)
                         .Where(predicate)
                         .Select(selector)
                         .ToArray();

            // Assert
            _ = result.Must()
                .BeNotSameAs(source)
                .BeArrayOf <string>()
                .BeEqualTo(expected);
        }
示例#3
0
        public void First_Predicate_Selector_With_ValidData_Must_Return_Some(int[] source, int skip, int take, Func <int, bool> predicate, Func <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList <int>(source);
            var expected = Enumerable
                           .Skip(source, skip)
                           .Take(take)
                           .Where(predicate)
                           .Select(selector)
                           .First();

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                         .Take(take)
                         .Where(predicate)
                         .Select(selector)
                         .First();

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
示例#4
0
        public void ForEach_ActionAt_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, int skipTake, int takeCount, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var result   = new List <(string, int)>();
            var expected = new List <(string, int)>();

            System.Linq.EnumerableEx.ForEach(
                System.Linq.Enumerable.Select(
                    System.Linq.Enumerable.Where(
                        System.Linq.Enumerable.Take(
                            System.Linq.Enumerable.Skip(source, skipTake), takeCount), predicate.AsFunc()), selector.AsFunc()), (item, index) => expected.Add((item, index)));

            // Act
            ReadOnlyList
            .Skip <Wrap.ReadOnlyList <int>, int>(wrapped, skipTake)
            .Take(takeCount)
            .Where(predicate)
            .Select(selector)
            .ForEach((item, index) => result.Add((item, index)));

            // Assert
            _ = result.Must()
                .BeEnumerableOf <(string, int)>()
                .BeEqualTo(expected);
        }
        public void ToArray_Predicate_Must_Succeed(int[] source, int skip, int take, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected = source
                           .Skip(skip)
                           .Take(take)
                           .Where(predicate)
                           .ToArray();

            // Act
            var result = wrapped.AsValueEnumerable()
                         .Skip(skip)
                         .Take(take)
                         .Where(predicate)
                         .ToArray();

            // Assert
            _ = result.Must()
                .BeArrayOf <int>()
                .BeEqualTo(expected);
            if (result.Length is not 0)
            {
                _ = result.Must().BeNotSameAs(source);
            }
        }
        public void ToList_Skip_Take_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, int skip, int take, Func <int, bool> predicate, Func <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected = source
                           .Skip(skip)
                           .Take(take)
                           .Where(predicate)
                           .Select(selector)
                           .ToArray();

            // Act
            var result = wrapped.AsValueEnumerable()
                         .Skip(skip)
                         .Take(take)
                         .Where(predicate)
                         .Select(selector)
                         .ToList();

            // Assert
            _ = result.Must()
                .BeOfType <List <string> >()
                .BeEnumerableOf <string>()
                .BeEqualTo(expected);
        }
示例#7
0
        public void Single_Predicate_Selector_With_Single_Must_Return_Some(int[] source, int skipCount, int takeCount, Predicate <int> predicate, NullableSelector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);
            var expected = Enumerable
                           .Skip(source, skipCount)
                           .Take(takeCount)
                           .Where(predicate.AsFunc())
                           .Select(selector.AsFunc())
                           .Single();

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                         .Take(takeCount)
                         .Where(predicate)
                         .Select(selector)
                         .Single();

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
示例#8
0
        public void ElementAt_Skip_Take_Predicate_Selector_With_ValidData_Must_Return_Some(int[] source, int skipCount, int takeCount, Func <int, bool> predicate, Func <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected = Enumerable
                           .Skip(source, skipCount)
                           .Take(takeCount)
                           .Where(predicate)
                           .Select(selector)
                           .ToList();

            for (var index = 0; index < expected.Count; index++)
            {
                // Act
                var result = ReadOnlyListExtensions
                             .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                             .Take(takeCount)
                             .Where(predicate)
                             .Select(selector)
                             .ElementAt(index);

                // Assert
                _ = result.Match(
                    value => value.Must().BeEqualTo(expected[index]),
                    () => throw new Exception());
            }
        }
示例#9
0
        public void ToList_Skip_Take_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, int skipCount, int takeCount, Predicate <int> predicate, NullableSelector <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected = Enumerable
                           .Skip(source, skipCount)
                           .Take(takeCount)
                           .Where(predicate.AsFunc())
                           .Select(selector.AsFunc())
                           .ToArray();

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                         .Take(takeCount)
                         .Where(predicate)
                         .Select(selector)
                         .ToList();

            // Assert
            _ = result.Must()
                .BeOfType <List <string> >()
                .BeEnumerableOf <string>()
                .BeEqualTo(expected);
        }
示例#10
0
        public void Select_With_NullSelector_Must_Throw()
        {
            // Arrange
            var source   = Wrap.AsReadOnlyList(new int[0]);
            var selector = (NullableSelectorAt <int, string>)null;

            // Act
            Action action = () => _ = ReadOnlyListExtensions.Select <Wrap.ReadOnlyListWrapper <int>, int, string>(source, selector);

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "selector");
        }
示例#11
0
        public void Where_With_NullPredicate_Must_Throw()
        {
            // Arrange
            var list = Wrap
                       .AsReadOnlyList(new int[0]);
            var predicate = (PredicateAt <int>)null;

            // Act
            Action action = () => _ = ReadOnlyListExtensions.Where(list, predicate);

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "predicate");
        }
示例#12
0
        public void First_With_Empty_Must_Return_None(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList <int>(source);

            // Act
            var result = ReadOnlyListExtensions
                         .First <Wrap.ReadOnlyListWrapper <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
示例#13
0
        public void AsValueEnumerable_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);

            // Act
            var result = ReadOnlyListExtensions
                         .AsValueEnumerable(wrapped);

            // Assert
            _ = result.Must()
                .BeOfType <ReadOnlyListExtensions.ValueEnumerableWrapper <int> >()
                .BeEnumerableOf <int>()
                .BeEqualTo(wrapped);
        }
示例#14
0
        public void WhereSelect_Predicate_With_Null_Must_Throw()
        {
            // Arrange
            var source    = Wrap.AsReadOnlyList(new int[0]);
            var predicate = (Predicate <int>)null;

            // Act
            Action action = () => _ = ReadOnlyListExtensions
                                      .Where <Wrap.ReadOnlyListWrapper <int>, int>(source, predicate)
                                      .Select(item => item.ToString());

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "predicate");
        }
示例#15
0
        public void Select_With_ValidData_Must_Succeed(int[] source, NullableSelectorAt <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected =
                System.Linq.Enumerable.Select(wrapped, selector.AsFunc());

            // Act
            var result = ReadOnlyListExtensions
                         .Select <Wrap.ReadOnlyListWrapper <int>, int, string>(wrapped, selector);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <string>()
                .BeEqualTo(expected);
        }
        public void Count_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);
            var expected = Enumerable
                           .Count(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Count <Wrap.ReadOnlyListWrapper <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
示例#17
0
        public void ToList_SelectorAt_With_Null_Must_Throw()
        {
            // Arrange
            var source   = new int[0];
            var wrapped  = Wrap.AsReadOnlyList(source);
            var selector = (NullableSelectorAt <int, string>)null;

            // Act
            Action action = () => _ = ReadOnlyListExtensions
                                      .Select(wrapped, selector)
                                      .ToList();

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "selector");
        }
示例#18
0
        public void ToList_Predicate_With_Null_Must_Throw()
        {
            // Arrange
            var source    = new int[0];
            var wrapped   = Wrap.AsReadOnlyList(source);
            var predicate = (Predicate <int>)null;

            // Act
            Action action = () => _ = ReadOnlyListExtensions
                                      .Where(wrapped, predicate)
                                      .ToList();

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "predicate");
        }
示例#19
0
        public void First_With_ValidData_Must_Return_Some(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList <int>(source);
            var expected = Enumerable
                           .First(source);

            // Act
            var result = ReadOnlyListExtensions
                         .First <Wrap.ReadOnlyListWrapper <int>, int>(wrapped);

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
        public void Single_SkipTake_With_Empty_Must_Return_None(int[] source, int skip, int take)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                         .Take(take)
                         .Single();

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
示例#21
0
        public void ElementAt_With_ValidData_Must_Return_Some(int[] source)
        {
            // Arrange
            var wrapped = Wrap.AsReadOnlyList(source);

            for (var index = 0; index < source.Length; index++)
            {
                // Act
                var result = ReadOnlyListExtensions
                             .ElementAt <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, index);

                // Assert
                _ = result.Match(
                    value => value.Must().BeEqualTo(source[index]),
                    () => throw new Exception());
            }
        }
示例#22
0
        public void AsValueEnumerable_With_ToArray_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);
            var expected = Enumerable
                           .ToArray(source);

            // Act
            var result = ReadOnlyListExtensions
                         .AsValueEnumerable <int>(wrapped)
                         .ToArray();

            // Assert
            _ = result.Must()
                .BeArrayOf <int>()
                .BeEqualTo(expected);
        }
示例#23
0
        public void ForEach_ActionAt_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped  = Wrap.AsReadOnlyList(source);
            var result   = new List <(int, int)>();
            var expected = new List <(int, int)>();

            System.Linq.EnumerableEx.ForEach(source, (item, index) => expected.Add((item, index)));

            // Act
            ReadOnlyList
            .ForEach <Wrap.ReadOnlyList <int>, int>(wrapped, (item, index) => result.Add((item, index)));

            // Assert
            _ = result.Must()
                .BeEnumerableOf <(int, int)>()
                .BeEqualTo(expected);
        }
示例#24
0
        public void First_Predicate_With_Empty_Must_Return_None(int[] source, int skip, int take, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList <int>(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                         .Take(take)
                         .Where(predicate)
                         .First();

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
示例#25
0
        public void Single_SelectorAt_With_Multiple_Must_Return_None(int[] source, int skipCount, int takeCount, NullableSelectorAt <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                         .Take(takeCount)
                         .Select(selector)
                         .Single();

            // Assert
            _ = result.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
示例#26
0
        public void First_SelectorAt_With_Empty_Must_Return_None(int[] source, int skip, int take, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList <int>(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                         .Take(take)
                         .Select(selector)
                         .First();

            // Assert
            _ = result.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
示例#27
0
        public void Single_PredicateAt_With_Multiple_Must_Return_None(int[] source, int skipCount, int takeCount, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skipCount)
                         .Take(takeCount)
                         .Where(predicate)
                         .Single();

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
        public void Single_Predicate_Selector_With_Empty_Must_Return_None(int[] source, int skip, int take, Predicate <int> predicate, NullableSelector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsReadOnlyList(source);

            // Act
            var result = ReadOnlyListExtensions
                         .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                         .Take(take)
                         .Where(predicate)
                         .Select(selector)
                         .Single();

            // Assert
            _ = result.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
示例#29
0
        public void ElementAt_With_OutOfRange_Must_Return_None(int[] source)
        {
            // Arrange
            var wrapped = Wrap.AsReadOnlyList(source);

            // Act
            var optionTooSmall = ReadOnlyListExtensions
                                 .ElementAt <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, -1);
            var optionTooLarge = ReadOnlyListExtensions
                                 .ElementAt <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, source.Length);

            // Assert
            _ = optionTooSmall.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
            _ = optionTooLarge.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
        public void ToArray_MemoryPool_Must_Succeed(int[] source, int skip, int take)
        {
            // Arrange
            var pool     = MemoryPool <int> .Shared;
            var wrapped  = Wrap.AsReadOnlyList(source);
            var expected = Enumerable
                           .Skip(source, skip)
                           .Take(take)
                           .ToArray();

            // Act
            using var result = ReadOnlyListExtensions
                               .Skip <Wrap.ReadOnlyListWrapper <int>, int>(wrapped, skip)
                               .Take(take)
                               .ToArray(pool);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }