Ejemplo n.º 1
0
        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));
                }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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));
        });
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }