public void RunSaveYearlyOrRunOnceSettingsTest(bool isRunOnce)
        {
            SchedulerSettings settings = new SchedulerSettings();
            mock.Setup(mgr => mgr.Save(It.IsAny<SchedulerSettings>())).Callback<SchedulerSettings>(s =>
            {
                if (isRunOnce)
                {
                    Assert.AreEqual(ScheduleType.Once, s.Type);
                }
                else
                {
                    Assert.AreEqual(ScheduleType.Yearly, s.Type);
                }

                Assert.AreEqual(ScheduledAction.Shutdown, s.Action);
                Assert.AreEqual(new DateTime(2013, 1, 29), s.Time.Value.Date);
                Assert.AreEqual(new TimeSpan(20, 30, 00), s.Time.Value.TimeOfDay);
            });

            SchedulerViewModel viewModel = new SchedulerViewModel(mock.Object);
            viewModel.EnableScheduler = true;
            viewModel.Action = SchedulerViewModel.SHUTDOWN;
            viewModel.Type = isRunOnce ? SchedulerViewModel.ONCE : SchedulerViewModel.YEARLY;
            viewModel.SelectedTime = new DateTime(1, 1, 1, 20, 30, 40);
            viewModel.SelectedDate = new DateTime(2013, 1, 29, 20, 30, 40);
            viewModel.SaveSettings();
        }
        public void TestSaveNoActionSettings()
        {
            SchedulerSettings settings = new SchedulerSettings();
            mock.Setup(mgr => mgr.Save(It.IsAny<SchedulerSettings>())).Callback<SchedulerSettings>(s =>
                {
                    Assert.AreEqual(ScheduleType.None, s.Type);
                });

            SchedulerViewModel viewModel = new SchedulerViewModel(mock.Object);
            viewModel.EnableScheduler = false;
            viewModel.SaveSettings();
        }
        public void TestSaveRestartDailySettings()
        {
            SchedulerSettings settings = new SchedulerSettings();
            mock.Setup(mgr => mgr.Save(It.IsAny<SchedulerSettings>())).Callback<SchedulerSettings>(s =>
                {
                    Assert.AreEqual(ScheduleType.Daily, s.Type);
                    Assert.AreEqual(ScheduledAction.Restart, s.Action);
                    Assert.AreEqual(new TimeSpan(20, 30, 00), s.Time.Value.TimeOfDay);
                });

            SchedulerViewModel viewModel = new SchedulerViewModel(mock.Object);
            viewModel.EnableScheduler = true;
            viewModel.Action = SchedulerViewModel.RESTART;
            viewModel.Type = SchedulerViewModel.DAILY;
            viewModel.SelectedTime = new DateTime(1, 1, 1, 20, 30, 40);
            viewModel.SaveSettings();
        }
        public void TestSaveLogOutMonthlySettings()
        {
            SchedulerSettings settings = new SchedulerSettings();
            mock.Setup(mgr => mgr.Save(It.IsAny<SchedulerSettings>())).Callback<SchedulerSettings>(s =>
            {
                Assert.AreEqual(ScheduleType.Monthly, s.Type);
                Assert.AreEqual(ScheduledAction.LogOut, s.Action);
                Assert.AreEqual(new TimeSpan(20, 30, 00), s.Time.Value.TimeOfDay);
                Assert.AreEqual(20, s.DayOfMonth);
            });

            SchedulerViewModel viewModel = new SchedulerViewModel(mock.Object);
            viewModel.EnableScheduler = true;
            viewModel.Action = SchedulerViewModel.LOGOUT;
            viewModel.Type = SchedulerViewModel.MONTHLY;
            viewModel.SelectedTime = new DateTime(1, 1, 1, 20, 30, 40);
            viewModel.SelectedDayOfMonth = 20;
            viewModel.SaveSettings();
        }