浏览代码

Append tests

Oren Novotny 9 年之前
父节点
当前提交
b8409ce320
共有 2 个文件被更改,包括 75 次插入0 次删除
  1. 47 0
      Ix.NET/Source/Tests/AppendPrependTests.cs
  2. 28 0
      Ix.NET/Source/Tests/AsyncTests.Single.cs

+ 47 - 0
Ix.NET/Source/Tests/AppendPrependTests.cs

@@ -12,6 +12,14 @@ namespace Tests
 {
 {
     public partial class AsyncTests
     public partial class AsyncTests
     {
     {
+
+        [Fact]
+        public void AppendPrepend_Null()
+        {
+            AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Append(null, 42));
+            AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Prepend(null, 42));
+        }
+
         [Fact]
         [Fact]
         public void Append1()
         public void Append1()
         {
         {
@@ -327,6 +335,17 @@ namespace Tests
         }
         }
 
 
 
 
+        [Fact]
+        public async Task Prepend8()
+        {
+            var xs = AsyncEnumerable.Range(1, 3)
+                                    .Where(i => true);
+
+            var res = xs.Prepend(4);
+
+            await SequenceIdentity(res);
+        }
+
         [Fact]
         [Fact]
         public void PrependN1()
         public void PrependN1()
         {
         {
@@ -587,6 +606,34 @@ namespace Tests
             Assert.Equal(10, await res.Count());
             Assert.Equal(10, await res.Count());
         }
         }
 
 
+        [Fact]
+        public void AppendPrepend8()
+        {
+            var xs = new[] { 1, 2, 3 }.ToAsyncEnumerable();
+
+            var res = xs.Append(4)
+                        .Prepend(5);
+
+            var e = res.GetEnumerator();
+            
+            HasNext(e, 5);
+            HasNext(e, 1);
+            HasNext(e, 2);
+            HasNext(e, 3);
+            HasNext(e, 4);
+            NoNext(e);
+        }
+
+        [Fact]
+        public async Task AppendPrepend9()
+        {
+            var xs = new[] { 1, 2, 3 }.ToAsyncEnumerable();
+
+            var res = xs.Append(4)
+                        .Prepend(5);
+
+            await SequenceIdentity(res);
+        }
 
 
     }
     }
 }
 }

+ 28 - 0
Ix.NET/Source/Tests/AsyncTests.Single.cs

@@ -1522,6 +1522,34 @@ namespace Tests
             Assert.Equal(new[] { 4, 3, 2, 1 }, await ys.ToArray());
             Assert.Equal(new[] { 4, 3, 2, 1 }, await ys.ToArray());
         }
         }
 
 
+        [Fact]
+        public async Task Reverse10()
+        {
+            var xs = new CancellationTestAsyncEnumerable().Skip(1).Take(3);
+            var ys = xs.Reverse().Prepend(4); // to trigger onlyIfCheap
+
+            Assert.Equal(new[] { 4, 3, 2, 1 }, await ys.ToArray());
+        }
+
+        [Fact]
+        public async Task Reverse11()
+        {
+            var xs = new CancellationTestAsyncEnumerable().Skip(1).Take(3);
+            var ys = xs.Reverse().Prepend(4); // to trigger onlyIfCheap
+
+            Assert.Equal(new[] { 4, 3, 2, 1 }, await ys.ToList());
+        }
+
+
+        [Fact]
+        public async Task Reverse12()
+        {
+            var xs = new CancellationTestAsyncEnumerable().Skip(1).Take(3);
+            var ys = xs.Reverse().Prepend(4).Prepend(5); // to trigger onlyIfCheap
+
+            Assert.Equal(new[] { 5, 4, 3, 2, 1 }, await ys.ToArray());
+        }
+
 
 
         [Fact]
         [Fact]
         public void OrderBy_Null()
         public void OrderBy_Null()