Beispiel #1
0
 /// <summary>
 /// This method call by sender, when information from sensors is updated
 /// </summary>
 /// <param name="sender">sender value from sensors</param>
 /// <param name="infoEventArgs sensors</param>
 public void Update(WeatherData sender, WeatherInfoEventArgs infoEventArgs)
 {
     weatherData = sender;
     temperature.Add(infoEventArgs.Temperature);
     pressure.Add(infoEventArgs.Pressure);
     humidity.Add(infoEventArgs.Humidity);
 }
        public async Task Test_validate_temperature_data()
        {
            WeatherInfoEventArgs eventArgs = null;

            _weatherChannel.Subscribe("Test Subscriber", delegate(object sender, WeatherInfoEventArgs e)
            {
                eventArgs = e;
            });
            await _weatherChannel.ProcessInputDataAsync(new WeatherData { Location = "kochi", Celsius = 30 });

            int fahren = (30 * 9) / 5 + 32;

            Assert.AreEqual(30, eventArgs.Celsius);
            Assert.AreEqual(fahren, eventArgs.Fahrenheit);
        }
        private void Update(object sender, WeatherInfoEventArgs weatherInfoEventArgs)
        {
            if (sender == null)
            {
                throw new ArgumentNullException($"{nameof(sender)} can not be null.");
            }

            if (weatherInfoEventArgs == null)
            {
                throw new ArgumentNullException($"{nameof(weatherInfoEventArgs)} can not be null.");
            }

            UpdateData(sender, weatherInfoEventArgs);

            Console.WriteLine(ShowReport() + Environment.NewLine);
        }
        static void Main(string[] args)
        {
            var sender = new WeatherData();
            var currentConditionsReport = new CurrentConditionsReport();
            var statisticReport         = new StatisticReport();

            //Subscribe
            sender.WeatherDataChandged += currentConditionsReport.Update;
            sender.WeatherDataChandged += statisticReport.Update;


            var weatherInfoEventArgs = new WeatherInfoEventArgs(20, 740, 75);

            sender.NewWeatherDataAvailable(weatherInfoEventArgs);
            Console.WriteLine("Temperature {0}, Pressure {1}, Humidity {2}",
                              currentConditionsReport.WthrInfo.Temperature,
                              currentConditionsReport.WthrInfo.Pressure,
                              currentConditionsReport.WthrInfo.Humidity);
            sender.NewWeatherDataAvailable(weatherInfoEventArgs);

            // WeatherStation emulation
            Random rnd = new Random();

            for (int i = 0; i < 10; i++)
            {
                Thread.Sleep(10);
                weatherInfoEventArgs = new WeatherInfoEventArgs(
                    rnd.Next(-3, 20),
                    rnd.Next(730, 780),
                    rnd.Next(60, 95));
                sender.NewWeatherDataAvailable(weatherInfoEventArgs);
                Console.WriteLine("Temperature {0}, Pressure {1}, Humidity {2}",
                                  currentConditionsReport.WthrInfo.Temperature,
                                  currentConditionsReport.WthrInfo.Pressure,
                                  currentConditionsReport.WthrInfo.Humidity);
            }

            Console.WriteLine();
            Console.WriteLine("Stat report:");
            Console.WriteLine("MinTemperature: {0}", statisticReport.GetTemperatureMin());
            Console.WriteLine("MaxTemperature: {0}", statisticReport.GetTemperatureMax());
            Console.WriteLine("MinPressure: {0}", statisticReport.GetPressureMin());
            Console.WriteLine("MaxPressure: {0}", statisticReport.GetPresureMax());
            Console.WriteLine("MinHumidity: {0}", statisticReport.GetHumidityMin());
            Console.WriteLine("MinHumidity: {0}", statisticReport.GetHumidityMax());
            Console.WriteLine("AverageTemperature: {0}", statisticReport.GetTemperatureAverage());
            Console.WriteLine("AveragePressure: {0}", statisticReport.GetPressureAverage());
            Console.WriteLine("AverageHumidity: {0}", statisticReport.GetHumidityAverage());

            //Unsubscribe
            Console.WriteLine("Unsubscribe");
            sender.WeatherDataChandged -= currentConditionsReport.Update;
            weatherInfoEventArgs        = new WeatherInfoEventArgs(20, 740, 75);
            sender.NewWeatherDataAvailable(weatherInfoEventArgs);
            Console.WriteLine("Temperature: {0}", currentConditionsReport.WthrInfo.Temperature);

            //Subscribe
            Console.WriteLine("Subscribe");
            Thread.Sleep(1000);
            sender.WeatherDataChandged += currentConditionsReport.Update;
            weatherInfoEventArgs        = new WeatherInfoEventArgs(20, 740, 75);
            sender.NewWeatherDataAvailable(weatherInfoEventArgs);

            Console.WriteLine("Temperature: {0}", currentConditionsReport.WthrInfo.Temperature);

            Console.ReadLine();
        }
 protected virtual void OnProcessedDataReceived(object sender, WeatherInfoEventArgs e)
 {
     _isSubscribed = true;
     _triggerCount++;
 }
