static void Main(string[] args) { var observer = new CustomObserver(); var goodObservable = new CustomSequence(new[] { 1, 2, 3, 4, 5 }); var badObservable = new CustomSequence(null); using (IDisposable subscription = goodObservable.Subscribe(observer)) { } using (IDisposable subscription = goodObservable.SubscribeOn(TaskPoolScheduler.Default).Subscribe(observer)) { Thread.Sleep(TimeSpan.FromMilliseconds(100)); Console.WriteLine("Press ENTER to continue"); Console.ReadLine(); } using (IDisposable subscription = badObservable.SubscribeOn(TaskPoolScheduler.Default).Subscribe(observer)) { Thread.Sleep(TimeSpan.FromMilliseconds(100)); Console.WriteLine("Press ENTER to continue"); Console.ReadLine(); } }
static void Main(string[] args) { var observer = new CustomObserver(); var goodObservable = new CustomSequence(new[] { 1, 2, 3, 4, 5 }); var badObservable = new CustomSequence(null); using (IDisposable sunscription = goodObservable.Subscribe(observer)) { } WriteLine($"Thread Id: {CurrentThread.ManagedThreadId}. Is Threadpool thread: {CurrentThread.IsThreadPoolThread}"); using (IDisposable subscription = goodObservable.SubscribeOn(TaskPoolScheduler.Default).Subscribe(observer)) { Sleep(TimeSpan.FromMilliseconds(100)); WriteLine("Press ENTER to continue"); ReadLine(); } using (IDisposable subscription = badObservable.SubscribeOn(TaskPoolScheduler.Default).Subscribe(observer)) { Sleep(TimeSpan.FromMilliseconds(100)); WriteLine("Press ENTER to continue"); ReadLine(); } }
public void Logger_Write_Calls_For_Enter_Method() { // Arrange var stub = new StubILogWriter(); var customObserver = new CustomObserver(); // Providing custom observer to the stub stub.InstanceObserver = customObserver; // Act ILogWriter logWriter = stub; logWriter.Write("Message"); // Assert Assert.That(customObserver.CalledMethodName, Is.StringContaining("ILogWriter.Write")); Assert.That(customObserver.CalledMethodArgument, Is.EqualTo("Message")); }