Переглянути джерело

Build support for tests on .NET 4.

Bart De Smet 10 роки тому
батько
коміт
e1a19d956f

+ 17 - 8
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableAsyncTest.cs

@@ -18,6 +18,15 @@ namespace ReactiveTests.Tests
     [TestClass]
     public partial class ObservableAsyncTest : ReactiveTest
     {
+        private Task<int> doneTask;
+
+        public ObservableAsyncTest()
+        {
+            var tcs = new TaskCompletionSource<int>();
+            tcs.SetResult(42);
+            doneTask = tcs.Task;
+        }
+
         #region FromAsyncPattern
 
         [TestMethod]
@@ -1299,8 +1308,8 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(default(Func<Task<int>>), s));
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(default(Func<CancellationToken, Task<int>>), s));
 
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(() => Task.FromResult(1), default(IScheduler)));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(ct => Task.FromResult(1), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(() => doneTask, default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync<int>(ct => doneTask, default(IScheduler)));
         }
 
         [TestMethod]
@@ -1501,8 +1510,8 @@ namespace ReactiveTests.Tests
 
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(default(Func<Task>), s));
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(default(Func<CancellationToken, Task>), s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(() => (Task)Task.FromResult(1), default(IScheduler)));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(ct => (Task)Task.FromResult(1), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(() => (Task)doneTask, default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.StartAsync(ct => (Task)doneTask, default(IScheduler)));
         }
 
         [TestMethod]
@@ -1696,9 +1705,9 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(default(Func<CancellationToken, Task<int>>)));
 
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(default(Func<Task<int>>), s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(() => Task.FromResult(42), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(() => doneTask, default(IScheduler)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(default(Func<CancellationToken, Task<int>>), s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(ct => Task.FromResult(42), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync<int>(ct => doneTask, default(IScheduler)));
         }
 
         [TestMethod]
@@ -1886,9 +1895,9 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(default(Func<CancellationToken, Task>)));
 
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(default(Func<Task>), s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(() => (Task)Task.FromResult(42), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(() => (Task)doneTask, default(IScheduler)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(default(Func<CancellationToken, Task>), s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(ct => (Task)Task.FromResult(42), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Observable.FromAsync(ct => (Task)doneTask, default(IScheduler)));
         }
 
         [TestMethod]

+ 3 - 3
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableImperativeTest.cs

@@ -506,18 +506,18 @@ namespace ReactiveTests.Tests
             // behavior, so we're merely asserting regressions here.
             //
 
-            var hasCaughtEscapingException = false;
+            var hasCaughtEscapingException = 0;
 
             var cts = new CancellationTokenSource();
             var ex = new Exception();
 
             var s = Scheduler.Default.Catch<Exception>(err =>
             {
-                Volatile.Write(ref hasCaughtEscapingException, true);
+                Thread.VolatileWrite(ref hasCaughtEscapingException, 1);
                 return ex == err;
             });
 
-            while (!Volatile.Read(ref hasCaughtEscapingException))
+            while (Thread.VolatileRead(ref hasCaughtEscapingException) == 0)
             {
                 var xs = Observable.Create<int>(observer =>
                 {

+ 11 - 2
Rx.NET/Source/Tests.System.Reactive/Tests/TaskObservableExtensionsTest.cs

@@ -17,6 +17,15 @@ namespace ReactiveTests.Tests
     [TestClass]
     public class TaskObservableExtensionsTest : ReactiveTest
     {
+        private Task<int> doneTask;
+
+        public TaskObservableExtensionsTest()
+        {
+            var tcs = new TaskCompletionSource<int>();
+            tcs.SetResult(42);
+            doneTask = tcs.Task;
+        }
+
         #region ToObservable
 
         [TestMethod]
@@ -27,7 +36,7 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable((Task<int>)null));
 
             ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable((Task<int>)null, s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable(Task.FromResult(42), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable(doneTask, default(IScheduler)));
 
             var tcs = new System.Threading.Tasks.TaskCompletionSource<int>();
             var task = tcs.Task;
@@ -387,7 +396,7 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable((Task)null));
 
             ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable((Task)null, s));
-            ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable((Task)Task.FromResult(42), default(IScheduler)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => TaskObservableExtensions.ToObservable((Task)doneTask, default(IScheduler)));
 
             var tcs = new System.Threading.Tasks.TaskCompletionSource<int>();
             System.Threading.Tasks.Task task = tcs.Task;