Beispiel #1
0
        public void Test_Prepend <T>([PexAssumeNotNull] T[] arr1, T t, [PexAssumeNotNull] T[] arr2)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr1);

            Assert2.SequenceEqual(t.Cons(arr1.AsEnumerable()), t | seq);
            Assert2.SequenceEqual(arr2.Concat(arr1), seq.PrependRange(arr2));
        }
Beispiel #2
0
        public void Test_Concat <T>([PexAssumeNotNull] T[] arr1, [PexAssumeNotNull] T[] arr2)
        {
            var seq1 = RandomAccessSequence.FromEnumerable(arr1);
            var seq2 = RandomAccessSequence.FromEnumerable(arr2);

            Assert2.SequenceEqual(seq1.AsEnumerable().Concat(seq2), seq1 + seq2);
        }
Beispiel #3
0
        public void Test_Append <T>([PexAssumeNotNull] T[] arr1, T t, [PexAssumeNotNull] T[] arr2)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr1);

            Assert2.SequenceEqual(arr1.Append(t), seq | t);
            Assert2.SequenceEqual(arr1.Concat(arr2), seq.AppendRange(arr2));
        }
Beispiel #4
0
        public void Test_ConcatWithEmpty <T>([PexAssumeNotNull] T[] arr)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr);

            Assert2.SequenceEqual(seq + RandomAccessSequence <T> .Empty, seq);
            Assert2.SequenceEqual(RandomAccessSequence <T> .Empty + seq, seq);
        }
Beispiel #5
0
        public void Test_Indexing <T>([PexAssumeNotNull] T[] arr, int i)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr);

            PexAssume.IsTrue(i >= 0);
            PexAssume.IsTrue(i < arr.Length);
            Assert.Equal(arr[i], seq[i]);
        }
Beispiel #6
0
        public void Test_SplitAt <T>([PexAssumeNotNull] T[] arr, int i)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr);

            PexAssume.IsTrue(i >= 0);
            PexAssume.IsTrue(i < arr.Length);
            var split = seq.SplitAt(i);

            Assert2.SequenceEqual(arr.Take(i), split.Item1);
            Assert2.SequenceEqual(arr.Take(i), seq.Take(i));
            Assert2.SequenceEqual(arr.Skip(i), split.Item2);
            Assert2.SequenceEqual(arr.Skip(i), seq.Skip(i));
        }
Beispiel #7
0
        public void Test_SetAt <T>([PexAssumeNotNull] T[] arr, int i, T newValue)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr);

            PexAssume.IsTrue(i >= 0);
            PexAssume.IsTrue(i < seq.Count);
            var newSeq   = seq.SetAt(i, newValue);
            var splitOld = seq.SplitAt(i);
            var splitNew = newSeq.SplitAt(i);

            Assert2.SequenceEqual(splitOld.Item1, splitNew.Item1);
            Assert.Equal(newValue, splitNew.Item2.Head);
            Assert2.SequenceEqual(splitOld.Item2.Tail, splitNew.Item2.Tail);
        }
Beispiel #8
0
        public void Test_HeadAndTailOfNonEmptySequence <T>([PexAssumeNotNull] T[] arr)
        {
            PexAssume.IsNotNullOrEmpty(arr);
            var seq0 = RandomAccessSequence.FromEnumerable(arr);
            var seq  = seq0;

            foreach (var t in arr)
            {
                Assert.Equal(t, seq.Head);
                seq = seq.Tail;
            }
            Assert.Empty(seq);

            seq = seq0;
            foreach (var t in arr.Reverse())
            {
                Assert.Equal(t, seq.Last);
                seq = seq.Init;
            }
            Assert.Empty(seq);
        }
Beispiel #9
0
 public void Test_Enumerate <T>([PexAssumeNotNull] T[] arr)
 {
     Assert2.SequenceEqual(arr, RandomAccessSequence.FromEnumerable(arr));
 }
Beispiel #10
0
 public void Test_IsEmptyWorksCorrectly <T>(T[] arr)
 {
     Assert.True(RandomAccessSequence.Empty <int>().IsEmpty);
     PexAssume.IsNotNullOrEmpty(arr);
     Assert.False(RandomAccessSequence.FromEnumerable(arr).IsEmpty);
 }
Beispiel #11
0
        public void Test_Reverse <T>([PexAssumeNotNull] T[] arr)
        {
            var seq = RandomAccessSequence.FromEnumerable(arr);

            Assert2.SequenceEqual(seq.AsEnumerable().Reverse(), seq.Reverse());
        }