public void Test_DefaultThresholdSettings() { var thresholdRepository = new Mock <IThresholdRepository>(); thresholdRepository.Setup(m => m.GetAll()).Returns(new List <IThresholdData>()); ThresholdModel model = new ThresholdModel(new ThermometerModel(), thresholdRepository.Object); List <IThresholdData> target = model.ThresholdSettings; // Assert Assert.AreEqual(2, target.Count); IThresholdData data = target[0]; Assert.AreEqual(1, data.Id); Assert.AreEqual("Freezing", data.Name); Assert.AreEqual(0.0, data.Temperature); Assert.AreEqual(ThresholdGoDirection.None, data.Direction); Assert.AreEqual(true, data.IgnoreHalfUnit); data = target[1]; Assert.AreEqual(2, data.Id); Assert.AreEqual("Boiling", data.Name); Assert.AreEqual(100.0, data.Temperature); Assert.AreEqual(ThresholdGoDirection.None, data.Direction); Assert.AreEqual(true, data.IgnoreHalfUnit); }
public void Test_GetSource_InitialConditions() { SourceData sourceData = new SourceData() { Name = "current", Reading = 15, Unit = TemperatureUnit.Celsius, High = 20, Low = 10, }; var externalSource = new Mock <IExternalSource>(); externalSource.Setup(m => m.ConvertSourceToData()).Returns(sourceData); ThermometerModel model = new ThermometerModel("xml", externalSource.Object); model.GetLatestTemperature(); Assert.AreEqual(15.0, model.CurrentTemperature); Assert.AreEqual(TemperatureUnit.Celsius, model.CurrentTempUnit); Assert.AreEqual("15.0 Celsius", model.CurrentTempDisplay); Assert.AreEqual(TemperatureUnit.Celsius, model.ThresholdsModel.CurrentTemperatureUnit); IThresholdData thresholdData = model.ThresholdsModel.ThresholdSettings[0]; thresholdData.Temperature = 0.0; thresholdData = model.ThresholdsModel.ThresholdSettings[1]; thresholdData.Temperature = 100.0; }
/// <summary> /// Helper function to check temperature alert trigger /// </summary> /// <param name="data"></param> /// <param name="prev"></param> /// <param name="curr"></param> /// <returns></returns> protected bool TemperatureTrigger(IThresholdData data, double prev, double curr) { if (prev == data.Temperature && curr == data.Temperature) { return(false); } return(prev <= data.Temperature && curr >= data.Temperature || prev >= data.Temperature && curr <= data.Temperature); }
public void Test_AlertTrigger_SettingFromAbove_DataFromAboveToBelow() { var thresholdRepository = new Mock <IThresholdRepository>(); thresholdRepository.Setup(m => m.GetAll()).Returns(new List <IThresholdData>()); ThresholdModel model = new ThresholdModel(new ThermometerModel(), thresholdRepository.Object); IThresholdData setting = model.ThresholdSettings[0]; setting.Direction = ThresholdGoDirection.Above; Assert.IsTrue(model.TriggerThresholdAlert(1.0, -1.0)); }
/// <summary> /// Helper function to check temperature alert trigger /// </summary> /// <param name="data"></param> /// <param name="prev"></param> /// <param name="curr"></param> /// <returns></returns> protected bool IgnoreTrigger(IThresholdData data, double prev, double curr) { if (DirectionTrigger(data, prev, curr)) { if (data.IgnoreHalfUnit && ThermometerModel.Triggered && ((Math.Abs(curr - data.Temperature) <= 0.5) && (Math.Abs(prev - data.Temperature) <= 0.001) || (Math.Abs(prev - data.Temperature) <= 0.5) && (Math.Abs(curr - data.Temperature) <= 0.001))) { return(false); } else { return(true); } } else { return(false); } }
/// <summary> /// Helper function to check temperature alert trigger /// </summary> /// <param name="data"></param> /// <param name="prev"></param> /// <param name="curr"></param> /// <returns></returns> protected bool DirectionTrigger(IThresholdData data, double prev, double curr) { if (data.Direction == ThresholdGoDirection.Above) { if (prev > data.Temperature && curr < data.Temperature) { return(true); } } if (data.Direction == ThresholdGoDirection.Below) { if (prev < data.Temperature && curr > data.Temperature) { return(true); } } if (data.Direction == ThresholdGoDirection.None) { return(TemperatureTrigger(data, prev, curr)); } return(false); }
public void Test_UnitPopulationToSettings_UsingSameSettingArgument() { var thresholdRepository = new Mock <IThresholdRepository>(); thresholdRepository.Setup(m => m.GetAll()).Returns(new List <IThresholdData>()); ThresholdModel model = new ThresholdModel(new ThermometerModel(), thresholdRepository.Object); // initial Assert.AreEqual(TemperatureUnit.Celsius, model.CurrentTemperatureUnit); IThresholdData setting = model.ThresholdSettings[0]; Assert.AreEqual(0.0, setting.Temperature); setting = model.ThresholdSettings[1]; Assert.AreEqual(100.0, setting.Temperature); // act model.PopulateTempUnitToSettings(TemperatureUnit.Celsius); Assert.AreEqual(TemperatureUnit.Celsius, model.CurrentTemperatureUnit); setting = model.ThresholdSettings[0]; Assert.AreEqual(0.0, setting.Temperature); setting = model.ThresholdSettings[1]; Assert.AreEqual(100.0, setting.Temperature); }
public ThresholdService(IThresholdDataFactory thresholdDataFactory) { _thresholdData = new ThresholdDataFactory().Create(); }