public async Task TimerConditionSuccess()
        {
            LoggerFactoryWrapper.LoggerFactory = new LoggerFactory();
            //LoggerFactoryWrapper.LoggerFactory.AddFile("Logs/myapp-{Date}.txt", LogLevel.Debug);
            //LoggerFactoryWrapper.LoggerFactory.AddDebug(LogLevel.Debug);
            var logger = LoggerFactoryWrapper.CreateLogger <AggregatedServiceTest>();
            //LoggerFactoryWrapper.LoggerFactory.AddConsole(LogLevel.Debug);

            var data = new MockData();

            var startTime = DateTime.Now.TimeOfDay;

            data.RuleConfigurations = new List <ToggleAutomationRuleConfiguration>()
            {
                new ToggleAutomationRuleConfiguration()
                {
                    Id             = "Rule1",
                    DeviceToToggle = "TestDevice2",
                    TimerCondition = new TimerConditionConfiguration()
                    {
                        Intervals = new TimerConditionIntervalConfiguration[]
                        {
                            new TimerConditionIntervalConfiguration()
                            {
                                Start = startTime.Add(TimeSpan.FromMilliseconds(300)).ToString(),
                                End   = startTime.Add(TimeSpan.FromMilliseconds(800)).ToString()
                            }
                        }
                    }
                }
            };

            var container = GetMockContainer(data);

            var deviceToTrigger = data.AllSubDevices.First(d => d.Id == "TestDevice2") as TestToggleDevice;

            container.Service.Init(data.RuleConfigurations.ToArray());

            await Task.Delay(10);

            logger.LogDebug($"First assert (False) - RealTime - {DateTime.Now.TimeOfDay}");
            Assert.IsFalse(deviceToTrigger.Toggled);

            await Task.Delay(startTime + TimeSpan.FromMilliseconds(650) - DateTime.Now.TimeOfDay);

            logger.LogDebug($"Second assert (True) - RealTime - {DateTime.Now.TimeOfDay}");
            Assert.IsTrue(deviceToTrigger.Toggled);

            await Task.Delay(startTime + TimeSpan.FromMilliseconds(1150) - DateTime.Now.TimeOfDay);

            logger.LogDebug($"Third assert (False) - RealTime - {DateTime.Now.TimeOfDay}");
            Assert.IsFalse(deviceToTrigger.Toggled);
        }
Exemplo n.º 2
0
        public TimerCondition(TimerConditionInterval[] intervals)
        {
            _logger = LoggerFactoryWrapper.CreateLogger <TimerCondition>();

            if (intervals == null || intervals.Length == 0)
            {
                throw new ArgumentException("Intervals cant be null or empty");
            }

            ValidateNoOverlappingConditions(intervals);

            // Order the intervals
            _intervals = intervals.OrderBy(i => i).ToList();

            Start();
        }