public void ShouldSynchronizeCallsToInnerInstanceWithMonitor()
        {
            //GIVEN
            var useCases = Substitute.For <UseCases>();
            var proxy    = new SynchronizedUseCases(useCases);
            var sender   = Any.Object();
            var events   = Any.Instance <RoutedEventArgs>();
            var path     = Any.Instance <ChangedPath>();

            proxy.AssertSynchronizes(useCases, cases => cases.CopyFileToClipboard(), Blocking.MonitorOn(proxy._syncRoot));
            proxy.AssertSynchronizes(useCases, cases => cases.Initialize(), Blocking.MonitorOn(proxy._syncRoot));
            proxy.AssertSynchronizes(useCases, cases => cases.OpenFolder(), Blocking.MonitorOn(proxy._syncRoot));
            proxy.AssertSynchronizes(useCases, cases => cases.OnChanged(path), Blocking.MonitorOn(proxy._syncRoot));
        }
 private PathChangesObserver FilteredWith(string filters, SynchronizedUseCases applicationUseCases)
 {
     return(new FilteringObserver(applicationUseCases, filters));
 }