Exemplo n.º 1
0
        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;
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
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);
     }
 }
Exemplo n.º 6
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 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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 public ThresholdService(IThresholdDataFactory thresholdDataFactory)
 {
     _thresholdData = new ThresholdDataFactory().Create();
 }