package com.newsrob.test.unit; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.database.Cursor; import android.test.InstrumentationTestCase; import com.newsrob.DBQuery; import com.newsrob.EntryManager; import com.newsrob.test.TestUtil; public class DBQueryContentCursorTests extends InstrumentationTestCase { private EntryManager entryManager; private List<String> atomIdsOrderedAscending = new ArrayList<String>(); @Override protected void setUp() throws Exception { super.setUp(); entryManager = EntryManager.getInstance(getInstrumentation() .getTargetContext()); entryManager.doClearCache(); TestUtil.populateDatabaseWithDataSet1(entryManager); atomIdsOrderedAscending.addAll(Arrays.asList(new String[] { "atomid2", "atomid1", "atomid3", "atomid4", "atomid5" })); } @Override protected void tearDown() throws Exception { entryManager.doClearCache(); super.tearDown(); } private void executeAndVerify(DBQuery dbq, List<String> expectedIds) { Cursor c = entryManager.getContentCursor(dbq); assertEquals(expectedIds.size(), c.getCount()); try { for (int i = 0; i < expectedIds.size(); i++) { assertTrue(c.moveToNext()); String expected = expectedIds.get(i); String actual = c.getString(1); assertEquals(expected, actual); } } finally { c.close(); } } public void testContentCursorOrderAscending() { DBQuery dbq = new DBQuery(entryManager, null, null); dbq.setSortOrderAscending(true); dbq.setShouldHideReadItemsWithoutUpdatingThePreference(false); List<String> expectedIds = atomIdsOrderedAscending; executeAndVerify(dbq, expectedIds); } public void testContentCursorOrderDescending() { DBQuery dbq = new DBQuery(entryManager, null, null); dbq.setSortOrderAscending(false); dbq.setShouldHideReadItemsWithoutUpdatingThePreference(false); List<String> expectedIds = new ArrayList<String>( atomIdsOrderedAscending.size()); for (String s : atomIdsOrderedAscending) expectedIds.add(0, s); executeAndVerify(dbq, expectedIds); } public void testContentCursorOrderAscendingWithLimit() { DBQuery dbq = new DBQuery(entryManager, null, null); dbq.setSortOrderAscending(true); dbq.setShouldHideReadItemsWithoutUpdatingThePreference(false); dbq.setLimit(3); List<String> expectedIds = atomIdsOrderedAscending; expectedIds = expectedIds.subList(0, 3); executeAndVerify(dbq, expectedIds); } public void testContentCursorOrderDescendingWithLimit() { DBQuery dbq = new DBQuery(entryManager, null, null); dbq.setSortOrderAscending(false); dbq.setShouldHideReadItemsWithoutUpdatingThePreference(false); dbq.setLimit(1); List<String> expectedIds = new ArrayList<String>( atomIdsOrderedAscending.size()); for (String s : atomIdsOrderedAscending) expectedIds.add(0, s); expectedIds = expectedIds.subList(0, 1); executeAndVerify(dbq, expectedIds); } public void testContentCursorUnreadCount() { DBQuery dbq = new DBQuery(entryManager, null, null); dbq.setSortOrderAscending(true); dbq.setShouldHideReadItemsWithoutUpdatingThePreference(true); assertEquals(4, entryManager.getContentCount(dbq)); } public void testContentCursorCount() { DBQuery dbq = new DBQuery(entryManager, null, null); dbq.setSortOrderAscending(true); dbq.setShouldHideReadItemsWithoutUpdatingThePreference(false); assertEquals(5, entryManager.getContentCount(dbq)); } }