package no.openandroidweather.weathercontentprovider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
public class WeatherProxyDatabaseOpenHelperTest extends AndroidTestCase {
WeatherContentProviderDatabaseOpenHelper openHelper;
private final static String SCHEMA_V1_META = "CREATE TABLE meta (_id INTEGER PRIMARY KEY,altitude REAL,expires INTEGER,generated INTEGER,latitude REAL,longtitude REAL,place TEXT,provider TEXT)";
final static String SCHEMA_V1_FORECAST = "CREATE TABLE forecast (_id INTEGER PRIMARY KEY, fromTime INTEGER, meta INTEGER, toTime INTEGER, type INTEGER, value TEXT )";
public void setUp() throws Exception {
Context context = getContext();
openHelper = new WeatherContentProviderDatabaseOpenHelper(context);
}
public void testOnCreateSQLiteDatabase() {
SQLiteDatabase db = openHelper.getWritableDatabase();
openHelper.deleteDatabase(db);
openHelper.onCreate(db);
db.close();
db = openHelper.getWritableDatabase();
addTestData(db);
checkTestData(db);
db.close();
}
private void addTestData(SQLiteDatabase db) {
addV1TestData(db);
}
/*
public void testOnUpgradeSQLiteDatabaseFromv1() {
SQLiteDatabase db = openHelper.getWritableDatabase();
openHelper.deleteDatabase(db);
db.execSQL(SCHEMA_V1_META);
db.execSQL(SCHEMA_V1_FORECAST);
addV1TestData(db);
openHelper.onUpgrade(db, 1, WeatherContentProviderDatabaseOpenHelper.DATABASE_VERSION);
checkTestData(db);
}
*/
/**
* @param db
* Database
*/
private void checkTestData(SQLiteDatabase db) {
Cursor c = db.query(WeatherContentProvider.Forecast.TABLE_NAME, null,
null, null, null, null, null);
assertEquals(1, c.getCount());
checkForecastCursor(c);
assertEquals(1, c.getInt(c.getColumnIndex(WeatherContentProvider.Forecast.META)));
c.close();
c = db.query(WeatherContentProvider.Meta.TABLE_NAME, null, null, null,
null, null, null);
assertEquals(1, c.getCount());
checkMetaCursor(c);
c.close();
}
/**
* @param c
*/
static void checkMetaCursor(Cursor c) {
c.moveToFirst();
assertEquals(123.4,
c.getDouble(c.getColumnIndex(WeatherContentProvider.Meta.ALTITUDE)));
assertEquals(10000000,
c.getInt(c.getColumnIndex(WeatherContentProvider.Meta.NEXT_FORECAST)));
assertEquals(10000001,
c.getInt(c.getColumnIndex(WeatherContentProvider.Meta.GENERATED)));
assertEquals(1.1, c.getDouble(c.getColumnIndex(WeatherContentProvider.Meta.LATITUDE)));
assertEquals(2.2, c.getDouble(c.getColumnIndex(WeatherContentProvider.Meta.LONGITUDE)));
assertEquals("Norway",
c.getString(c.getColumnIndex(WeatherContentProvider.Meta.PLACE_NAME)));
assertEquals("yr.no",
c.getString(c.getColumnIndex(WeatherContentProvider.Meta.PROVIDER)));
assertEquals(123456, c.getInt(c.getColumnIndexOrThrow(WeatherContentProvider.Meta.LOADED)));
}
/**
* @param c
*/
static void checkForecastCursor(Cursor c) {
c.moveToFirst();
assertEquals(10000002,
c.getInt(c.getColumnIndex(WeatherContentProvider.Forecast.FROM)));
assertEquals(10000003,
c.getInt(c.getColumnIndex(WeatherContentProvider.Forecast.TO)));
assertEquals(10000004,
c.getInt(c.getColumnIndex(WeatherContentProvider.Forecast.TYPE)));
assertEquals("Sun",
c.getString(c.getColumnIndex(WeatherContentProvider.Forecast.VALUE)));
}
private void addV1TestData(SQLiteDatabase db) {
ContentValues metaTest = metaTestContentValues();
ContentValues forecastTest = forecastTestContentValues();
db.insertOrThrow(WeatherContentProvider.Forecast.TABLE_NAME, null,
forecastTest);
db.insertOrThrow(WeatherContentProvider.Meta.TABLE_NAME, null, metaTest);
}
/**
* @return
*/
static ContentValues forecastTestContentValues() {
ContentValues forecastTest = new ContentValues();
forecastTest.put(WeatherContentProvider.Forecast.FROM, 10000002);
forecastTest.put(WeatherContentProvider.Forecast.META, 1);
forecastTest.put(WeatherContentProvider.Forecast.TO, 10000003);
forecastTest.put(WeatherContentProvider.Forecast.TYPE, 10000004);
forecastTest.put(WeatherContentProvider.Forecast.VALUE, "Sun");
return forecastTest;
}
/**
* @return a set of metaTestContentValues
*/
static ContentValues metaTestContentValues() {
ContentValues metaTest = new ContentValues();
metaTest.put(WeatherContentProvider.Meta.LOADED, 123456);
metaTest.put(WeatherContentProvider.Meta.ALTITUDE, 123.4);
metaTest.put(WeatherContentProvider.Meta.NEXT_FORECAST, 10000000);
metaTest.put(WeatherContentProvider.Meta.GENERATED, 10000001);
metaTest.put(WeatherContentProvider.Meta.LATITUDE, 1.1);
metaTest.put(WeatherContentProvider.Meta.LONGITUDE, 2.2);
metaTest.put(WeatherContentProvider.Meta.PLACE_NAME, "Norway");
metaTest.put(WeatherContentProvider.Meta.PROVIDER, "yr.no");
return metaTest;
}
}