public void CurrentConditionsSubscriber_NotifyFirstChange_Temperature() { var wdp = new WeatherDataProvider(); var ccs = new CurrentConditionsSubscriber(wdp); wdp.SetMeasurements(10, 20, 30); Assert.That(ccs.Data.Temperature, Is.EqualTo(10.0).Within(0.001)); }
public void CurrentConditionsSubscriber_NotifySecondChange_Temperature() { var wdp = new WeatherDataProvider(); var ccs = new CurrentConditionsSubscriber(wdp); wdp.Notify(10, 20, 30); wdp.Notify(40, 50, 60); Assert.That(ccs.Data.Temperature, Is.EqualTo(40.0).Within(0.001)); }
/// <summary> /// Esta tecnica, hace uso de las interfaces proveidas por el framework /// <see cref="IObservable{T}" /> <see cref="IObserver{T}" /> /// </summary> private static void TechniqueUsingNet() { var provider = new WeatherDataProvider(); //creamos el proveedor var currentDisp = new CurrentConditionsDisplay(provider); //Suscribimos a [Condiciones actuales] al proveedor var forecastDisp = new ForecastDisplay(provider); //Suscribimos a [Prediciones del clima] al proveedor provider.SetMeasurements(40, 78, 3); //Indicamos al proveedor unas condiciones de clima Console.WriteLine(); provider.SetMeasurements(45, 79, 4); //.. Console.WriteLine(); provider.SetMeasurements(46, 73, 6); //.. //Remove forecast display forecastDisp.Unsubscribe(); // Desinscribimos a [Prediciones del clima] debido a que éste ya no desea ser notificado Console.WriteLine(); provider.SetMeasurements(36, 53, 8); //Comprobamos que al indicar unas nuevas condiciones de clima, el observador [Prediciones del clima] ya no es notificado Console.Read(); }
public WeatherViewBViewModel(WeatherDataProvider weatherDataProvider) { _weatherDataProvider = weatherDataProvider; _preparedForecastsCollection = new ObservableCollection <PreparedForecast>(); DateTime date = DateTime.Parse(_weatherDataProvider.HourlyForecastList[0].DateTime); foreach (var element in _weatherDataProvider.HourlyForecastList) { DateTime dateTime = DateTime.Parse(element.DateTime); string img = "Resources/" + element.WeatherIcon + "-s.png"; string temp = element.Temperature.Value.ToString() + "°C"; string precType = element.PrecipitationType; string precInt = element.PrecipitationIntensity; string precProb = ""; if (element.HasPrecipitation == "true") { precProb = element.PrecipitationProbability + "%"; } _preparedForecastsCollection.Add(new PreparedForecast(dateTime, img, temp, precType, precInt, precProb)); } }
public CurrentConditionsSubscriber(WeatherDataProvider weatherDataProvider) { _wDataProvider = weatherDataProvider; _wDataProvider.RaiseWeatherDataChangedEvent += providerRaiseWeatherDataChangedEvent; }
public ForecastSubscriber(WeatherDataProvider weatherDataProvider) { _wDataProvider = weatherDataProvider; _wDataProvider.RaiseWeatherDataChangedEvent += providerRaiseWeatherDataChangedEvent; }
public CurrentConditionsDisplay(WeatherDataProvider provider) { this.provider = provider; }
/// <summary> /// Registra el evento de cambio de informacion /// </summary> /// <param name="provider"></param> public ForecastDisplay(WeatherDataProvider provider) { _wDprovider = provider; _wDprovider.RaiseWeatherDataChangedEvent += provider_RaiseWeatherDataChangedEvent; }
public ForecastDisplay(WeatherDataProvider provider) { this.provider = provider; }
public WeatherViewAViewModel(WeatherDataProvider weatherDataProvider) { _weatherDataProvider = weatherDataProvider; }
/// <summary> /// Registra el evento de cambio de informacion /// </summary> /// <param name="provider"></param> public CurrentConditionsDisplay(WeatherDataProvider provider) { _wDprovider = provider; _wDprovider.RaiseWeatherDataChangedEvent += provider_RaiseWeatherDataChangedEvent; }