public void testAddLocation() { // start from a clean state context.ContentResolver.Delete (WeatherContractOpen.LocationEntryOpen.CONTENT_URI, WeatherContractOpen.LocationEntryOpen.COLUMN_LOCATION_SETTING + " = ?", new String[]{ ADD_LOCATION_SETTING }); FetchWeatherTask fwt = new FetchWeatherTask (context); long locationId = fwt.AddLocation (ADD_LOCATION_SETTING, ADD_LOCATION_CITY, ADD_LOCATION_LAT, ADD_LOCATION_LON); // does addLocation return a valid record ID? Assert.IsFalse (locationId == -1, "Error: addLocation returned an invalid ID on insert"); // test all this twice for (int i = 0; i < 2; i++) { // does the ID point to our location? ICursor locationCursor = context.ContentResolver.Query ( WeatherContractOpen.LocationEntryOpen.CONTENT_URI, new String[] { WeatherContractOpen.LocationEntryOpen._ID, WeatherContractOpen.LocationEntryOpen.COLUMN_LOCATION_SETTING, WeatherContractOpen.LocationEntryOpen.COLUMN_CITY_NAME, WeatherContractOpen.LocationEntryOpen.COLUMN_COORD_LAT, WeatherContractOpen.LocationEntryOpen.COLUMN_COORD_LONG }, WeatherContractOpen.LocationEntryOpen.COLUMN_LOCATION_SETTING + " = ?", new String[]{ ADD_LOCATION_SETTING }, null); // these match the indices of the projection if (locationCursor.MoveToFirst ()) { Assert.AreEqual (locationCursor.GetLong (0), locationId, "Error: the queried value of locationId does not match the returned value" + "from addLocation"); Assert.AreEqual (locationCursor.GetString (1), ADD_LOCATION_SETTING, "Error: the queried value of location setting is incorrect"); Assert.AreEqual (locationCursor.GetString (2), ADD_LOCATION_CITY, "Error: the queried value of location city is incorrect"); Assert.AreEqual (locationCursor.GetDouble (3), ADD_LOCATION_LAT, "Error: the queried value of latitude is incorrect"); Assert.AreEqual (locationCursor.GetDouble (4), ADD_LOCATION_LON, "Error: the queried value of longitude is incorrect"); } else { throw new Exception ("Error: the id you used to query returned an empty cursor"); } // there should be no more records Assert.IsFalse (locationCursor.MoveToNext (), "Error: there should be only one record returned from a location query"); // add the location again long newLocationId = fwt.AddLocation (ADD_LOCATION_SETTING, ADD_LOCATION_CITY, ADD_LOCATION_LAT, ADD_LOCATION_LON); Assert.AreEqual (locationId, newLocationId, "Error: inserting a location again should return the same ID"); } // reset our state back to normal context.ContentResolver.Delete (WeatherContractOpen.LocationEntryOpen.CONTENT_URI, WeatherContractOpen.LocationEntryOpen.COLUMN_LOCATION_SETTING + " = ?", new String[]{ ADD_LOCATION_SETTING }); // clean up the test so that other tests can use the content provider context.ContentResolver. AcquireContentProviderClient (WeatherContractOpen.LocationEntryOpen.CONTENT_URI). LocalContentProvider.Shutdown (); }
public async Task updateWeather () { ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (Activity); var zipCode = prefs.GetString (Resources.GetString (Resource.String.pref_location_key), Resources.GetString (Resource.String.pref_location_default)); var weatherTask = new FetchWeatherTask (this.Activity); await weatherTask.FetchWeatherTaskFromZip (zipCode); }