Beispiel #6
0
 /// <summary>
 /// Updates current report.
 /// </summary>
 /// <param name="data">New data for report.</param>
 /// <param name="obj">Sender object.</param>
 public void Update(object obj, WeatherInfoEventArgs data)
 {
     currentInfo = data;
     senderName  = obj.ToString();
 }
 /// <summary>
 /// Adds new report in the list of all reports.
 /// </summary>
 /// <param name="data"></param>
 /// <param name="obj">Sender object.</param>
 public void Update(object obj, WeatherInfoEventArgs data)
 {
     listInfo.Add(data);
     senderName.Add(obj.ToString());
 }
Beispiel #8
0
 protected override void UpdateData(object sender, WeatherInfoEventArgs weatherInfo)
 {
     currentWeatherInfo = weatherInfo;
 }
 protected virtual void OnProcessedDataReceived(object sender, WeatherInfoEventArgs e)
 {
     Console.WriteLine($"Hey {Name}, Temperature at {e.Location} is {e.Celsius}°C | {e.Fahrenheit}°F. Updated on {e.UpdatedOn}");
 }
Beispiel #10
0
 private void Update(object sender, WeatherInfoEventArgs info) => _weatherInfoList.Add(info.Clone());
Beispiel #11
0
 private void Update(object sender, WeatherInfoEventArgs info) => _currentWeatherInfo = info.Clone();
 protected override void UpdateDataInReport(object sender, WeatherInfoEventArgs weatherInfoEventArgs)
 {
     weatherHistory.Add(weatherInfoEventArgs.Clone());
 }
 protected override void UpdateDataInReport(object sender, WeatherInfoEventArgs weatherInfoEventArgs)
 {
     WeatherInfo = weatherInfoEventArgs.Clone();
 }
Beispiel #14
0
 /// <summary>
 /// This method call by sender, when information from sensors is updated
 /// </summary>
 /// <param name="sender">sender value from sensors</param>
 /// <param name="infoEventArgs>
 public void Update(WeatherData sender, WeatherInfoEventArgs infoEventArgs)
 {
     wthrInfo = infoEventArgs;
 }
 protected override void UpdateData(object sender, WeatherInfoEventArgs weatherInfo)
 {
     statisticWeatherInfo.Add(weatherInfo);
 }
Beispiel #16
0
 /// <summary>
 /// Handles an event.
 /// </summary>
 /// <param name="sender">The object that is to raised notifications.</param>
 /// <param name="infoEventArgs">The current notification information.</param>
 public void Update(object sender, WeatherInfoEventArgs infoEventArgs) => _infoEventArgs = infoEventArgs;
 protected abstract void UpdateData(object sender, WeatherInfoEventArgs weatherInfoEventArgs);