public void isFunctionActiveTodayTest3()
        {
            IZoneServer zoneServer = null;

            // (1) Empty day list
            List <DayOfWeek> _dayOfWeeks1 = new List <DayOfWeek>();
            AlarmFunction    function1    = new AlarmFunction(
                SimpleId.NewGuid(),
                new Address(100, 1), new Address(100, 1), 50,
                new TimeSpan(6, 0, 0), new TimeSpan(0, 45, 0),
                _dayOfWeeks1);
            Dictionary <int, IAudioDriver> audioDrivers = null;
            ConcreteAlarmFunction          target1      = new ConcreteAlarmFunction(function1, zoneServer, audioDrivers);

            // (2) Full day list
            List <DayOfWeek> _dayOfWeeks2 = new List <DayOfWeek>();

            _dayOfWeeks2.Add(DayOfWeek.Monday);
            _dayOfWeeks2.Add(DayOfWeek.Tuesday);
            _dayOfWeeks2.Add(DayOfWeek.Wednesday);
            _dayOfWeeks2.Add(DayOfWeek.Thursday);
            _dayOfWeeks2.Add(DayOfWeek.Friday);
            _dayOfWeeks2.Add(DayOfWeek.Saturday);
            _dayOfWeeks2.Add(DayOfWeek.Sunday);
            AlarmFunction function2 = new AlarmFunction(
                SimpleId.NewGuid(),
                new Address(100, 1), new Address(100, 1), 50,
                new TimeSpan(6, 0, 0), new TimeSpan(0, 45, 0),
                _dayOfWeeks2);
            ConcreteAlarmFunction target2 = new ConcreteAlarmFunction(function2, zoneServer, audioDrivers);

            // Monday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 7, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 7, 12, 0, 0)));

            // Tuesday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 8, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 8, 12, 0, 0)));

            // Wednesday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 9, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 9, 12, 0, 0)));

            // Thursday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 10, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 10, 12, 0, 0)));

            // Friday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 11, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 11, 12, 0, 0)));

            // Saturday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 12, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 12, 12, 0, 0)));

            // Sunday
            Assert.AreEqual(false, target1.isFunctionActiveToday(new DateTime(2009, 9, 13, 12, 0, 0)));
            Assert.AreEqual(true, target2.isFunctionActiveToday(new DateTime(2009, 9, 13, 12, 0, 0)));
        }
 public void ConcreteAlarmFunctionConstructorTest2()
 {
     List <DayOfWeek> _dayOfWeeks = new List <DayOfWeek>();
     AlarmFunction    function    = new AlarmFunction(
         SimpleId.NewGuid(),
         new Address(100, 1), new Address(100, 1), 50,
         new TimeSpan(6, 0, 0), new TimeSpan(0, 45, 0),
         _dayOfWeeks);
     IZoneServer zoneServer = null;
     Dictionary <int, IAudioDriver> audioDrivers = null;
     ConcreteAlarmFunction          target       = new ConcreteAlarmFunction(function, zoneServer, audioDrivers);
 }
 public void ConcreteAlarmFunctionConstructorTest1()
 {
     try
     {
         AlarmFunction function   = null;
         IZoneServer   zoneServer = null;
         Dictionary <int, IAudioDriver> audioDrivers = null;
         ConcreteAlarmFunction          target       = new ConcreteAlarmFunction(function, zoneServer, audioDrivers);
     }
     catch (FunctionServerException)
     {
         return;
     }
     Assert.Fail("'FunctionServerException' Exception expected!");
 }
        public void isFunctionActiveTodayTest1()
        {
            List <DayOfWeek> _dayOfWeeks = new List <DayOfWeek>();
            AlarmFunction    function    = new AlarmFunction(
                SimpleId.NewGuid(),
                new Address(100, 1), new Address(100, 1), 50,
                new TimeSpan(6, 0, 0), new TimeSpan(0, 45, 0),
                _dayOfWeeks);
            IZoneServer zoneServer = null;
            Dictionary <int, IAudioDriver> audioDrivers = null;
            ConcreteAlarmFunction          target       = new ConcreteAlarmFunction(function, zoneServer, audioDrivers);
            DateTime aktTime = DateTime.Now;
            bool     actual  = target.isFunctionActiveToday(aktTime);

            Assert.AreEqual(false, actual);
        }
        public void calculateFunctionTest4()
        {
            // (1) Day list: Monday, Wednesday, Friday, Sunday
            // (1) Function: AlarmTime=10:00, AlarmDuration=01:45
            #region Function1
            List <DayOfWeek> _dayOfWeeks1 = new List <DayOfWeek>();
            _dayOfWeeks1.Add(DayOfWeek.Monday);
            _dayOfWeeks1.Add(DayOfWeek.Wednesday);
            _dayOfWeeks1.Add(DayOfWeek.Friday);
            _dayOfWeeks1.Add(DayOfWeek.Sunday);
            AlarmFunction function1 = new AlarmFunction(
                SimpleId.NewGuid(),
                new Address(100, 1), new Address(100, 3), 50,
                new TimeSpan(10, 0, 0), new TimeSpan(1, 45, 0),
                _dayOfWeeks1);
            ZoneServerMock zoneServer1 = new ZoneServerMock();
            Dictionary <int, IAudioDriver> audioDrivers = null;
            ConcreteAlarmFunction          target1      = new ConcreteAlarmFunction(function1, zoneServer1, audioDrivers);
            #endregion

            // (2) Day list: Tuesday, Thursday, Saturday, Sunday
            // (2) Function: AlarmTime=10:00, AlarmDuration=01:45
            #region Function2
            List <DayOfWeek> _dayOfWeeks2 = new List <DayOfWeek>();
            _dayOfWeeks2.Add(DayOfWeek.Tuesday);
            _dayOfWeeks2.Add(DayOfWeek.Thursday);
            _dayOfWeeks2.Add(DayOfWeek.Saturday);
            _dayOfWeeks2.Add(DayOfWeek.Sunday);
            AlarmFunction function2 = new AlarmFunction(
                SimpleId.NewGuid(),
                new Address(100, 1), new Address(100, 6), 50,
                new TimeSpan(10, 0, 0), new TimeSpan(1, 45, 0),
                _dayOfWeeks2);
            ZoneServerMock        zoneServer2 = new ZoneServerMock();
            ConcreteAlarmFunction target2     = new ConcreteAlarmFunction(function2, zoneServer2, audioDrivers);
            #endregion

            ZoneState zoneStateOff1 = new ZoneState(new Address(100, 2), false, 20, ZoneQuality.Online);
            zoneStateOff1.LastUpdate = new DateTime(2009, 9, 12, 23, 0, 0);
            ZoneState zoneStateOn = new ZoneState(new Address(100, 2), true, 20, ZoneQuality.Online);
            zoneStateOn.LastUpdate = new DateTime(2009, 9, 12, 23, 5, 0);
            ZoneState zoneStateOff2 = new ZoneState(new Address(100, 2), false, 20, ZoneQuality.Online);
            zoneStateOff2.LastUpdate = new DateTime(2009, 9, 12, 23, 10, 0);

            // Sunday (13.9.2009 11:00)
            zoneServer1.distributeZoneState(zoneStateOff1);
            zoneServer1.distributeZoneState(zoneStateOn);    // sets the member LastChangeToON
            zoneServer1.distributeZoneState(zoneStateOff2);
            target1.calculateFunction(new DateTime(2009, 9, 13, 11, 0, 0));

            zoneServer2.distributeZoneState(zoneStateOff1);
            zoneServer2.distributeZoneState(zoneStateOn);                     // sets the member LastChangeToON
            zoneServer2.distributeZoneState(zoneStateOff2);
            target2.calculateFunction(new DateTime(2009, 9, 13, 11, 44, 59)); // last change before functions ends

            Assert.AreEqual(1, zoneServer1._monitoredZones.Count);
            Assert.AreEqual(1, zoneServer2._monitoredZones.Count);
            Assert.AreEqual(1, zoneServer1.ZoneStates.Count);  // 1 command has been sent
            Assert.AreEqual(true, zoneServer1.ZoneStates[new Address(100, 1)].PowerStatus);
            Assert.AreEqual(new Address(100, 3), zoneServer1.ZoneStates[new Address(100, 1)].Source);
            Assert.AreEqual(1, zoneServer2.ZoneStates.Count);  // 1 command has been sent
            Assert.AreEqual(true, zoneServer2.ZoneStates[new Address(100, 1)].PowerStatus);
            Assert.AreEqual(new Address(100, 6), zoneServer2.ZoneStates[new Address(100, 1)].Source);
            zoneServer1.ClearZoneStateList();
            zoneServer2.ClearZoneStateList();
        }