aboutsummaryrefslogtreecommitdiff
path: root/tests/common/src/com/android/tv
diff options
context:
space:
mode:
authorNick Chalko <nchalko@google.com>2016-08-31 16:00:31 -0700
committerNick Chalko <nchalko@google.com>2016-09-07 05:38:33 -0700
commit65fda1eaa94968bb55d5ded10dcb0b3f37fb05f2 (patch)
treeffc8e4c5a71c130d3782bf03e674f9d77ca77f72 /tests/common/src/com/android/tv
parentad819718f80e796cf039f96537b5c8cd127c042b (diff)
downloadTV-65fda1eaa94968bb55d5ded10dcb0b3f37fb05f2.tar.gz
Sync to ub-tv-dev at http://ag/1415258
Bug: 30970843 Change-Id: I0aa43094d103de28956a3d9b56a594ea46a20543
Diffstat (limited to 'tests/common/src/com/android/tv')
-rw-r--r--tests/common/src/com/android/tv/MockTvApplication.java84
-rw-r--r--tests/common/src/com/android/tv/input/TunerHelper.java155
-rw-r--r--tests/common/src/com/android/tv/testing/ChannelUtils.java31
-rw-r--r--tests/common/src/com/android/tv/testing/ProgramInfo.java6
-rw-r--r--tests/common/src/com/android/tv/testing/ProgramUtils.java8
-rw-r--r--tests/common/src/com/android/tv/testing/TvContentRatingConstants.java4
-rw-r--r--tests/common/src/com/android/tv/testing/Utils.java6
-rw-r--r--tests/common/src/com/android/tv/testing/dvr/RecordingTestUtils.java41
8 files changed, 207 insertions, 128 deletions
diff --git a/tests/common/src/com/android/tv/MockTvApplication.java b/tests/common/src/com/android/tv/MockTvApplication.java
deleted file mode 100644
index 24c47a6a..00000000
--- a/tests/common/src/com/android/tv/MockTvApplication.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.tv;
-
-import android.test.mock.MockApplication;
-
-import com.android.tv.analytics.Analytics;
-import com.android.tv.analytics.Tracker;
-import com.android.tv.data.ChannelDataManager;
-import com.android.tv.data.ProgramDataManager;
-import com.android.tv.dvr.DvrDataManager;
-import com.android.tv.dvr.DvrManager;
-import com.android.tv.dvr.DvrSessionManager;
-import com.android.tv.util.TvInputManagerHelper;
-
-/**
- * A mock TV Application used for testing.
- */
-public class MockTvApplication extends MockApplication implements ApplicationSingletons {
- public final ApplicationSingletons mDelegate;
-
- public MockTvApplication(ApplicationSingletons delegate) {
- mDelegate = delegate;
- }
-
- @Override
- public DvrManager getDvrManager() {
- return mDelegate.getDvrManager();
- }
-
- @Override
- public DvrSessionManager getDvrSessionManger() {
- return mDelegate.getDvrSessionManger();
- }
-
- @Override
- public Analytics getAnalytics() {
- return mDelegate.getAnalytics();
- }
-
- @Override
- public Tracker getTracker() {
- return mDelegate.getTracker();
- }
-
- @Override
- public ChannelDataManager getChannelDataManager() {
- return mDelegate.getChannelDataManager();
- }
-
- @Override
- public ProgramDataManager getProgramDataManager() {
- return mDelegate.getProgramDataManager();
- }
-
- @Override
- public DvrDataManager getDvrDataManager() {
- return mDelegate.getDvrDataManager();
- }
-
- @Override
- public TvInputManagerHelper getTvInputManagerHelper() {
- return mDelegate.getTvInputManagerHelper();
- }
-
- @Override
- public MainActivityWrapper getMainActivityWrapper() {
- return mDelegate.getMainActivityWrapper();
- }
-}
diff --git a/tests/common/src/com/android/tv/input/TunerHelper.java b/tests/common/src/com/android/tv/input/TunerHelper.java
new file mode 100644
index 00000000..126d5027
--- /dev/null
+++ b/tests/common/src/com/android/tv/input/TunerHelper.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tv.input;
+
+import android.net.Uri;
+import android.support.annotation.Nullable;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * A class to manage fake tuners for the tune and the recording.
+ */
+public class TunerHelper {
+ private static final String TAG = "TunerHelper";
+ private static final boolean DEBUG = false;
+
+ private final List<Tuner> mTuners = new ArrayList<>();
+ private final int mTunerCount;
+
+ public TunerHelper(int tunerCount) {
+ mTunerCount = tunerCount;
+ }
+
+ /**
+ * Checks whether there are available tuners for the recording.
+ */
+ public boolean tunerAvailableForRecording() {
+ if (mTuners.size() < mTunerCount) {
+ return true;
+ }
+ for (Tuner tuner : mTuners) {
+ if (!tuner.recording) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks whether there is available tuner.
+ * If there's available tuner, it is assigned to the channel.
+ */
+ public boolean tune(@Nullable Uri channelUri, boolean forRecording) {
+ if (channelUri == null) {
+ return false;
+ }
+ for (Tuner tuner : mTuners) {
+ // Find available tuner which is used only for the recording.
+ if (tuner.channelUri.equals(channelUri)) {
+ if (!forRecording && !tuner.tuning) {
+ tuner.tuning = true;
+ return true;
+ } else if (forRecording && !tuner.recording) {
+ tuner.recording = true;
+ return true;
+ }
+ }
+ }
+ if (mTuners.size() < mTunerCount) {
+ // Assign new tuner.
+ mTuners.add(new Tuner(channelUri, forRecording));
+ return true;
+ }
+ Log.i(TAG, "No available tuners. tuner count: " + mTunerCount);
+ return false;
+ }
+
+ /**
+ * Releases the tuner which was being used for the tune.
+ */
+ public void stopTune(@Nullable Uri channelUri) {
+ if (channelUri == null) {
+ return;
+ }
+ Tuner candidate = null;
+ Iterator<Tuner> iterator = mTuners.iterator();
+ while (iterator.hasNext()) {
+ Tuner tuner = iterator.next();
+ if (tuner.channelUri.equals(channelUri) && tuner.tuning) {
+ if (tuner.recording) {
+ // A tuner which is used both for the tune and recording is the candidate.
+ candidate = tuner;
+ } else {
+ // Remove the tuner which is used only for the tune.
+ if (DEBUG) Log.d(TAG, "Removed tuner for tune");
+ iterator.remove();
+ return;
+ }
+ }
+ }
+ if (candidate != null) {
+ candidate.tuning = false;
+ }
+ }
+
+ /**
+ * Releases the tuner which was being used for the recording.
+ */
+ public void stopRecording(@Nullable Uri channelUri) {
+ if (channelUri == null) {
+ return;
+ }
+ Tuner candidate = null;
+ Iterator<Tuner> iterator = mTuners.iterator();
+ while (iterator.hasNext()) {
+ Tuner tuner = iterator.next();
+ if (tuner.channelUri.equals(channelUri)) {
+ if (tuner.recording) {
+ if (tuner.tuning) {
+ // A tuner which is used both for the tune and recording is the candidate.
+ candidate = tuner;
+ } else {
+ // Remove the tuner which is used only for the recording.
+ iterator.remove();
+ return;
+ }
+ } else {
+ Log.w(TAG, "Tuner found for " + channelUri + ", but not used for recording");
+ }
+ }
+ }
+ if (candidate != null) {
+ candidate.recording = false;
+ }
+ }
+
+ private static class Tuner {
+ public final Uri channelUri;
+ public boolean tuning;
+ public boolean recording;
+
+ public Tuner (Uri channelUri, boolean forRecording) {
+ this.channelUri = channelUri;
+ this.tuning = !forRecording;
+ this.recording = forRecording;
+ }
+ }
+}
diff --git a/tests/common/src/com/android/tv/testing/ChannelUtils.java b/tests/common/src/com/android/tv/testing/ChannelUtils.java
index e09843a6..bfb766d6 100644
--- a/tests/common/src/com/android/tv/testing/ChannelUtils.java
+++ b/tests/common/src/com/android/tv/testing/ChannelUtils.java
@@ -23,7 +23,6 @@ import android.media.tv.TvContract;
import android.media.tv.TvContract.Channels;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Build;
import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.Log;
@@ -96,22 +95,20 @@ public class ChannelUtils {
} else {
values.putNull(Channels.COLUMN_VIDEO_FORMAT);
}
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- if (!TextUtils.isEmpty(channel.appLinkText)) {
- values.put(Channels.COLUMN_APP_LINK_TEXT, channel.appLinkText);
- }
- if (channel.appLinkColor != 0) {
- values.put(Channels.COLUMN_APP_LINK_COLOR, channel.appLinkColor);
- }
- if (!TextUtils.isEmpty(channel.appLinkPosterArtUri)) {
- values.put(Channels.COLUMN_APP_LINK_POSTER_ART_URI, channel.appLinkPosterArtUri);
- }
- if (!TextUtils.isEmpty(channel.appLinkIconUri)) {
- values.put(Channels.COLUMN_APP_LINK_ICON_URI, channel.appLinkIconUri);
- }
- if (!TextUtils.isEmpty(channel.appLinkIntentUri)) {
- values.put(Channels.COLUMN_APP_LINK_INTENT_URI, channel.appLinkIntentUri);
- }
+ if (!TextUtils.isEmpty(channel.appLinkText)) {
+ values.put(Channels.COLUMN_APP_LINK_TEXT, channel.appLinkText);
+ }
+ if (channel.appLinkColor != 0) {
+ values.put(Channels.COLUMN_APP_LINK_COLOR, channel.appLinkColor);
+ }
+ if (!TextUtils.isEmpty(channel.appLinkPosterArtUri)) {
+ values.put(Channels.COLUMN_APP_LINK_POSTER_ART_URI, channel.appLinkPosterArtUri);
+ }
+ if (!TextUtils.isEmpty(channel.appLinkIconUri)) {
+ values.put(Channels.COLUMN_APP_LINK_ICON_URI, channel.appLinkIconUri);
+ }
+ if (!TextUtils.isEmpty(channel.appLinkIntentUri)) {
+ values.put(Channels.COLUMN_APP_LINK_INTENT_URI, channel.appLinkIntentUri);
}
Long rowId = existingChannelsMap.get(channel.originalNetworkId);
Uri uri;
diff --git a/tests/common/src/com/android/tv/testing/ProgramInfo.java b/tests/common/src/com/android/tv/testing/ProgramInfo.java
index 3f1f30ce..b1aaea6b 100644
--- a/tests/common/src/com/android/tv/testing/ProgramInfo.java
+++ b/tests/common/src/com/android/tv/testing/ProgramInfo.java
@@ -184,7 +184,7 @@ public final class ProgramInfo {
*/
public ProgramInfo build(Context context, int index) {
if (!GEN_TITLE.equals(title)
- && !GEN_EPISODE.equals(episode)
+ && episode == null
&& !GEN_POSTER.equals(posterArtUri)
&& durationMs != GEN_DURATION
&& !GEN_GENRE.equals(genre)) {
@@ -193,8 +193,8 @@ public final class ProgramInfo {
return new ProgramInfo(
GEN_TITLE.equals(title) ? "Title(" + index + ")" : title,
GEN_EPISODE.equals(episode) ? "Episode(" + index + ")" : episode,
- GEN_EPISODE.equals(episode) ? (index % SEASON_MAX + 1) : seasonNumber,
- GEN_EPISODE.equals(episode) ? (index % EPISODE_MAX + 1) : episodeNumber,
+ episode != null ? (index % SEASON_MAX + 1) : seasonNumber,
+ episode != null ? (index % EPISODE_MAX + 1) : episodeNumber,
GEN_POSTER.equals(posterArtUri)
? Utils.getUriStringForResource(context,
POSTER_ARTS_RES[index % POSTER_ARTS_RES.length])
diff --git a/tests/common/src/com/android/tv/testing/ProgramUtils.java b/tests/common/src/com/android/tv/testing/ProgramUtils.java
index 227eb84a..f7f26431 100644
--- a/tests/common/src/com/android/tv/testing/ProgramUtils.java
+++ b/tests/common/src/com/android/tv/testing/ProgramUtils.java
@@ -66,8 +66,12 @@ public class ProgramUtils {
ProgramInfo programAt = program.build(context, index++);
values.put(Programs.COLUMN_TITLE, programAt.title);
values.put(Programs.COLUMN_EPISODE_TITLE, programAt.episode);
- values.put(Programs.COLUMN_SEASON_NUMBER, programAt.seasonNumber);
- values.put(Programs.COLUMN_EPISODE_NUMBER, programAt.episodeNumber);
+ if (programAt.seasonNumber != 0) {
+ values.put(Programs.COLUMN_SEASON_NUMBER, programAt.seasonNumber);
+ }
+ if (programAt.episodeNumber != 0) {
+ values.put(Programs.COLUMN_EPISODE_NUMBER, programAt.episodeNumber);
+ }
values.put(Programs.COLUMN_POSTER_ART_URI, programAt.posterArtUri);
values.put(Programs.COLUMN_START_TIME_UTC_MILLIS, timeMs);
values.put(Programs.COLUMN_END_TIME_UTC_MILLIS, timeMs + programAt.durationMs);
diff --git a/tests/common/src/com/android/tv/testing/TvContentRatingConstants.java b/tests/common/src/com/android/tv/testing/TvContentRatingConstants.java
index 71af8297..b80d56f9 100644
--- a/tests/common/src/com/android/tv/testing/TvContentRatingConstants.java
+++ b/tests/common/src/com/android/tv/testing/TvContentRatingConstants.java
@@ -33,7 +33,7 @@ public final class TvContentRatingConstants {
public static final TvContentRating CONTENT_RATING_US_TV_Y7_US_TV_FV =
TvContentRating.createRating("com.android.tv", "US_TV", "US_TV_Y7", "US_TV_FV");
- public static String STRING_US_TV_Y7_US_TV_FV = "com.android.tv/US_TV/US_TV_Y7/US_TV_FV";
+ public static final String STRING_US_TV_Y7_US_TV_FV = "com.android.tv/US_TV/US_TV_Y7/US_TV_FV";
/**
* A content rating object.
@@ -45,7 +45,7 @@ public final class TvContentRatingConstants {
public static final TvContentRating CONTENT_RATING_US_TV_MA =
TvContentRating.createRating("com.android.tv", "US_TV", "US_TV_MA");
- public static String STRING_US_TV_MA = "com.android.tv/US_TV/US_TV_MA";
+ public static final String STRING_US_TV_MA = "com.android.tv/US_TV/US_TV_MA";
/**
* A content rating object.
diff --git a/tests/common/src/com/android/tv/testing/Utils.java b/tests/common/src/com/android/tv/testing/Utils.java
index 6bc4e24e..66a13466 100644
--- a/tests/common/src/com/android/tv/testing/Utils.java
+++ b/tests/common/src/com/android/tv/testing/Utils.java
@@ -21,12 +21,10 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
-import android.media.tv.TvContentRating;
import android.media.tv.TvInputInfo;
import android.media.tv.TvInputManager;
import android.net.Uri;
import android.os.Looper;
-import android.text.TextUtils;
import android.util.Log;
import com.android.tv.common.TvCommonUtils;
@@ -118,9 +116,7 @@ public final class Utils {
Future<?> temp = MainThreadExecutor.getInstance().submit(runnable);
try {
temp.get();
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- } catch (ExecutionException e) {
+ } catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
diff --git a/tests/common/src/com/android/tv/testing/dvr/RecordingTestUtils.java b/tests/common/src/com/android/tv/testing/dvr/RecordingTestUtils.java
index ab3bb043..b9def95e 100644
--- a/tests/common/src/com/android/tv/testing/dvr/RecordingTestUtils.java
+++ b/tests/common/src/com/android/tv/testing/dvr/RecordingTestUtils.java
@@ -16,7 +16,6 @@
package com.android.tv.testing.dvr;
-import com.android.tv.dvr.DvrDataManagerInMemoryImpl;
import com.android.tv.dvr.ScheduledRecording;
import junit.framework.Assert;
@@ -25,26 +24,38 @@ import junit.framework.Assert;
* Static utils for using {@link ScheduledRecording} in tests.
*/
public final class RecordingTestUtils {
- public static ScheduledRecording createTestRecordingWithIdAndPeriod(long id, long channelId,
- long startTime, long endTime) {
- return ScheduledRecording.builder(startTime, endTime)
+ private static final String INPUT_ID = "input_id";
+ private static final int CHANNEL_ID = 273;
+
+ public static ScheduledRecording createTestRecordingWithIdAndPeriod(long id, String inputId,
+ long channelId, long startTime, long endTime) {
+ return ScheduledRecording.builder(inputId, channelId, startTime, endTime)
.setId(id)
.setChannelId(channelId)
.build();
}
- public static ScheduledRecording createTestRecordingWithPeriod(long channelId, long startTime,
- long endTime) {
- return createTestRecordingWithIdAndPeriod(ScheduledRecording.ID_NOT_SET, channelId,
+ public static ScheduledRecording createTestRecordingWithPeriod(String inputId,
+ long channelId, long startTime, long endTime) {
+ return createTestRecordingWithIdAndPeriod(ScheduledRecording.ID_NOT_SET, inputId, channelId,
startTime, endTime);
}
- public static ScheduledRecording addScheduledRecording(
- DvrDataManagerInMemoryImpl dvrDataManager, long channelId, long startTime,
- long endTime) {
- ScheduledRecording recording = createTestRecordingWithPeriod(channelId, startTime, endTime);
- recording = dvrDataManager.addScheduledRecordingInternal(recording);
- return recording;
+ public static ScheduledRecording createTestRecordingWithPriorityAndPeriod(long channelId,
+ long priority, long startTime, long endTime) {
+ return ScheduledRecording.builder(INPUT_ID, CHANNEL_ID, startTime, endTime)
+ .setChannelId(channelId)
+ .setPriority(priority)
+ .build();
+ }
+
+ public static ScheduledRecording createTestRecordingWithIdAndPriorityAndPeriod(long id,
+ long channelId, long priority, long startTime, long endTime) {
+ return ScheduledRecording.builder(INPUT_ID, CHANNEL_ID, startTime, endTime)
+ .setId(id)
+ .setChannelId(channelId)
+ .setPriority(priority)
+ .build();
}
public static ScheduledRecording normalizePriority(ScheduledRecording orig){
@@ -59,8 +70,8 @@ public final class RecordingTestUtils {
Assert.assertEquals("start time", expected.getStartTimeMs(), actual.getStartTimeMs());
Assert.assertEquals("end time", expected.getEndTimeMs(), actual.getEndTimeMs());
Assert.assertEquals("state", expected.getState(), actual.getState());
- Assert.assertEquals("parent season recording", expected.getParentSeasonRecording(),
- actual.getParentSeasonRecording());
+ Assert.assertEquals("parent series recording", expected.getSeriesRecordingId(),
+ actual.getSeriesRecordingId());
}
private RecordingTestUtils() { }