forked from upstream-mirrors/OpenTracks
Change the code style to send Gps signal to emulator.
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*/
|
||||
package com.google.android.apps.mytracks.content;
|
||||
|
||||
import com.google.android.apps.mytracks.content.MyTracksProvider.DatabaseHelper;
|
||||
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.net.Uri;
|
||||
import android.test.AndroidTestCase;
|
||||
|
||||
/**
|
||||
* A unit test for {@link MyTracksProvider}.
|
||||
*
|
||||
* @author Youtao Liu
|
||||
*/
|
||||
public class MyTracksProviderTest extends AndroidTestCase {
|
||||
|
||||
private SQLiteDatabase db;
|
||||
private MyTracksProvider myTracksProvider;
|
||||
private String DATABASE_NAME = "mytrackstest.db";
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
getContext().deleteDatabase(DATABASE_NAME);
|
||||
db = (new DatabaseHelper(getContext(), DATABASE_NAME)).getWritableDatabase();
|
||||
|
||||
myTracksProvider = new MyTracksProvider();
|
||||
super.setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link MyTracksProvider.DatabaseHelper#onCreate()}.
|
||||
*/
|
||||
public void testDatabaseHelper_OnCreate() {
|
||||
assertTrue(checkTable(TrackPointsColumns.TABLE_NAME));
|
||||
assertTrue(checkTable(TracksColumns.TABLE_NAME));
|
||||
assertTrue(checkTable(WaypointsColumns.TABLE_NAME));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method
|
||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||
* when version is less than 17.
|
||||
*/
|
||||
public void testDatabaseHelper_onUpgrade_Version16() {
|
||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||
dropTable(TracksColumns.TABLE_NAME);
|
||||
dropTable(WaypointsColumns.TABLE_NAME);
|
||||
databaseHelper.onUpgrade(db, 16, 20);
|
||||
assertTrue(checkTable(TrackPointsColumns.TABLE_NAME));
|
||||
assertTrue(checkTable(TracksColumns.TABLE_NAME));
|
||||
assertTrue(checkTable(WaypointsColumns.TABLE_NAME));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method
|
||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||
* when version is 17.
|
||||
*/
|
||||
public void testDatabaseHelper_onUpgrade_Version17() {
|
||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||
|
||||
// Make two table is only contains one normal integer column.
|
||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||
dropTable(TracksColumns.TABLE_NAME);
|
||||
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
||||
createEmptyTable(TracksColumns.TABLE_NAME);
|
||||
databaseHelper.onUpgrade(db, 17, 20);
|
||||
assertTrue(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
||||
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
||||
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method
|
||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||
* when version is 18.
|
||||
*/
|
||||
public void testDatabaseHelper_onUpgrade_Version18() {
|
||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||
|
||||
// Make two table is only contains one normal integer column.
|
||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||
dropTable(TracksColumns.TABLE_NAME);
|
||||
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
||||
createEmptyTable(TracksColumns.TABLE_NAME);
|
||||
databaseHelper.onUpgrade(db, 18, 20);
|
||||
assertFalse(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
||||
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
||||
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method
|
||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||
* when version is 19.
|
||||
*/
|
||||
public void testDatabaseHelper_onUpgrade_Version19() {
|
||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||
|
||||
// Make two table is only contains one normal integer column.
|
||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||
dropTable(TracksColumns.TABLE_NAME);
|
||||
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
||||
createEmptyTable(TracksColumns.TABLE_NAME);
|
||||
databaseHelper.onUpgrade(db, 19, 20);
|
||||
assertFalse(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
||||
assertFalse(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
||||
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link MyTracksProvider#onCreate()}.
|
||||
*/
|
||||
public void testOnCreate() {
|
||||
assertTrue(myTracksProvider.onCreate(getContext()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the method {@link MyTracksProvider#getType(Uri)}.
|
||||
*/
|
||||
public void testGetType() {
|
||||
assertEquals(TrackPointsColumns.CONTENT_TYPE,
|
||||
myTracksProvider.getType(TrackPointsColumns.CONTENT_URI));
|
||||
assertEquals(TracksColumns.CONTENT_TYPE, myTracksProvider.getType(TracksColumns.CONTENT_URI));
|
||||
assertEquals(WaypointsColumns.CONTENT_TYPE,
|
||||
myTracksProvider.getType(WaypointsColumns.CONTENT_URI));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an table only contains one column.
|
||||
*
|
||||
* @param table the name of table
|
||||
*/
|
||||
private void createEmptyTable(String table) {
|
||||
db.execSQL("CREATE TABLE " + table + " (test INTEGER)");
|
||||
}
|
||||
|
||||
/**
|
||||
* Drops a table in database.
|
||||
*
|
||||
* @param table
|
||||
*/
|
||||
private void dropTable(String table) {
|
||||
db.execSQL("Drop TABLE " + table);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a table is existed.
|
||||
*
|
||||
* @param table the name of table
|
||||
* @return true means the table has existed
|
||||
*/
|
||||
private boolean checkTable(String table) {
|
||||
try {
|
||||
db.rawQuery("select count(*) from " + table, null);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a column in a table is existed by whether can order by the
|
||||
* column.
|
||||
*
|
||||
* @param table the name of table
|
||||
* @param column the name of column
|
||||
* @return true means the column has existed
|
||||
*/
|
||||
private boolean isColumnExisted(String table, String column) {
|
||||
try {
|
||||
db.execSQL("SElECT count(*) from " + table + " order by " + column);
|
||||
} catch (Exception e) {
|
||||
if (e.getMessage().indexOf("no such column") > -1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user