Browse Source

Clean up Cast and OfType tests.

Bart De Smet 6 years ago
parent
commit
0e5c7f8364

+ 26 - 2
Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/Cast.cs

@@ -18,7 +18,20 @@ namespace Tests
         }
 
         [Fact]
-        public async Task Cast1()
+        public async Task Cast_References()
+        {
+            var xs = new object[] { "bar", "foo", "qux" }.ToAsyncEnumerable();
+            var ys = xs.Cast<string>();
+
+            var e = ys.GetAsyncEnumerator();
+            await HasNextAsync(e, "bar");
+            await HasNextAsync(e, "foo");
+            await HasNextAsync(e, "qux");
+            await NoNextAsync(e);
+        }
+
+        [Fact]
+        public async Task Cast_Values()
         {
             var xs = new object[] { 1, 2, 3, 4 }.ToAsyncEnumerable();
             var ys = xs.Cast<int>();
@@ -32,7 +45,18 @@ namespace Tests
         }
 
         [Fact]
-        public void Cast2()
+        public async Task Cast_InvalidCast()
+        {
+            var xs = new object[] { 42, "foo", 43 }.ToAsyncEnumerable();
+            var ys = xs.Cast<int>();
+
+            var e = ys.GetAsyncEnumerator();
+            await HasNextAsync(e, 42);
+            await AssertThrowsAsync<InvalidCastException>(e.MoveNextAsync().AsTask());
+        }
+
+        [Fact]
+        public void Cast_Aliasing()
         {
             var xs = new[] { new EventArgs(), new EventArgs(), new EventArgs() }.ToAsyncEnumerable();
             var ys = xs.Cast<EventArgs>();

+ 13 - 1
Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/OfType.cs

@@ -18,7 +18,7 @@ namespace Tests
         }
 
         [Fact]
-        public async Task OfType1Async()
+        public async Task OfType_Int32()
         {
             var xs = new object[] { 1, 1.2, true, 4, "" }.ToAsyncEnumerable();
             var ys = xs.OfType<int>();
@@ -28,5 +28,17 @@ namespace Tests
             await HasNextAsync(e, 4);
             await NoNextAsync(e);
         }
+
+        [Fact]
+        public async Task OfType_String()
+        {
+            var xs = new object[] { "bar", 42, "foo", 43 }.ToAsyncEnumerable();
+            var ys = xs.OfType<string>();
+
+            var e = ys.GetAsyncEnumerator();
+            await HasNextAsync(e, "bar");
+            await HasNextAsync(e, "foo");
+            await NoNextAsync(e);
+        }
     }
 }