public void WithAlreadyAddedAlarm_ShouldNotAddAgain()
        {
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.CurrentAlarms.Should().HaveCount(1);
        }
        public void WithAlreadyAddedAlarm_ShouldNotRaiseChangedEventOnSecondTry()
        {
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.MonitorEvents();
            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.ShouldNotRaise("AlarmsChanged");
        }
        public void Twice_ShouldAddBothAlarms()
        {
            Alarm         secondAlarm  = CreateRandomAlarm();
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.AddAlarm(secondAlarm);
            alarmManager.CurrentAlarms.Should().ContainInOrder(FirstAlarm, secondAlarm);
        }
        public void OnManagerWithoutPlugin_ShouldExposeEmptyEnumerable()
        {
            IAlarmManager alarmManager = CreateAlarmManager();

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.CurrentAlarms.Should().BeEmpty();
        }
        public void WithAlarm_ShouldExposeAddedAlarmAsCurrent()
        {
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.CurrentAlarms.Should().OnlyContain(a => Equals(a, FirstAlarm));
        }
예제 #6
0
        public void HasErrors_OnManagerWithWarningAlarm_ShouldReturnFalse()
        {
            FirstAlarm.Type = AlarmType.Warning;
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.HasErrors.Should().BeFalse();
        }
예제 #7
0
        public void HasErrors_OnManagerWithErrorAlarm_ShouldReturnTrue()
        {
            FirstAlarm.Type = AlarmType.Error;
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.HasErrors.Should().BeTrue();
        }
        public void OnManagerWithoutPlugin_ShouldNotRaiseAlarmsChangedEvent()
        {
            IAlarmManager alarmManager = CreateAlarmManager();

            alarmManager.MonitorEvents();
            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.ShouldNotRaise("AlarmsChanged");
        }
        public void WithAlarm_ShouldRaiseAlarmsChangedEvent()
        {
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.MonitorEvents();
            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.ShouldRaise("AlarmsChanged");
        }
        public void OnManagerWithCurrentAlarm_ShouldNotExposeAlarmAsCurrentAnymore()
        {
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.AcknowledgeAlarms();
            alarmManager.CurrentAlarms.Should().BeEmpty();
        }
        public void OnManagerWithCurrentAlarm_ShouldExposeAlarmAsHistoric()
        {
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(FirstAlarm);
            alarmManager.AcknowledgeAlarms();
            alarmManager.HistoricAlarms.Should().Contain(FirstAlarm);
        }
        public void HasAlarms_WhenRemoveAlarm_ShouldRemoveTheRightOne()
        {
            var firstAlarm = new Alarm {
                AlarmId = 1
            };
            var secondAlarm = new Alarm {
                AlarmId = 2
            };
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(firstAlarm);
            alarmManager.AddAlarm(secondAlarm);

            alarmManager.RemoveAlarm(secondAlarm);

            alarmManager.CurrentAlarms.Should().Contain(firstAlarm);
            alarmManager.CurrentAlarms.Should().NotContain(secondAlarm);
        }
        public void NonResettableAlarm_WhenRemoveAlarm_AlarmShouldBeGone()
        {
            var alarm = new Alarm {
                IsResettable = false
            };
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(alarm);

            alarmManager.RemoveAlarm(alarm);

            alarmManager.CurrentAlarms.Should().BeEmpty();
        }
        public void NonResettableAlarm_AlarmsAcknowledged_NonResettableAlarmShouldStay()
        {
            var alarm = new Alarm {
                IsResettable = false
            };
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(alarm);

            alarmManager.AcknowledgeAlarms();

            alarmManager.CurrentAlarms.Should().NotBeEmpty();
        }
        public void HasAlarms_WhenRemoveAlarmUsingId_ShouldRemoveAlarm()
        {
            var alarm = new Alarm {
                AlarmId = 777, Source = "Test"
            };
            IAlarmManager alarmManager = CreateAlarmManager(new InMemoryManageCurrentAlarmsPlugin());

            alarmManager.AddAlarm(alarm);

            alarmManager.RemoveAlarm("Test", 777);

            alarmManager.CurrentAlarms.Should().BeEmpty();
        }
예제 #16
0
        public override string Speak()
        {
            base.Speak();
            ConversationIsOver = true;

            Dialog phrase = CurrentDialog;

            String alarmType = phrase.GetPropertyValue("SubCommand");

            if (alarmType.Equals("Time"))
            {
                // A specific time has been requested
                SamiDateTime alarmTime     = ParseTime(phrase.GetPropertyValue("Time"));
                String       alarmResponse = "Your " + alarmTime.Time.ToShortTimeString() + " alarm is complete.";
                _manager.AddAlarm(alarmResponse, alarmTime);
                return("The alarm has been set to " + alarmTime.Time.ToShortTimeString());
            }
            else if (alarmType.Equals("Duration"))
            {
                // A duration has been requested.
                int      seconds = Convert.ToInt32(phrase.GetPropertyValue("Seconds"));
                int      minutes = Convert.ToInt32(phrase.GetPropertyValue("Minutes"));
                int      hours   = Convert.ToInt32(phrase.GetPropertyValue("Hours"));
                TimeSpan ts      = new TimeSpan(hours, minutes, seconds);
                if (ts.TotalSeconds == 0)
                {
                    return("");
                }
                else
                {
                    String alarmResponse = "Your " + SayTime(ts, false) + " timer is complete";
                    _manager.AddAlarm(alarmResponse, ts);
                    return("The timer has been set to " + SayTime(ts, true) + ".");
                }
            }
            else if (alarmType.Equals("List"))
            {
                List <ScheduledAlarm> alarms = _manager.GetScheduledAlarms();
                String response = "You have " + alarms.Count;
                if (alarms.Count == 1)
                {
                    response += " alarm scheduled. ";
                }
                else
                {
                    response += " alarms scheduled. ";
                }

                if (alarms.Count > 0)
                {
                    List <String> alarmStatus = new List <String>();
                    foreach (ScheduledAlarm alarm in alarms)
                    {
                        if (alarm.IsDurationAlarm)
                        {
                            alarmStatus.Add(SayTime(alarm.TimeLeft, true) + " left on your " + SayTime(alarm.TotalDuration, false) + " alarm");
                        }
                        else
                        {
                            alarmStatus.Add(SayTime(alarm.TimeLeft, true) + " left on your " + alarm.AlarmTime.ToShortTimeString() + " alarm");
                        }
                    }
                    response += "You have " + SayList(alarmStatus);
                }
                return(response);
            }
            else if (alarmType.Equals("DeleteLast"))
            {
                ScheduledAlarm deletedAlarm = _manager.DeleteLastAlarm();
                if (deletedAlarm == null)
                {
                    return("There are no alarms to delete.");
                }
                else
                {
                    if (deletedAlarm.IsDurationAlarm)
                    {
                        return("Deleted the " + SayTime(deletedAlarm.TotalDuration, false) + " alarm");
                    }
                    else
                    {
                        return("Deleted the " + deletedAlarm.AlarmTime.ToShortTimeString() + " alarm");
                    }
                }
            }
            else if (alarmType.Equals("DeleteAll"))
            {
                if (_manager.DeleteAllAlarms())
                {
                    return("Deleted all alarms.");
                }
                else
                {
                    return("There are no alarms to delete.");
                }
            }
            else
            {
                return("The alarm type " + alarmType + " is not valid.");
            }
        }