package com.applang.berichtsheft.test;
import java.util.Arrays;
import java.util.List;
import android.content.ContentResolver;
import android.database.Cursor;
import android.test.TouchUtils;
import android.view.KeyEvent;
import android.widget.ExpandableListView;
import static com.applang.Util.*;
import com.applang.berichtsheft.BerichtsheftActivity;
import com.applang.provider.NotePad.NoteColumns;
import com.applang.provider.NotePadProvider;
import com.applang.tagesberichte.Glossary;
import com.applang.tagesberichte.Glossary.GlossaryListAdapter;
import com.applang.tagesberichte.Glossary.GlossaryLeaf;
public class GlossaryTests extends InfraTests<Glossary>
{
private static final String TAG = GlossaryTests.class.getSimpleName();
public GlossaryTests() {
super("com.applang.berichtsheft", Glossary.class);
}
/* public GlossaryTests(String method) {
this();
}
*/
@Override
protected void setUp() throws Exception {
super.setUp();
assertTrue(mActivity instanceof Glossary);
ProviderTests.generateTestData(mActivity);
mListView = mActivity.listView;
mAdapter = mActivity.adapter;
// mActivity.contentResolver = getInstrumentation().getTargetContext().getContentResolver();
mContentResolver = mActivity.getContentResolver();
mActivity.populate(true);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
ExpandableListView mListView;
GlossaryListAdapter mAdapter;
ContentResolver mContentResolver;
public void testPopulation() {
assertNotNull(mAdapter);
assertNotNull(mContentResolver);
int cnt = NotePadProvider.countNotes(mContentResolver, 2, "", null)[0];
String groupSelection = "group by title";
Integer[] cnts = NotePadProvider.countNotes(mContentResolver, 2, groupSelection, null);
List<String> titles = Arrays.asList(NotePadProvider.getTitles(mContentResolver, 2, groupSelection, null));
assertTrue(cnts.length > 0);
assertEquals(cnts.length, titles.size());
int groupCount = mAdapter.getGroupCount();
assertEquals(cnts.length, groupCount);
for (int i = 0; i < groupCount; i++) {
Object group = mAdapter.getGroup(i);
int index = titles.indexOf(group);
assertTrue(index > -1);
assertEquals(cnts[index].intValue(), mAdapter.getChildrenCount(i));
final Cursor cursor = mContentResolver.query(NotePadProvider.contentUri(2),
NotePadProvider.FULL_PROJECTION,
NoteColumns.TITLE + "= ?", new String[] { "" + group },
null);
assertTrue(cursor.moveToFirst());
for (int j = 0; j < mAdapter.getChildrenCount(i); j++) {
final GlossaryLeaf v = (GlossaryLeaf) mAdapter.getChild(i, j);
long refId = cursor.getLong(3);
assertTrue(NotePadProvider.fetchNoteById(refId, mContentResolver, 0, new Job<Cursor>() {
public void perform(Cursor c, Object[] params) throws Exception {
assertEquals(c.getString(1), v.getTitle());
}
}));
cursor.moveToNext();
cnt--;
}
cursor.close();
}
assertEquals(0, cnt);
}
public void testSchlagwort() {
// Button view = (Button) mActivity.findViewById(R.id.button1);
// TouchUtils.clickView(this, view);
// this.sendKeys(KeyEvent.KEYCODE_BACK);
// TouchUtils.clickView(this, view);
// Toast.makeText(mActivity, "on hold ...", Toast.LENGTH_LONG).show();
// mActivity.startActivity(
// new Intent(TitleEditor.EDIT_TITLE_ACTION, Notes.CONTENT_URI)
// .putExtra("table", 0));
mActivity.runOnUiThread(
new Runnable() {
public void run() {
mListView.requestFocus();
mListView.setSelection(0);
}
}
);
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
TouchUtils.longClickView(this, mListView);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
}
}