1 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. 2 3 using System.Collections.Generic; 4 using System.Reactive; 5 using System; 6 7 namespace Microsoft.Reactive.Testing 8 { 9 class MockObserver<T> : ITestableObserver<T> 10 { 11 TestScheduler scheduler; 12 List<Recorded<Notification<T>>> messages; 13 MockObserver(TestScheduler scheduler)14 public MockObserver(TestScheduler scheduler) 15 { 16 if (scheduler == null) 17 throw new ArgumentNullException("scheduler"); 18 19 this.scheduler = scheduler; 20 this.messages = new List<Recorded<Notification<T>>>(); 21 } 22 OnNext(T value)23 public void OnNext(T value) 24 { 25 messages.Add(new Recorded<Notification<T>>(scheduler.Clock, Notification.CreateOnNext<T>(value))); 26 } 27 OnError(Exception exception)28 public void OnError(Exception exception) 29 { 30 messages.Add(new Recorded<Notification<T>>(scheduler.Clock, Notification.CreateOnError<T>(exception))); 31 } 32 OnCompleted()33 public void OnCompleted() 34 { 35 messages.Add(new Recorded<Notification<T>>(scheduler.Clock, Notification.CreateOnCompleted<T>())); 36 } 37 38 public IList<Recorded<Notification<T>>> Messages 39 { 40 get { return messages; } 41 } 42 } 43 } 44