public void CallSchedulerFactoryOnCreation() { var schedulerFactoryCalls = 0; var schedulerFactory = new Func <IScheduler>(() => { schedulerFactoryCalls++; return(null); }); var sut = new WaitForDispatcherScheduler(schedulerFactory); Assert.Equal(1, schedulerFactoryCalls); }
public void SuccessfulFactory_UsesCachedScheduler() { var schedulerFactoryCalls = 0; var schedulerFactory = new Func <IScheduler>(() => { schedulerFactoryCalls++; return(CurrentThreadScheduler.Instance); }); var sut = new WaitForDispatcherScheduler(schedulerFactory); sut.Schedule(() => { }); Assert.Equal(1, schedulerFactoryCalls); }
public void FactoryThrowsException_ReCallsOnSchedule() { var schedulerFactoryCalls = 0; var schedulerFactory = new Func <IScheduler>(() => { schedulerFactoryCalls++; throw new InvalidOperationException(); }); var sut = new WaitForDispatcherScheduler(schedulerFactory); sut.Schedule(() => { }); Assert.Equal(2, schedulerFactoryCalls); }
public void FactoryThrowsArgumentNullException_FallsBackToCurrentThread() { IScheduler?schedulerExecutedOn = null; var schedulerFactory = new Func <IScheduler>(() => throw new ArgumentNullException()); var sut = new WaitForDispatcherScheduler(schedulerFactory); sut.Schedule <object>( null !, (scheduler, state) => { schedulerExecutedOn = scheduler; return(Disposable.Empty); }); Assert.Equal(CurrentThreadScheduler.Instance, schedulerExecutedOn); }
public void FactoryThrowsArgumentNullException_FallsBackToCurrentThread() { IScheduler schedulerExecutedOn = null; #pragma warning disable CA2208 // Instantiate argument exceptions correctly var schedulerFactory = new Func <IScheduler>(() => throw new ArgumentNullException()); #pragma warning restore CA2208 // Instantiate argument exceptions correctly var sut = new WaitForDispatcherScheduler(schedulerFactory); sut.Schedule <object>( null, (scheduler, state) => { schedulerExecutedOn = scheduler; return(Disposable.Empty); }); Assert.Equal(CurrentThreadScheduler.Instance, schedulerExecutedOn); }