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); }
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(); }