public void ObserveNotifications_ShouldNoBeSubject(SynchronizeFilesWhenFileChanged sut) { (sut.ObserveNotifications() as ISubject<IFileNotification[]>).Should().BeNull("IObservable<T> is also a ISubject<T>, but it should not"); }
public void ObserveFileNotifications_Start_WhenFileNotificationIsYield_ShouldCallSynchronize( [Frozen]TestScheduler scheduler, [Frozen(As = typeof(IObservable<MusicMirrorConfiguration>))]TestObservableWrapper<MusicMirrorConfiguration> configurationObservable, [Frozen]Mock<IFileObserverFactory> fileObserverFactory, SynchronizeFilesWhenFileChanged sut, MusicMirrorConfiguration configuration, IFileNotification[][] fileNotification) { //arrange configurationObservable.SetObservable(scheduler.CreateHotObservable(OnNext(Subscribed + 1, configuration))); var expectedNotifications = fileNotification.Select((f, i) => OnNext(Subscribed + i + 2, f)).ToArray(); var fileObserver = scheduler.CreateHotObservable(expectedNotifications); fileObserverFactory.Setup(f => f.GetFileObserver(configuration.SourcePath)).Returns(fileObserver); scheduler.Schedule(200.Ticks(), () => sut.Start()); //act var actual = scheduler.Start(() => sut.ObserveNotifications()); //assert var expected = expectedNotifications.Select(n => n.Value.Value); actual.Values().ShouldAllBeEquivalentTo(expected); }