forked from upstream-mirrors/OpenTracks
196 lines
6.4 KiB
Java
196 lines
6.4 KiB
Java
/*
|
|
* 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;
|
|
}
|
|
|
|
} |