Bläddra i källkod

Added a couple of tests.

Steven Kirk 8 år sedan
förälder
incheckning
fcbde80682

+ 4 - 0
src/Avalonia.Styling/Styling/ActivatedValue.cs

@@ -4,6 +4,7 @@
 using System;
 using System.Collections.Generic;
 using System.Reactive.Disposables;
+using Avalonia.Threading;
 
 namespace Avalonia.Styling
 {
@@ -75,6 +76,9 @@ namespace Avalonia.Styling
 
         public virtual IDisposable Subscribe(IObserver<object> observer)
         {
+            Contract.Requires<ArgumentNullException>(observer != null);
+            Dispatcher.UIThread.VerifyAccess();
+
             _observers.Add(observer);
 
             if (_observers.Count == 1)

+ 4 - 3
tests/Avalonia.Styling.UnitTests/ActivatedObservableTests.cs

@@ -54,15 +54,16 @@ namespace Avalonia.Styling.UnitTests
         }
 
         [Fact]
-        public void Should_Complete_When_Activator_Completes()
+        public void Should_Error_When_Source_Errors()
         {
             var activator = new BehaviorSubject<bool>(false);
             var source = new BehaviorSubject<object>(1);
             var target = new ActivatedObservable(activator, source, string.Empty);
+            var error = new Exception();
             var completed = false;
 
-            target.Subscribe(_ => { }, () => completed = true);
-            activator.OnCompleted();
+            target.Subscribe(_ => { }, x => completed = true);
+            source.OnError(error);
 
             Assert.True(completed);
         }

+ 14 - 0
tests/Avalonia.Styling.UnitTests/ActivatedValueTests.cs

@@ -40,6 +40,20 @@ namespace Avalonia.Styling.UnitTests
             Assert.True(completed);
         }
 
+        [Fact]
+        public void Should_Error_When_Activator_Errors()
+        {
+            var activator = new BehaviorSubject<bool>(false);
+            var target = new ActivatedValue(activator, 1, string.Empty);
+            var error = new Exception();
+            var completed = false;
+
+            target.Subscribe(_ => { }, x => completed = true);
+            activator.OnError(error);
+
+            Assert.True(completed);
+        }
+
         [Fact]
         public void Should_Unsubscribe_From_Activator_When_All_Subscriptions_Disposed()
         {