diff options
Diffstat (limited to 'Rx/NET/Source/Tests.System.Reactive/Tests/MySubject.cs')
-rw-r--r-- | Rx/NET/Source/Tests.System.Reactive/Tests/MySubject.cs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Rx/NET/Source/Tests.System.Reactive/Tests/MySubject.cs b/Rx/NET/Source/Tests.System.Reactive/Tests/MySubject.cs new file mode 100644 index 0000000..b1dd907 --- /dev/null +++ b/Rx/NET/Source/Tests.System.Reactive/Tests/MySubject.cs @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; +using System.Reactive.Disposables; +using System.Reactive.Subjects; + +namespace ReactiveTests.Tests +{ + class MySubject : ISubject<int> + { + private Dictionary<int, IDisposable> _disposeOn = new Dictionary<int, IDisposable>(); + + public void DisposeOn(int value, IDisposable disposable) + { + _disposeOn[value] = disposable; + } + + private IObserver<int> _observer; + + public void OnNext(int value) + { + _observer.OnNext(value); + + IDisposable disconnect; + if (_disposeOn.TryGetValue(value, out disconnect)) + disconnect.Dispose(); + } + + public void OnError(Exception exception) + { + _observer.OnError(exception); + } + + public void OnCompleted() + { + _observer.OnCompleted(); + } + + public IDisposable Subscribe(IObserver<int> observer) + { + _subscribeCount++; + _observer = observer; + return Disposable.Create(() => { _disposed = true; }); + } + + private int _subscribeCount; + private bool _disposed; + + public int SubscribeCount { get { return _subscribeCount; } } + public bool Disposed { get { return _disposed; } } + } +} |