public void IsHome_EnoughTimeSinceYesterdaysInterval_IsHome() { // Arrange var timeIntervals = new List <TimeInterval>(); timeIntervals.Add(new TimeInterval(18, 0, 23, 59)); var config = new MowControlConfig() { TimeIntervals = timeIntervals, AverageWorkPerDayHours = 12, MaxHourlyThunderPercent = 0, MaxHourlyPrecipitaionMillimeter = 0 }; var systemTime = new TestSystemTime(new DateTime(2018, 6, 22, 1, 00, 0)); var powerSwitch = new TestPowerSwitch(true); var systemStartTime = systemTime.Now.AddDays(-1); var homeSensor = new TimeBasedHomeSensor(systemStartTime, config, powerSwitch, systemTime); // Act // Assert Assert.IsTrue(homeSensor.IsHome); }
public void IsHome_FirstCheck_IsHome() { // Arrange var timeIntervals = new List <TimeInterval>(); timeIntervals.Add(new TimeInterval(6, 0, 12, 0)); var config = new MowControlConfig() { TimeIntervals = timeIntervals, AverageWorkPerDayHours = 12, MaxHourlyThunderPercent = 0, MaxHourlyPrecipitaionMillimeter = 0 }; var systemTime = new TestSystemTime(new DateTime(2018, 6, 22, 6, 30, 0)); var powerSwitch = new TestPowerSwitch(true); var systemStartTime = systemTime.Now; var homeSensor = new TimeBasedHomeSensor(systemStartTime, config, powerSwitch, systemTime); // Act bool isHome = homeSensor.IsHome; // Assert Assert.IsTrue(isHome); }
public void IsHome_JustStoppedMowingAndOnItsWayHome_IsNotHome() { // Arrange var timeIntervals = new List <TimeInterval>(); timeIntervals.Add(new TimeInterval(6, 0, 12, 0)); var config = new MowControlConfig() { TimeIntervals = timeIntervals, AverageWorkPerDayHours = 12, MaxHourlyThunderPercent = 0, MaxHourlyPrecipitaionMillimeter = 0 }; var systemTime = new TestSystemTime(new DateTime(2018, 6, 22, 12, 15, 0)); var powerSwitch = new TestPowerSwitch(true); var systemStartTime = systemTime.Now.AddDays(-1); var homeSensor = new TimeBasedHomeSensor(systemStartTime, config, powerSwitch, systemTime); // Act bool isHome = homeSensor.IsHome; // First is always true // Assert Assert.IsFalse(isHome); }
public void IsHome_AfterAnIntervalWithPowerOff_IsStillHome() { // Arrange var timeIntervals = new List <TimeInterval>(); timeIntervals.Add(new TimeInterval(6, 0, 12, 0)); var config = new MowControlConfig() { TimeIntervals = timeIntervals, AverageWorkPerDayHours = 12, MaxHourlyThunderPercent = 0, MaxHourlyPrecipitaionMillimeter = 0 }; var systemTime = new TestSystemTime(new DateTime(2018, 6, 22, 11, 59, 0)); var powerSwitch = new TestPowerSwitch(false); var systemStartTime = systemTime.Now.AddDays(-1); var homeSensor = new TimeBasedHomeSensor(systemStartTime, config, powerSwitch, systemTime); var isHome = homeSensor.IsHome; systemTime.TickMinutes(2); powerSwitch.TurnOn(); // Act isHome = homeSensor.IsHome; // Assert Assert.IsTrue(isHome); }
public void ManualMowingBeforeIntervalStart_MowerReturnsDuringIntervalInWeb_NotMowingStarted() { // Arrange var systemTime = new TestSystemTime(2019, 8, 11, 22, 1, 0); var config = TestFactory.NewConfig10To12And20To2359( usingContactHomeSensor: true); var logger = TestFactory.NewMowLogger(new DateTime(2019, 8, 11, 0, 0, 0)); logger.LogItems.Add(new LogItem(new DateTime(2019, 8, 11, 0, 0, 0), LogType.PowerOn, LogLevel.Debug, "")); logger.LogItems.Add(new LogItem(new DateTime(2019, 8, 11, 19, 35, 0), LogType.MowerLeft, LogLevel.Debug, "")); logger.LogItems.Add(new LogItem(new DateTime(2019, 8, 11, 21, 35, 0), LogType.MowerLost, LogLevel.Debug, "")); var powerSwitch = new TestPowerSwitch(PowerStatus.On); var weatherForecast = TestFactory.NewWeatherForecastGood(systemTime); var homeSensor = new TestHomeSensor(systemTime, isHome: true, mowerLeftTime: new DateTime(2019, 8, 11, 19, 35, 0), mowerCameTime: new DateTime(2019, 8, 11, 22, 1, 0)); var rainSensor = new TestRainSensor(isWet: true); var mowController = new MowController(config, powerSwitch, weatherForecast, systemTime, homeSensor, logger, rainSensor, mowerIsHome: false); // Act mowController.CheckAndAct(); // Assert Assert.AreEqual(powerSwitch.Status, PowerStatus.On); var logItem = logger.LogItems.FirstOrDefault(x => x.Type == LogType.MowerCame); Assert.IsNotNull(logItem); logItem = logger.LogItems.FirstOrDefault(x => x.Type == LogType.MowingStarted); Assert.IsNull(logItem); }