Преглед на файлове

Clean up [Skip|Take]Last tests.

Bart De Smet преди 6 години
родител
ревизия
9168f5695d

+ 26 - 6
Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/SkipLast.cs

@@ -19,7 +19,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task SkipLast1Async()
+        public async Task SkipLast_Few()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().SkipLast(2);
 
@@ -30,7 +30,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task SkipLast2Async()
+        public async Task SkipLast_All()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().SkipLast(5);
 
@@ -39,7 +39,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task SkipLast3()
+        public async Task SkipLast_SequenceIdentity()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().SkipLast(2);
 
@@ -47,11 +47,14 @@ namespace Tests
         }
 
         [Fact]
-        public async Task SkipLast4Async()
+        public async Task SkipLast_Zero()
         {
-            var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().SkipLast(0);
+            var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable();
+            var ys = xs.SkipLast(0);
 
-            var e = xs.GetAsyncEnumerator();
+            Assert.Same(xs, ys);
+
+            var e = ys.GetAsyncEnumerator();
 
             await HasNextAsync(e, 1);
             await HasNextAsync(e, 2);
@@ -59,5 +62,22 @@ namespace Tests
             await HasNextAsync(e, 4);
             await NoNextAsync(e);
         }
+
+#if USE_ASYNC_ITERATOR
+        [Fact]
+        public void SkipLast_Zero_NoAlias()
+        {
+            var xs = Xs();
+            var ys = xs.SkipLast(0);
+
+            Assert.NotSame(xs, ys);
+        }
+
+        private async IAsyncEnumerable<int> Xs()
+        {
+            await Task.Yield();
+            yield return 1;
+        }
+#endif
     }
 }

+ 15 - 4
Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/TakeLast.cs

@@ -19,7 +19,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task TakeLast0()
+        public async Task TakeLast_Negative()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().TakeLast(-2);
 
@@ -28,7 +28,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task TakeLast1()
+        public async Task TakeLast_Positive()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().TakeLast(2);
 
@@ -39,7 +39,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task TakeLast2()
+        public async Task TakeLast_TooMany()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().TakeLast(5);
 
@@ -52,7 +52,18 @@ namespace Tests
         }
 
         [Fact]
-        public async Task TakeLast3()
+        public async Task TakeLast_BreakEarly_Take()
+        {
+            var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().TakeLast(3).Take(2);
+
+            var e = xs.GetAsyncEnumerator();
+            await HasNextAsync(e, 2);
+            await HasNextAsync(e, 3);
+            await NoNextAsync(e);
+        }
+
+        [Fact]
+        public async Task TakeLast_SequenceIdentity()
         {
             var xs = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().TakeLast(2);