示例#1
0
  /*
     Students:  Here is where you will build code to test that we can insert and query the
     database.  We've done a lot of work for you.  You'll want to look in TestUtilities
     where you can use the "createWeatherValues" function.  You can
     also make use of the validateCurrentRecord function from within TestUtilities.
  */
  public void testWeatherTable() {
    // First insert the location, and then use the locationRowId to insert
    // the weather. Make sure to cover as many failure cases as you can.

    // Instead of rewriting all of the code we've already written in testLocationTable
    // we can move this code to insertLocation and then call insertLocation from both
    // tests. Why move it? We need the code to return the ID of the inserted location
    // and our testLocationTable can only return void because it's a test.

    long locationRowId = insertLocation();

    // Make sure we have a valid row ID.
    assertFalse("Error: Location Not Inserted Correctly", locationRowId == -1L);

    // First step: Get reference to writable database
    // If there's an error in those massive SQL table creation Strings,
    // errors will be thrown here when you try to get a writable database.
    WeatherDbHelper dbHelper = new WeatherDbHelper(mContext);
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    // Second Step (Weather): Create weather values
    ContentValues weatherValues = TestUtilities.createWeatherValues(locationRowId);

    // Third Step (Weather): Insert ContentValues into database and get a row ID back
    long weatherRowId = db.insert(WeatherContract.WeatherEntry.TABLE_NAME, null, weatherValues);
    assertTrue(weatherRowId != -1);

    // Fourth Step: Query the database and receive a Cursor back
    // A cursor is your primary interface to the query results.
    Cursor weatherCursor =
        db.query(
            WeatherContract.WeatherEntry.TABLE_NAME, // Table to Query
            null, // leaving "columns" null just returns all the columns.
            null, // cols for "where" clause
            null, // values for "where" clause
            null, // columns to group by
            null, // columns to filter by row groups
            null // sort order
            );

    // Move the cursor to the first valid database row and check to see if we have any rows
    assertTrue("Error: No Records returned from location query", weatherCursor.moveToFirst());

    // Fifth Step: Validate the location Query
    TestUtilities.validateCurrentRecord(
        "testInsertReadDb weatherEntry failed to validate", weatherCursor, weatherValues);

    // Move the cursor to demonstrate that there is only one record in the database
    assertFalse(
        "Error: More than one record returned from weather query", weatherCursor.moveToNext());

    // Sixth Step: Close cursor and database
    weatherCursor.close();
    dbHelper.close();
  }
示例#2
0
  /*
     Students: This is a helper method for the testWeatherTable quiz. You can move your
     code from testLocationTable to here so that you can call this code from both
     testWeatherTable and testLocationTable.
  */
  public long insertLocation() {
    // First step: Get reference to writable database
    // If there's an error in those massive SQL table creation Strings,
    // errors will be thrown here when you try to get a writable database.
    WeatherDbHelper dbHelper = new WeatherDbHelper(mContext);
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    // Second Step: Create ContentValues of what you want to insert
    // (you can use the createNorthPoleLocationValues if you wish)
    ContentValues testValues = TestUtilities.createNorthPoleLocationValues();

    // Third Step: Insert ContentValues into database and get a row ID back
    long locationRowId;
    locationRowId = db.insert(WeatherContract.LocationEntry.TABLE_NAME, null, testValues);

    // Verify we got a row back.
    assertTrue(locationRowId != -1);

    // Data's inserted.  IN THEORY.  Now pull some out to stare at it and verify it made
    // the round trip.

    // Fourth Step: Query the database and receive a Cursor back
    // A cursor is your primary interface to the query results.
    Cursor cursor =
        db.query(
            WeatherContract.LocationEntry.TABLE_NAME, // Table to Query
            null, // all columns
            null, // Columns for the "where" clause
            null, // Values for the "where" clause
            null, // columns to group by
            null, // columns to filter by row groups
            null // sort order
            );

    // Move the cursor to a valid database row and check to see if we got any records back
    // from the query
    assertTrue("Error: No Records returned from location query", cursor.moveToFirst());

    // Fifth Step: Validate data in resulting Cursor with the original ContentValues
    // (you can use the validateCurrentRecord function in TestUtilities to validate the
    // query if you like)
    TestUtilities.validateCurrentRecord(
        "Error: Location Query Validation Failed", cursor, testValues);

    // Move the cursor to demonstrate that there is only one record in the database
    assertFalse("Error: More than one record returned from location query", cursor.moveToNext());

    // Sixth Step: Close Cursor and Database
    cursor.close();
    db.close();
    return locationRowId;
  }