| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright (c) The Avalonia Project. All rights reserved.
- // Licensed under the MIT license. See licence.md file in the project root for full license information.
- using System;
- using System.Collections.Generic;
- using System.Reactive.Disposables;
- namespace Avalonia.Styling.UnitTests
- {
- internal class TestSubject<T> : IObserver<T>, IObservable<T>
- {
- private readonly T _initial;
- private readonly List<IObserver<T>> _subscribers = new List<IObserver<T>>();
- public TestSubject(T initial)
- {
- _initial = initial;
- }
- public int SubscriberCount => _subscribers.Count;
- public void OnCompleted()
- {
- foreach (IObserver<T> subscriber in _subscribers.ToArray())
- {
- subscriber.OnCompleted();
- }
- }
- public void OnError(Exception error)
- {
- foreach (IObserver<T> subscriber in _subscribers.ToArray())
- {
- subscriber.OnError(error);
- }
- }
- public void OnNext(T value)
- {
- foreach (IObserver<T> subscriber in _subscribers.ToArray())
- {
- subscriber.OnNext(value);
- }
- }
- public IDisposable Subscribe(IObserver<T> observer)
- {
- _subscribers.Add(observer);
- observer.OnNext(_initial);
- return Disposable.Create(() => _subscribers.Remove(observer));
- }
- }
- }
|