Change some code of MyTracksProviderTest.

This commit is contained in:
youtaol
2012-08-06 13:21:51 +08:00
parent a4b6d9e87b
commit 27c796cda0
2 changed files with 52 additions and 47 deletions
@@ -57,7 +57,12 @@ public class MyTracksProvider extends ContentProvider {
static class DatabaseHelper extends SQLiteOpenHelper { static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) { public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); this(context, DATABASE_NAME);
}
@VisibleForTesting
public DatabaseHelper(Context context, String databaseName) {
super(context, databaseName, null, DATABASE_VERSION);
} }
@Override @Override
@@ -106,7 +111,8 @@ public class MyTracksProvider extends ContentProvider {
* *
* @author Jimmy Shih * @author Jimmy Shih
*/ */
private enum UrlType { @VisibleForTesting
enum UrlType {
TRACKPOINTS, TRACKPOINTS_ID, TRACKS, TRACKS_ID, WAYPOINTS, WAYPOINTS_ID TRACKPOINTS, TRACKPOINTS_ID, TRACKS, TRACKS_ID, WAYPOINTS, WAYPOINTS_ID
} }
@@ -139,7 +145,8 @@ public class MyTracksProvider extends ContentProvider {
* @param context context to creates database * @param context context to creates database
* @return true means run successfully * @return true means run successfully
*/ */
public boolean onCreate(Context context) { @VisibleForTesting
boolean onCreate(Context context) {
if (!canAccess()) { if (!canAccess()) {
return false; return false;
} }
@@ -457,14 +464,4 @@ public class MyTracksProvider extends ContentProvider {
} }
throw new SQLException("Failed to insert a waypoint " + url); throw new SQLException("Failed to insert a waypoint " + url);
} }
/**
* Gets the db.
*
* @return the SQLiteDatabase object
*/
@VisibleForTesting
SQLiteDatabase getDb() {
return db;
}
} }
@@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.content;
import com.google.android.apps.mytracks.content.MyTracksProvider.DatabaseHelper; import com.google.android.apps.mytracks.content.MyTracksProvider.DatabaseHelper;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
/** /**
@@ -29,10 +30,13 @@ public class MyTracksProviderTest extends AndroidTestCase {
private SQLiteDatabase db; private SQLiteDatabase db;
private MyTracksProvider myTracksProvider; private MyTracksProvider myTracksProvider;
private String DATABASE_NAME = "mytrackstest.db";
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
recreatedDatabase(); getContext().deleteDatabase(DATABASE_NAME);
db = (new DatabaseHelper(getContext(), DATABASE_NAME)).getWritableDatabase();
myTracksProvider = new MyTracksProvider(); myTracksProvider = new MyTracksProvider();
super.setUp(); super.setUp();
} }
@@ -76,9 +80,9 @@ public class MyTracksProviderTest extends AndroidTestCase {
createEmptyTable(TrackPointsColumns.TABLE_NAME); createEmptyTable(TrackPointsColumns.TABLE_NAME);
createEmptyTable(TracksColumns.TABLE_NAME); createEmptyTable(TracksColumns.TABLE_NAME);
databaseHelper.onUpgrade(db, 17, 20); databaseHelper.onUpgrade(db, 17, 20);
assertTrue(checkColumn(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR)); assertTrue(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.TABLEID)); assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.ICON)); assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
} }
/** /**
@@ -95,9 +99,9 @@ public class MyTracksProviderTest extends AndroidTestCase {
createEmptyTable(TrackPointsColumns.TABLE_NAME); createEmptyTable(TrackPointsColumns.TABLE_NAME);
createEmptyTable(TracksColumns.TABLE_NAME); createEmptyTable(TracksColumns.TABLE_NAME);
databaseHelper.onUpgrade(db, 18, 20); databaseHelper.onUpgrade(db, 18, 20);
assertFalse(checkColumn(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR)); assertFalse(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.TABLEID)); assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.ICON)); assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
} }
/** /**
@@ -114,9 +118,9 @@ public class MyTracksProviderTest extends AndroidTestCase {
createEmptyTable(TrackPointsColumns.TABLE_NAME); createEmptyTable(TrackPointsColumns.TABLE_NAME);
createEmptyTable(TracksColumns.TABLE_NAME); createEmptyTable(TracksColumns.TABLE_NAME);
databaseHelper.onUpgrade(db, 19, 20); databaseHelper.onUpgrade(db, 19, 20);
assertFalse(checkColumn(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR)); assertFalse(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
assertFalse(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.TABLEID)); assertFalse(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.ICON)); assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
} }
/** /**
@@ -127,11 +131,14 @@ public class MyTracksProviderTest extends AndroidTestCase {
} }
/** /**
* Recreates the database of MyTracks. * Tests the method {@link MyTracksProvider#getType(Uri)}.
*/ */
private void recreatedDatabase() { public void testGetType() {
assertTrue(getContext().deleteDatabase(MyTracksProvider.DATABASE_NAME)); assertEquals(TrackPointsColumns.CONTENT_TYPE,
db = (new DatabaseHelper(getContext())).getWritableDatabase(); myTracksProvider.getType(TrackPointsColumns.CONTENT_URI));
assertEquals(TracksColumns.CONTENT_TYPE, myTracksProvider.getType(TracksColumns.CONTENT_URI));
assertEquals(WaypointsColumns.CONTENT_TYPE,
myTracksProvider.getType(WaypointsColumns.CONTENT_URI));
} }
/** /**
@@ -140,11 +147,12 @@ public class MyTracksProviderTest extends AndroidTestCase {
* @param table the name of table * @param table the name of table
*/ */
private void createEmptyTable(String table) { private void createEmptyTable(String table) {
db.execSQL( "CREATE TABLE " + table + " (test INTEGER)"); db.execSQL("CREATE TABLE " + table + " (test INTEGER)");
} }
/** /**
* Drops a table in database. * Drops a table in database.
*
* @param table * @param table
*/ */
private void dropTable(String table) { private void dropTable(String table) {
@@ -162,27 +170,27 @@ public class MyTracksProviderTest extends AndroidTestCase {
db.rawQuery("select count(*) from " + table, null); db.rawQuery("select count(*) from " + table, null);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
return false; return false;
} }
} }
/** /**
* Checks whether a column in a table is existed. * Checks whether a column in a table is existed by whether can order by the
* column.
* *
* @param table the name of table * @param table the name of table
* @param column the name of column * @param column the name of column
* @return true means the column has existed * @return true means the column has existed
*/ */
private boolean checkColumn(String table, String column) { private boolean isColumnExisted(String table, String column) {
try { try {
db.execSQL("ALTER TABLE " + table + " add " + column); db.execSQL("SElECT count(*) from " + table + " order by " + column);
} catch (Exception e) { } catch (Exception e) {
if(e.getMessage().indexOf("duplicate column") > -1) { if (e.getMessage().indexOf("no such column") > -1) {
return true; return false;
} }
} }
return false; return true;
} }
} }