public void EventsSeparatedByInterval() { var testScheduler = new TestScheduler(); var results = testScheduler.CreateObserver <Unit>(); var logWriteNotifications = testScheduler.CreateHotObservable( OnNext(102, 1L), OnNext(103, 1L), OnNext(301, 1L), OnNext(302, 1L) ); const int threshold = 1; var factory = new WriteThresholdNotification(threshold, TimeSpan.FromTicks(99), testScheduler); var observable = factory.Create(logWriteNotifications); observable.Subscribe(results); testScheduler.AdvanceBy(500); ReactiveAssert.AreElementsEqual(new[] { OnNext <Unit>(103, _ => true), OnNext <Unit>(302, _ => true) }, results.Messages); }
public void NoWritesNoCompacts() { var testScheduler = new TestScheduler(); var results = testScheduler.CreateObserver <Unit>(); var factory = new WriteThresholdNotification(1, TimeSpan.FromTicks(100), testScheduler); var observable = factory.Create(Observable.Never <long>()); observable.Subscribe(results); testScheduler.AdvanceBy(1000); Assert.AreEqual(0, results.Messages.Count); }
public void SingleWriteBelowThresholdNoCompacts() { var testScheduler = new TestScheduler(); var results = testScheduler.CreateObserver <Unit>(); var logWriteNotifications = testScheduler.CreateHotObservable(OnNext(1u, 99L)); const long threshold = 100; var factory = new WriteThresholdNotification(threshold, TimeSpan.FromTicks(100), testScheduler); var observable = factory.Create(logWriteNotifications); observable.Subscribe(results); testScheduler.AdvanceBy(1000); Assert.AreEqual(0, results.Messages.Count); }
public void AccumulateAboveThresholdCompacts() { var testScheduler = new TestScheduler(); var results = testScheduler.CreateObserver <Unit>(); var logWriteNotifications = testScheduler.CreateHotObservable( OnNext(101, 101L), OnNext(102, 101L) ); const int threshold = 200; var factory = new WriteThresholdNotification(threshold, TimeSpan.FromTicks(3), testScheduler); var observable = factory.Create(logWriteNotifications); observable.Subscribe(results); testScheduler.AdvanceBy(103); ReactiveAssert.AreElementsEqual(new[] { OnNext <Unit>(102, _ => true) }, results.Messages); }
public void DontCompactTooFrequently() { var testScheduler = new TestScheduler(); var results = testScheduler.CreateObserver <Unit>(); var logWriteNotifications = testScheduler.CreateHotObservable( OnNext(101, 1L), OnNext(102, 1L), OnNext(103, 1L), OnNext(104, 1L) ); const int threshold = 1; var factory = new WriteThresholdNotification(threshold, TimeSpan.FromTicks(8), testScheduler); var observable = factory.Create(logWriteNotifications); observable.Subscribe(results); testScheduler.AdvanceTo(1000); ReactiveAssert.AreElementsEqual(new[] { OnNext <Unit>(102, _ => true) }, results.Messages); }