136 lines
5.2 KiB
Java
136 lines
5.2 KiB
Java
package org.cyanogenmod.tests.alarmclock;
|
|
|
|
import android.content.Intent;
|
|
import android.database.Cursor;
|
|
import android.database.DatabaseUtils;
|
|
import android.net.Uri;
|
|
import android.provider.AlarmClock;
|
|
import android.util.Log;
|
|
import android.widget.Toast;
|
|
import cyanogenmod.alarmclock.ClockContract;
|
|
import cyanogenmod.alarmclock.CyanogenModAlarmClock;
|
|
import org.cyanogenmod.tests.TestActivity;
|
|
|
|
/**
|
|
* Tests functionality added in {@link cyanogenmod.alarmclock.CyanogenModAlarmClock}
|
|
*/
|
|
public class CMAlarmClockTest extends TestActivity {
|
|
private static final String TAG = "CMAlarmClockTest";
|
|
|
|
private static final String[] ALARM_QUERY_COLUMNS = {
|
|
ClockContract.AlarmsColumns._ID,
|
|
ClockContract.AlarmsColumns.LABEL,
|
|
ClockContract.AlarmsColumns.VIBRATE,
|
|
ClockContract.AlarmsColumns.RINGTONE,
|
|
ClockContract.AlarmsColumns.INCREASING_VOLUME,
|
|
ClockContract.AlarmsColumns.PROFILE,
|
|
ClockContract.AlarmsColumns.ENABLED
|
|
};
|
|
|
|
@Override
|
|
protected String tag() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
protected Test[] tests() {
|
|
return mTests;
|
|
}
|
|
|
|
private Test[] mTests = new Test[] {
|
|
new Test("Test query alarms and dump to log") {
|
|
public void run() {
|
|
Uri clockUri = ClockContract.AlarmsColumns.CONTENT_URI;
|
|
Cursor allAlarms = getContentResolver().query(clockUri,
|
|
ALARM_QUERY_COLUMNS, null, null, null);
|
|
Log.d(TAG, "All alarms: " + DatabaseUtils.dumpCursorToString(allAlarms));
|
|
if (allAlarms != null && !allAlarms.isClosed()) {
|
|
allAlarms.close();
|
|
}
|
|
}
|
|
},
|
|
new Test("Test create alarm") {
|
|
public void run() {
|
|
Intent intent = CyanogenModAlarmClock.createAlarmIntent(CMAlarmClockTest.this);
|
|
intent.putExtra(AlarmClock.EXTRA_HOUR, 13);
|
|
intent.putExtra(AlarmClock.EXTRA_MINUTES, 35);
|
|
intent.putExtra(AlarmClock.EXTRA_MESSAGE, "Test from third party!");
|
|
intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
|
|
startActivityForResult(intent, 0);
|
|
}
|
|
},
|
|
new Test("Enable the first alarm if it exists") {
|
|
public void run() {
|
|
setAlarmEnabledAtIndex(0, true);
|
|
}
|
|
},
|
|
new Test("Disable the first alarm if it exists") {
|
|
public void run() {
|
|
setAlarmEnabledAtIndex(0, false);
|
|
}
|
|
},
|
|
new Test("Enable the second alarm if it exists") {
|
|
public void run() {
|
|
setAlarmEnabledAtIndex(1, true);
|
|
}
|
|
},
|
|
new Test("Disable the second alarm if it exists") {
|
|
public void run() {
|
|
setAlarmEnabledAtIndex(1, false);
|
|
}
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Retrieve the id of the alarm within the Alarms table at the given index.
|
|
* @param index The index of the alarm for which to retrieve the id, beginning at zero.
|
|
* @return The ID of the alarm at the given index or -1L if
|
|
* no alarm exists at that index.
|
|
*/
|
|
private long getAlarmIdAtIndex(int index) {
|
|
Uri clockUri = ClockContract.AlarmsColumns.CONTENT_URI;
|
|
Cursor allAlarms = getContentResolver().query(clockUri,
|
|
new String[]{ClockContract.AlarmsColumns._ID}, null, null, null);
|
|
long theIdToReturn = -1L;
|
|
int current = 0;
|
|
int idColumnIndex = allAlarms.getColumnIndex(ClockContract.AlarmsColumns._ID);
|
|
allAlarms.moveToFirst();
|
|
while(!allAlarms.isAfterLast()) {
|
|
if (current == index) {
|
|
theIdToReturn = allAlarms.getLong(idColumnIndex);
|
|
break;
|
|
}
|
|
current++;
|
|
allAlarms.moveToNext();
|
|
}
|
|
if (allAlarms != null && !allAlarms.isClosed()) {
|
|
allAlarms.close();
|
|
}
|
|
return theIdToReturn;
|
|
}
|
|
|
|
/**
|
|
* Construct a new Intent that will launch a DeskClock IntentService to
|
|
* set an alarm's state to enabled or disabled.
|
|
* @param alarmId The ID of the alarm that we will toggle.
|
|
* @param enabledState The new state of the alarm, whether it will be enabled or disabled.
|
|
* @return The Intent to launch that will perform this action.
|
|
*/
|
|
private Intent getIntentToSetAlarmEnabled(long alarmId, boolean enabledState) {
|
|
Intent intent = new Intent(CyanogenModAlarmClock.ACTION_SET_ALARM_ENABLED);
|
|
intent.setPackage("com.android.deskclock");
|
|
intent.putExtra(CyanogenModAlarmClock.EXTRA_ALARM_ID, alarmId);
|
|
intent.putExtra(CyanogenModAlarmClock.EXTRA_ENABLED, enabledState);
|
|
return intent;
|
|
}
|
|
|
|
private void setAlarmEnabledAtIndex(int index, boolean enabled) {
|
|
long firstAlarmId = getAlarmIdAtIndex(index);
|
|
if (firstAlarmId == -1L) {
|
|
Toast.makeText(this, "Alarm not found!", Toast.LENGTH_SHORT);
|
|
} else {
|
|
startService(getIntentToSetAlarmEnabled(firstAlarmId, enabled));
|
|
}
|
|
}
|
|
}
|