public void TestTriggerStates()
        {
            Trigger trigger =
                new SimpleTrigger("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group,
                                  DateTime.Now.AddSeconds(100), DateTime.Now.AddSeconds(200), 2, TimeSpan.FromSeconds(2));

            trigger.ComputeFirstFireTimeUtc(null);
            Assert.AreEqual(TriggerState.None, fJobStore.GetTriggerState(null, trigger.Name, trigger.Group));
            fJobStore.StoreTrigger(null, trigger, false);
            Assert.AreEqual(TriggerState.Normal, fJobStore.GetTriggerState(null, trigger.Name, trigger.Group));

            fJobStore.PauseTrigger(null, trigger.Name, trigger.Group);
            Assert.AreEqual(TriggerState.Paused, fJobStore.GetTriggerState(null, trigger.Name, trigger.Group));

            fJobStore.ResumeTrigger(null, trigger.Name, trigger.Group);
            Assert.AreEqual(TriggerState.Normal, fJobStore.GetTriggerState(null, trigger.Name, trigger.Group));

            trigger = fJobStore.AcquireNextTrigger(null,
                                                   trigger.GetNextFireTimeUtc().Value.AddSeconds(10));
            Assert.IsNotNull(trigger);
            fJobStore.ReleaseAcquiredTrigger(null, trigger);
            trigger = fJobStore.AcquireNextTrigger(null,
                                                   trigger.GetNextFireTimeUtc().Value.AddSeconds(10));
            Assert.IsNotNull(trigger);
            Assert.IsNull(fJobStore.AcquireNextTrigger(null,
                                                       trigger.GetNextFireTimeUtc().Value.AddSeconds(10)));
        }
        public void TestRemoveCalendarWhenTriggersPresent()
        {
            // QRTZNET-29

            Trigger trigger = new SimpleTrigger("trigger1", "triggerGroup1", fJobDetail.Name, fJobDetail.Group,
                                                DateTime.Now.AddSeconds(100), DateTime.Now.AddSeconds(200), 2, TimeSpan.FromSeconds(2));

            trigger.ComputeFirstFireTimeUtc(null);
            ICalendar cal = new MonthlyCalendar();

            fJobStore.StoreTrigger(null, trigger, false);
            fJobStore.StoreCalendar(null, "cal", cal, false, true);

            fJobStore.RemoveCalendar(null, "cal");
        }
        public void TestGetFireTimeAfter_WithCalendar()
        {
            DailyCalendar dailyCalendar = new DailyCalendar("1:20", "14:50");
            SimpleTrigger simpleTrigger = new SimpleTrigger();

            simpleTrigger.RepeatInterval = TimeSpan.FromMilliseconds(10);
            simpleTrigger.RepeatCount    = 1;
            DateTime neverFireTime = TriggerUtils.GetEvenMinuteDateBefore(dailyCalendar.GetTimeRangeStartingTimeUtc(DateTime.Now));

            simpleTrigger.StartTimeUtc = neverFireTime;

            simpleTrigger.ComputeFirstFireTimeUtc(dailyCalendar);
            NullableDateTime fireTimeAfter = simpleTrigger.GetNextFireTimeUtc();

            Assert.IsNull(fireTimeAfter);
        }
        public void TestAcquireNextTrigger()
        {
            DateTime d        = DateTime.UtcNow;
            Trigger  trigger1 =
                new SimpleTrigger("trigger1", "triggerGroup1", fJobDetail.Name,
                                  fJobDetail.Group, d.AddSeconds(200),
                                  d.AddSeconds(200), 2, TimeSpan.FromSeconds(2));
            Trigger trigger2 =
                new SimpleTrigger("trigger2", "triggerGroup1", fJobDetail.Name,
                                  fJobDetail.Group, d.AddSeconds(-100),
                                  d.AddSeconds(20), 2, TimeSpan.FromSeconds(2));
            Trigger trigger3 =
                new SimpleTrigger("trigger1", "triggerGroup2", fJobDetail.Name,
                                  fJobDetail.Group, d.AddSeconds(100),
                                  d.AddSeconds(200), 2, TimeSpan.FromSeconds(2));

            trigger1.ComputeFirstFireTimeUtc(null);
            trigger2.ComputeFirstFireTimeUtc(null);
            trigger3.ComputeFirstFireTimeUtc(null);
            fJobStore.StoreTrigger(null, trigger1, false);
            fJobStore.StoreTrigger(null, trigger2, false);
            fJobStore.StoreTrigger(null, trigger3, false);

            Trigger t = fJobStore.AcquireNextTrigger(null, d.AddMilliseconds(10));

            Assert.IsNull(t);
            Assert.AreEqual(
                trigger2,
                fJobStore.AcquireNextTrigger(null, trigger1.GetNextFireTimeUtc().Value.AddSeconds(10)));
            Assert.AreEqual(
                trigger3,
                fJobStore.AcquireNextTrigger(null, trigger1.GetNextFireTimeUtc().Value.AddSeconds(10)));
            Assert.AreEqual(
                trigger1,
                fJobStore.AcquireNextTrigger(null, trigger1.GetNextFireTimeUtc().Value.AddSeconds(10)));
            Assert.IsNull(
                fJobStore.AcquireNextTrigger(null, trigger1.GetNextFireTimeUtc().Value.AddSeconds(10)));

            // because of trigger2
            Assert.AreEqual(1, fSignaler.fMisfireCount);

            // release trigger3
            fJobStore.ReleaseAcquiredTrigger(null, trigger3);
            Assert.AreEqual(
                trigger3,
                fJobStore.AcquireNextTrigger(null, trigger1.GetNextFireTimeUtc().Value.AddSeconds(10)));
        }