Explorar o código

Adding a few more tests for OrderBy.

Bart De Smet %!s(int64=6) %!d(string=hai) anos
pai
achega
24eaf96c77

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 416 - 224
Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/OrderBy.Generated.cs


+ 32 - 7
Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/OrderBy.Generated.tt

@@ -111,23 +111,48 @@ for (var i = 1; i <= 3; i++)
             var asyncRes = xs.ToAsyncEnumerable()<#=asyncCall#>;
             var syncRes = xs<#=syncCall#>;
 
-            Assert.True(syncRes.ToList().SequenceEqual(await asyncRes.ToListAsync()));
-            Assert.True(syncRes.ToArray().SequenceEqual(await asyncRes.ToArrayAsync()));
+            await AssertSorted(asyncRes, syncRes);
 
-            Assert.Equal(syncRes.Count(), await asyncRes.CountAsync());
+            var asyncSegment = asyncRes.AsAsyncEnumerable();
+            var syncSegment = syncRes.AsEnumerable();
 
-            Assert.Equal(syncRes.First(), await asyncRes.FirstAsync());
-            Assert.Equal(syncRes.Last(), await asyncRes.LastAsync());
+            foreach (var skipCount in new[] { 3, 7, 2, 5 })
+            {
+                asyncSegment = asyncSegment.Skip(skipCount);
+                syncSegment = syncSegment.Skip(skipCount);
+            }
 
-            for (var i = 0; i < 100; i++)
+            foreach (var takeCount in new[] { 31, 29, 23 })
             {
-                Assert.Equal(syncRes.ElementAt(i), await asyncRes.ElementAtAsync(i));
+                asyncSegment = asyncSegment.Take(takeCount);
+                syncSegment = syncSegment.Take(takeCount);
             }
+
+            await AssertSorted(asyncSegment, syncSegment);
         }
 
 <#
     }
 }
 #>
+
+        private async Task AssertSorted<T>(IAsyncEnumerable<T> asyncRes, IEnumerable<T> syncRes)
+        {
+            Assert.True(await syncRes.ToAsyncEnumerable().SequenceEqualAsync(asyncRes));
+            Assert.True(syncRes.ToList().SequenceEqual(await asyncRes.ToListAsync()));
+            Assert.True(syncRes.ToArray().SequenceEqual(await asyncRes.ToArrayAsync()));
+
+            int syncCount = syncRes.Count();
+            int asyncCount = await asyncRes.CountAsync();
+            Assert.Equal(syncCount, asyncCount);
+
+            Assert.Equal(syncRes.First(), await asyncRes.FirstAsync());
+            Assert.Equal(syncRes.Last(), await asyncRes.LastAsync());
+
+            for (var i = 0; i < syncCount; i++)
+            {
+                Assert.Equal(syncRes.ElementAt(i), await asyncRes.ElementAtAsync(i));
+            }
+        }
     }
 }

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio