public void Transition_PowerMode() { var pmc = new PowerModeContext(Power.Mode); var count = 0; var dummy = 0; Power.Configure(pmc); using (var src = new WakeableTimer()) using (src.Subscribe(Synchronous.AsTask(() => ++ dummy))) { src.PowerModeChanged += (s, e) => ++ count; src.Start(); pmc.Mode = PowerModes.Suspend; Assert.That(Power.Mode, Is.EqualTo(PowerModes.Suspend)); Assert.That(src.State, Is.EqualTo(TimerState.Suspend)); pmc.Mode = PowerModes.Resume; Assert.That(Power.Mode, Is.EqualTo(PowerModes.Resume)); Assert.That(src.State, Is.EqualTo(TimerState.Run)); src.Stop(); Assert.That(Power.Mode, Is.EqualTo(PowerModes.Resume)); Assert.That(src.State, Is.EqualTo(TimerState.Stop)); } }
public void PowerMode_Scenario() { using (var timer = new WakeableTimer()) { var count = 0; var chagned = 0; var power = new PowerModeContext(Power.Mode); Power.Configure(power); timer.Interval = TimeSpan.FromMilliseconds(200); timer.PowerModeChanged += (s, e) => ++ chagned; timer.Subscribe(() => ++ count); timer.Start(); Task.Delay(50).Wait(); power.Mode = PowerModes.Suspend; Task.Delay(100).Wait(); power.Mode = PowerModes.Resume; Task.Delay(150).Wait(); timer.Stop(); Assert.That(Power.Mode, Is.EqualTo(PowerModes.Resume)); Assert.That(chagned, Is.EqualTo(2), nameof(timer.PowerModeChanged)); } }
public void Monitor_PowerModeChanged() { var power = new PowerModeContext(PowerModes.Resume); Power.Configure(power); using (var mon = Create()) { var count = 0; var cts = new CancellationTokenSource(); mon.Interval = TimeSpan.FromMilliseconds(100); mon.Uri = new Uri("http://www.example.com/"); mon.Subscribe((_, __) => { count++; cts.Cancel(); }); mon.Start(mon.Interval); power.Mode = PowerModes.Suspend; Task.Delay(200).Wait(); Assert.That(count, Is.EqualTo(0)); power.Mode = PowerModes.Resume; Assert.That(Wait.For(cts.Token), "Timeout"); mon.Stop(); Assert.That(count, Is.EqualTo(1)); } }
public void Transition_PowerMode() => Create(src => { var pmc = new PowerModeContext(Power.Mode); var count = 0; var dummy = 0; Power.Configure(pmc); src.PowerModeChanged += (s, e) => ++ count; src.Subscribe(() => ++ dummy); src.Start(); pmc.Mode = PowerModes.Suspend; Assert.That(Power.Mode, Is.EqualTo(PowerModes.Suspend)); Assert.That(src.State, Is.EqualTo(TimerState.Suspend)); pmc.Mode = PowerModes.Resume; Assert.That(Power.Mode, Is.EqualTo(PowerModes.Resume)); Assert.That(src.State, Is.EqualTo(TimerState.Run)); src.Stop(); Assert.That(src.State, Is.EqualTo(TimerState.Stop)); Assert.That(Power.Mode, Is.EqualTo(PowerModes.Resume)); });
public int Subscribe(bool ignore) { var mock = new PowerModeContext(Power.Mode); Power.Configure(mock); mock.IgnoreStatusChanged = ignore; var count = 0; var powewr = Power.Subscribe(() => ++ count); mock.Mode = PowerModes.Resume; // Resume -> Resume mock.Mode = PowerModes.StatusChange; // Resume -> StatusChange mock.Mode = PowerModes.Suspend; // StatusChange -> Suspend mock.Mode = PowerModes.Suspend; // Suspend -> Suspend mock.Mode = PowerModes.StatusChange; // Suspend -> StatusChange mock.Mode = PowerModes.Resume; // StatusChange -> Resume powewr.Dispose(); mock.Mode = PowerModes.Suspend; mock.Mode = PowerModes.Resume; return(count); }
public int ModeChanged(bool ignore) { var count = 0; PowerModeChangedEventHandler handler = (s, e) => ++ count; var mock = new PowerModeContext(Power.Mode); Power.Configure(mock); mock.IgnoreStatusChanged = ignore; Power.ModeChanged += handler; mock.Mode = PowerModes.Resume; // Resume -> Resume mock.Mode = PowerModes.StatusChange; // Resume -> StatusChange mock.Mode = PowerModes.Suspend; // StatusChange -> Suspend mock.Mode = PowerModes.Suspend; // Suspend -> Suspend mock.Mode = PowerModes.StatusChange; // Suspend -> StatusChange mock.Mode = PowerModes.Resume; // StatusChange -> Resume Power.ModeChanged -= handler; mock.Mode = PowerModes.Suspend; mock.Mode = PowerModes.Resume; return(count); }