summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/de/test/antennapod
diff options
context:
space:
mode:
authorTom Hennen <tom.hennen@gmail.com>2015-10-09 04:46:20 -0400
committerTom Hennen <tom.hennen@gmail.com>2015-10-09 04:46:20 -0400
commit83e56a334c7513b402caa8cb11d279918704392f (patch)
treeed2378909dad548c701b24aa250c9c2124542132 /app/src/androidTest/java/de/test/antennapod
parenta9b04cdf419e03e8d49593866efc01b4e50dbf86 (diff)
downloadAntennaPod-83e56a334c7513b402caa8cb11d279918704392f.zip
Updated PlaybackTest to deal with some spurious bugs.
Problem was that the PlaybackController wasn't having currentMedia get updated when playback initially starts. Working around it here by getting the real playback controller that's being used in the app. Still need to update PlaybackSonicTest.
Diffstat (limited to 'app/src/androidTest/java/de/test/antennapod')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java155
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java3
2 files changed, 36 insertions, 122 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
index a27089726..b84ea59ad 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
@@ -1,6 +1,5 @@
package de.test.antennapod.ui;
-import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -8,7 +7,6 @@ import android.preference.PreferenceManager;
import android.test.ActivityInstrumentationTestCase2;
import android.test.FlakyTest;
import android.view.View;
-import android.widget.ImageButton;
import android.widget.ListView;
import com.robotium.solo.Solo;
@@ -26,8 +24,8 @@ import de.danoeh.antennapod.core.service.playback.PlayerStatus;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
-import de.danoeh.antennapod.core.util.playback.Playable;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
+import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
/**
* test cases for starting and ending playback from the MainActivity and AudioPlayerActivity
@@ -43,96 +41,13 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
private Context context;
- private PlaybackController controller;
- protected FeedMedia currentMedia;
-
- private PlaybackController createController(Activity activity) {
- return new PlaybackController(activity, false) {
-
- @Override
- public void setupGUI() {
- }
-
- @Override
- public void onPositionObserverUpdate() {
- }
-
- @Override
- public void onBufferStart() {
- }
-
- @Override
- public void onBufferEnd() {
- }
-
- @Override
- public void onBufferUpdate(float progress) {
- }
-
- @Override
- public void handleError(int code) {
- }
-
- @Override
- public void onReloadNotification(int code) {
- }
-
- @Override
- public void onSleepTimerUpdate() {
- }
-
- @Override
- public ImageButton getPlayButton() {
- return null;
- }
-
- @Override
- public void postStatusMsg(int msg) {
- }
-
- @Override
- public void clearStatusMsg() {
- }
-
- @Override
- public boolean loadMediaInfo() {
- Playable playable = controller.getMedia();
- if(playable == null) {
- currentMedia = null;
- return true;
- } else if(playable instanceof FeedMedia) {
- currentMedia = (FeedMedia) playable;
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public void onAwaitingVideoSurface() {
- }
-
- @Override
- public void onServiceQueried() {
- }
-
- @Override
- public void onShutdownNotification() {
- }
-
- @Override
- public void onPlaybackEnd() {
- currentMedia = null;
- }
-
- @Override
- public void onPlaybackSpeedChange() {
- }
+ private PlaybackController getPlaybackController() {
+ ExternalPlayerFragment fragment = (ExternalPlayerFragment)getActivity().getSupportFragmentManager().findFragmentByTag(ExternalPlayerFragment.TAG);
+ return fragment.getPlaybackControllerTestingOnly();
+ }
- @Override
- protected void setScreenOn(boolean enable) {
- }
- };
+ private FeedMedia getCurrentMedia() {
+ return (FeedMedia)getPlaybackController().getMedia();
}
public PlaybackTest() {
@@ -154,9 +69,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
.putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false)
.commit();
- controller = createController(getActivity());
- controller.init();
-
solo = new Solo(getInstrumentation(), getActivity());
uiTestUtils = new UITestUtils(context);
@@ -170,7 +82,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
@Override
public void tearDown() throws Exception {
- controller.release();
solo.finishOpenedActivities();
uiTestUtils.tearDown();
@@ -214,18 +125,17 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
long mediaId = episodes.get(0).getMedia().getId();
boolean playing = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if (getCurrentMedia() != null) {
+ return getCurrentMedia().getId() == mediaId;
} else {
return false;
}
- }, Timeout.getSmallTimeout());
+ }, Timeout.getLargeTimeout());
assertTrue(playing);
}
private void startLocalPlaybackFromQueue() {
openNavDrawer();
-
// if we try to just click on plain old text then
// we might wind up clicking on the fragment title and not
// the drawer element like we want.
@@ -234,19 +144,19 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
solo.waitForView(targetView);
solo.clickOnView(targetView);
-
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
final List<FeedItem> queue = DBReader.getQueue();
solo.clickOnImageButton(1);
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
long mediaId = queue.get(0).getMedia().getId();
boolean playing = solo.waitForCondition(() -> {
- if(currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if(getCurrentMedia() != null) {
+ return getCurrentMedia().getId() == mediaId;
} else {
return false;
}
- }, Timeout.getSmallTimeout());
+ }, Timeout.getLargeTimeout());
+
assertTrue(playing);
}
@@ -269,18 +179,21 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
uiTestUtils.addLocalFeedData(true);
List<FeedItem> queue = DBReader.getQueue();
final FeedItem first = queue.get(0);
-
startLocalPlaybackFromQueue();
boolean stopped = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() != first.getMedia().getId();
+ // the condition is met when playback ends and we're not playing
+ // anything else. When playback ends, currentMedia is set to null.
+ if (getPlaybackController().getStatus() != PlayerStatus.PLAYING) {
+ return true;
+ } else if (getCurrentMedia() != null) {
+ return getCurrentMedia().getId() != first.getMedia().getId();
} else {
- return false;
+ return true;
}
- }, Timeout.getSmallTimeout());
+ }, Timeout.getLargeTimeout());
assertTrue(stopped);
Thread.sleep(1000);
- PlayerStatus status = controller.getStatus();
+ PlayerStatus status = getPlaybackController().getStatus();
assertFalse(status.equals(PlayerStatus.PLAYING));
}
@@ -294,16 +207,16 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
startLocalPlaybackFromQueue();
boolean firstPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == first.getMedia().getId();
+ if (getCurrentMedia() != null) {
+ return getCurrentMedia().getId() == first.getMedia().getId();
} else {
return false;
}
- }, Timeout.getSmallTimeout());
+ }, Timeout.getLargeTimeout());
assertTrue(firstPlaying);
boolean secondPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == second.getMedia().getId();
+ if (getCurrentMedia() != null) {
+ return getCurrentMedia().getId() == second.getMedia().getId();
} else {
return false;
}
@@ -323,23 +236,23 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
startLocalPlayback();
long mediaId = episodes.get(0).getMedia().getId();
boolean startedPlaying = solo.waitForCondition(() -> {
- if (currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if (getCurrentMedia() != null) {
+ return getCurrentMedia().getId() == mediaId;
} else {
return false;
}
- }, Timeout.getSmallTimeout());
+ }, Timeout.getLargeTimeout());
assertTrue(startedPlaying);
boolean stoppedPlaying = solo.waitForCondition(() -> {
- return currentMedia == null || currentMedia.getId() != mediaId;
+ return getCurrentMedia() == null || getCurrentMedia().getId() != mediaId;
}, Timeout.getLargeTimeout());
assertTrue(stoppedPlaying);
startLocalPlayback();
boolean startedReplay = solo.waitForCondition(() -> {
- if(currentMedia != null) {
- return currentMedia.getId() == mediaId;
+ if(getCurrentMedia() != null) {
+ return getCurrentMedia().getId() == mediaId;
} else {
return false;
}
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
index 973426841..fdde58454 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
@@ -47,6 +47,7 @@ public class UITestUtils {
public static final int NUM_ITEMS_PER_FEED = 10;
public static final int HOME_VIEW = (Build.VERSION.SDK_INT >= 11) ? android.R.id.home : R.id.home;
+ public static final String TEST_FILE_NAME = "3sec.mp3";
private Context context;
@@ -119,7 +120,7 @@ public class UITestUtils {
}
Assert.assertFalse(mediaFile.exists());
- InputStream in = context.getAssets().open("testfile.mp3");
+ InputStream in = context.getAssets().open(TEST_FILE_NAME);
Assert.assertNotNull(in);
FileOutputStream out = new FileOutputStream(mediaFile);