diff options
author | shubang <shubang@google.com> | 2018-02-20 11:51:05 -0800 |
---|---|---|
committer | Nick Chalko <nchalko@google.com> | 2018-02-21 11:11:35 -0800 |
commit | 777908546e47297618750d083bb89fe7d98f4853 (patch) | |
tree | 63c4e04122d31c8050ce9bca49e356a3deba902e | |
parent | f6db2fb309edaea71e7baa66591ead3a14bb8f5a (diff) | |
download | TV-777908546e47297618750d083bb89fe7d98f4853.tar.gz |
Add a test for DvrHistoryRowAdapter
PiperOrigin-RevId: 186338292
Change-Id: Ide49e58a67e0f0331f65ce3601a7619a0894cd62
4 files changed, 25 insertions, 16 deletions
diff --git a/src/com/android/tv/dvr/ui/list/DvrHistoryFragment.java b/src/com/android/tv/dvr/ui/list/DvrHistoryFragment.java index fbf0fe53..08dc43c1 100644 --- a/src/com/android/tv/dvr/ui/list/DvrHistoryFragment.java +++ b/src/com/android/tv/dvr/ui/list/DvrHistoryFragment.java @@ -41,10 +41,11 @@ public class DvrHistoryFragment extends DetailsFragment { SchedulesHeaderRow.class, new DateHeaderRowPresenter(getContext())); presenterSelector.addClassPresenter( ScheduleRow.class, new ScheduleRowPresenter(getContext())); - mRowsAdapter = new DvrHistoryRowAdapter(getContext(), presenterSelector); + TvSingletons singletons = TvSingletons.getSingletons(getContext()); + mRowsAdapter = new DvrHistoryRowAdapter( + getContext(), presenterSelector, singletons.getClock()); setAdapter(mRowsAdapter); mRowsAdapter.start(); - TvSingletons singletons = TvSingletons.getSingletons(getContext()); mEmptyInfoScreenView = (TextView) getActivity().findViewById(R.id.empty_info_screen); // TODO: handle show/hide message } diff --git a/src/com/android/tv/dvr/ui/list/DvrHistoryRowAdapter.java b/src/com/android/tv/dvr/ui/list/DvrHistoryRowAdapter.java index 7685b7e9..ac828eb8 100644 --- a/src/com/android/tv/dvr/ui/list/DvrHistoryRowAdapter.java +++ b/src/com/android/tv/dvr/ui/list/DvrHistoryRowAdapter.java @@ -24,6 +24,8 @@ import android.support.v17.leanback.widget.ClassPresenterSelector; import android.text.format.DateUtils; import com.android.tv.R; import com.android.tv.TvSingletons; +import com.android.tv.common.util.Clock; +import com.android.tv.dvr.DvrDataManager; import com.android.tv.dvr.data.RecordedProgram; import com.android.tv.dvr.data.ScheduledRecording; import com.android.tv.dvr.recorder.ScheduledProgramReaper; @@ -42,12 +44,17 @@ class DvrHistoryRowAdapter extends ArrayObjectAdapter { private static final long ONE_DAY_MS = TimeUnit.DAYS.toMillis(1); private static final int MAX_HISTORY_DAYS = ScheduledProgramReaper.DAYS; - private Context mContext; + private final Context mContext; + private final Clock mClock; + private final DvrDataManager mDvrDataManager; private final List<String> mTitles = new ArrayList<>(); - public DvrHistoryRowAdapter(Context context, ClassPresenterSelector classPresenterSelector) { + public DvrHistoryRowAdapter( + Context context, ClassPresenterSelector classPresenterSelector, Clock clock) { super(classPresenterSelector); mContext = context; + mClock = clock; + mDvrDataManager = TvSingletons.getSingletons(mContext).getDvrDataManager(); mTitles.add(mContext.getString(R.string.dvr_date_today)); mTitles.add(mContext.getString(R.string.dvr_date_yesterday)); } @@ -60,20 +67,14 @@ class DvrHistoryRowAdapter extends ArrayObjectAdapter { /** Starts row adapter. */ public void start() { clear(); - List<ScheduledRecording> recordingList = - TvSingletons.getSingletons(mContext) - .getDvrDataManager() - .getFailedScheduledRecordings(); - List<RecordedProgram> recordedProgramList = - TvSingletons.getSingletons(mContext) - .getDvrDataManager() - .getRecordedPrograms(); + List<ScheduledRecording> recordingList = mDvrDataManager.getFailedScheduledRecordings(); + List<RecordedProgram> recordedProgramList = mDvrDataManager.getRecordedPrograms(); recordingList.addAll( recordedProgramsToScheduledRecordings(recordedProgramList, MAX_HISTORY_DAYS)); recordingList .sort(ScheduledRecording.START_TIME_THEN_PRIORITY_THEN_ID_COMPARATOR.reversed()); - long deadLine = Utils.getFirstMillisecondOfDay(System.currentTimeMillis()); + long deadLine = Utils.getFirstMillisecondOfDay(mClock.currentTimeMillis()); for (int i = 0; i < recordingList.size(); ) { ArrayList<ScheduledRecording> section = new ArrayList<>(); while (i < recordingList.size() && recordingList.get(i).getStartTimeMs() >= deadLine) { @@ -102,7 +103,7 @@ class DvrHistoryRowAdapter extends ArrayObjectAdapter { private String calculateHeaderDate(long timeMs) { int titleIndex = (int) - ((Utils.getFirstMillisecondOfDay(System.currentTimeMillis()) - timeMs) + ((Utils.getFirstMillisecondOfDay(mClock.currentTimeMillis()) - timeMs) / ONE_DAY_MS); String headerDate; if (titleIndex < mTitles.size()) { @@ -122,7 +123,7 @@ class DvrHistoryRowAdapter extends ArrayObjectAdapter { private List<ScheduledRecording> recordedProgramsToScheduledRecordings( List<RecordedProgram> recordedPrograms, int maxDays) { List<ScheduledRecording> result = new ArrayList<>(recordedPrograms.size()); - long firstMillisecondToday = Utils.getFirstMillisecondOfDay(System.currentTimeMillis()); + long firstMillisecondToday = Utils.getFirstMillisecondOfDay(mClock.currentTimeMillis()); for (RecordedProgram recordedProgram : recordedPrograms) { if (maxDays < Utils.computeDateDifference( diff --git a/tests/common/src/com/android/tv/testing/FakeClock.java b/tests/common/src/com/android/tv/testing/FakeClock.java index fc4ca6df..f5941939 100644 --- a/tests/common/src/com/android/tv/testing/FakeClock.java +++ b/tests/common/src/com/android/tv/testing/FakeClock.java @@ -36,6 +36,10 @@ public class FakeClock implements Clock { public static FakeClock createWithTimeOne() { return new FakeClock(1L, 0L); } + /** Creates a fake clock with the time set to {@code time}. */ + public static FakeClock createWithTime(long time) { + return new FakeClock(time, 0L); + } private long mCurrentTimeMillis; diff --git a/tests/common/src/com/android/tv/testing/TestSingletonApp.java b/tests/common/src/com/android/tv/testing/TestSingletonApp.java index f1798352..f55ed8d4 100644 --- a/tests/common/src/com/android/tv/testing/TestSingletonApp.java +++ b/tests/common/src/com/android/tv/testing/TestSingletonApp.java @@ -44,6 +44,7 @@ import com.android.tv.dvr.DvrWatchedPositionManager; import com.android.tv.dvr.recorder.RecordingScheduler; import com.android.tv.perf.PerformanceMonitor; import com.android.tv.perf.StubPerformanceMonitor; +import com.android.tv.testing.dvr.DvrDataManagerInMemoryImpl; import com.android.tv.testing.testdata.TestData; import com.android.tv.tuner.TunerInputController; import com.android.tv.util.SetupUtils; @@ -62,6 +63,7 @@ public class TestSingletonApp extends Application implements TvSingletons { public FakeTvInputManagerHelper tvInputManagerHelper; public SetupUtils setupUtils; public DvrManager dvrManager; + public DvrDataManager mDvrDataManager; private final Provider<EpgReader> mEpgReaderProvider = SingletonProvider.create(epgReader); private TunerInputController mTunerInputController; @@ -80,6 +82,7 @@ public class TestSingletonApp extends Application implements TvSingletons { tvInputManagerHelper.start(); mChannelDataManager = new ChannelDataManager(this, tvInputManagerHelper); mChannelDataManager.start(); + mDvrDataManager = new DvrDataManagerInMemoryImpl(this, fakeClock); // HACK reset the singleton for tests BaseApplication.sSingletons = this; } @@ -126,7 +129,7 @@ public class TestSingletonApp extends Application implements TvSingletons { @Override public DvrDataManager getDvrDataManager() { - return null; + return mDvrDataManager; } @Override |