Merge pull request #1258 from TomHennen/fix_playback_tests
Updated playback tests to make them more reliable
This commit is contained in:
commit
0e2b056d4e
Binary file not shown.
|
@ -46,98 +46,6 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
|
|
||||||
private Context context;
|
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() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setScreenOn(boolean enable) {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlaybackSonicTest() {
|
public PlaybackSonicTest() {
|
||||||
super(MainActivity.class);
|
super(MainActivity.class);
|
||||||
}
|
}
|
||||||
|
@ -158,9 +66,6 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
.putBoolean(UserPreferences.PREF_SONIC, true)
|
.putBoolean(UserPreferences.PREF_SONIC, true)
|
||||||
.commit();
|
.commit();
|
||||||
|
|
||||||
controller = createController(getActivity());
|
|
||||||
controller.init();
|
|
||||||
|
|
||||||
solo = new Solo(getInstrumentation(), getActivity());
|
solo = new Solo(getInstrumentation(), getActivity());
|
||||||
|
|
||||||
uiTestUtils = new UITestUtils(context);
|
uiTestUtils = new UITestUtils(context);
|
||||||
|
@ -174,7 +79,6 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
controller.release();
|
|
||||||
solo.finishOpenedActivities();
|
solo.finishOpenedActivities();
|
||||||
uiTestUtils.tearDown();
|
uiTestUtils.tearDown();
|
||||||
|
|
||||||
|
@ -187,6 +91,7 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
|
|
||||||
private void openNavDrawer() {
|
private void openNavDrawer() {
|
||||||
solo.clickOnScreen(50, 50);
|
solo.clickOnScreen(50, 50);
|
||||||
|
getInstrumentation().waitForIdleSync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setContinuousPlaybackPreference(boolean value) {
|
private void setContinuousPlaybackPreference(boolean value) {
|
||||||
|
@ -209,8 +114,10 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
View targetView = drawerView.getChildAt(EPISODES_DRAWER_LIST_INDEX);
|
View targetView = drawerView.getChildAt(EPISODES_DRAWER_LIST_INDEX);
|
||||||
solo.waitForView(targetView);
|
solo.waitForView(targetView);
|
||||||
solo.clickOnView(targetView);
|
solo.clickOnView(targetView);
|
||||||
|
getInstrumentation().waitForIdleSync();
|
||||||
solo.waitForText(solo.getString(R.string.all_episodes_short_label));
|
solo.waitForText(solo.getString(R.string.all_episodes_short_label));
|
||||||
solo.clickOnText(solo.getString(R.string.all_episodes_short_label));
|
solo.clickOnText(solo.getString(R.string.all_episodes_short_label));
|
||||||
|
getInstrumentation().waitForIdleSync();
|
||||||
|
|
||||||
final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10);
|
final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10);
|
||||||
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
|
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
|
||||||
|
@ -218,8 +125,8 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
|
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
|
||||||
long mediaId = episodes.get(0).getMedia().getId();
|
long mediaId = episodes.get(0).getMedia().getId();
|
||||||
boolean playing = solo.waitForCondition(() -> {
|
boolean playing = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -237,16 +144,17 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
// this should be 'Queue'
|
// this should be 'Queue'
|
||||||
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
|
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
|
||||||
solo.waitForView(targetView);
|
solo.waitForView(targetView);
|
||||||
|
getInstrumentation().waitForIdleSync();
|
||||||
solo.clickOnView(targetView);
|
solo.clickOnView(targetView);
|
||||||
|
|
||||||
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
|
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
|
||||||
|
|
||||||
final List<FeedItem> queue = DBReader.getQueue();
|
final List<FeedItem> queue = DBReader.getQueue();
|
||||||
solo.clickOnImageButton(1);
|
solo.clickOnImageButton(1);
|
||||||
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
|
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
|
||||||
long mediaId = queue.get(0).getMedia().getId();
|
long mediaId = queue.get(0).getMedia().getId();
|
||||||
boolean playing = solo.waitForCondition(() -> {
|
boolean playing = solo.waitForCondition(() -> {
|
||||||
if(currentMedia != null) {
|
if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -276,15 +184,19 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
|
|
||||||
startLocalPlaybackFromQueue();
|
startLocalPlaybackFromQueue();
|
||||||
boolean stopped = solo.waitForCondition(() -> {
|
boolean stopped = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getPlaybackController(getActivity()).getStatus()
|
||||||
return currentMedia.getId() != first.getMedia().getId();
|
!= PlayerStatus.PLAYING) {
|
||||||
|
return true;
|
||||||
|
} else if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
|
return uiTestUtils.getCurrentMedia(getActivity()).getId()
|
||||||
|
!= first.getMedia().getId();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
}, Timeout.getSmallTimeout());
|
}, Timeout.getSmallTimeout());
|
||||||
assertTrue(stopped);
|
assertTrue(stopped);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
PlayerStatus status = controller.getStatus();
|
PlayerStatus status = uiTestUtils.getPlaybackController(getActivity()).getStatus();
|
||||||
assertFalse(status.equals(PlayerStatus.PLAYING));
|
assertFalse(status.equals(PlayerStatus.PLAYING));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,16 +210,18 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
|
|
||||||
startLocalPlaybackFromQueue();
|
startLocalPlaybackFromQueue();
|
||||||
boolean firstPlaying = solo.waitForCondition(() -> {
|
boolean firstPlaying = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == first.getMedia().getId();
|
return uiTestUtils.getCurrentMedia(getActivity()).getId()
|
||||||
|
== first.getMedia().getId();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}, Timeout.getSmallTimeout());
|
}, Timeout.getSmallTimeout());
|
||||||
assertTrue(firstPlaying);
|
assertTrue(firstPlaying);
|
||||||
boolean secondPlaying = solo.waitForCondition(() -> {
|
boolean secondPlaying = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == second.getMedia().getId();
|
return uiTestUtils.getCurrentMedia(getActivity()).getId()
|
||||||
|
== second.getMedia().getId();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -327,8 +241,8 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
startLocalPlayback();
|
startLocalPlayback();
|
||||||
long mediaId = episodes.get(0).getMedia().getId();
|
long mediaId = episodes.get(0).getMedia().getId();
|
||||||
boolean startedPlaying = solo.waitForCondition(() -> {
|
boolean startedPlaying = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -336,14 +250,15 @@ public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActi
|
||||||
assertTrue(startedPlaying);
|
assertTrue(startedPlaying);
|
||||||
|
|
||||||
boolean stoppedPlaying = solo.waitForCondition(() -> {
|
boolean stoppedPlaying = solo.waitForCondition(() -> {
|
||||||
return currentMedia == null || currentMedia.getId() != mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()) == null
|
||||||
|
|| uiTestUtils.getCurrentMedia(getActivity()).getId() != mediaId;
|
||||||
}, Timeout.getLargeTimeout());
|
}, Timeout.getLargeTimeout());
|
||||||
assertTrue(stoppedPlaying);
|
assertTrue(stoppedPlaying);
|
||||||
|
|
||||||
startLocalPlayback();
|
startLocalPlayback();
|
||||||
boolean startedReplay = solo.waitForCondition(() -> {
|
boolean startedReplay = solo.waitForCondition(() -> {
|
||||||
if(currentMedia != null) {
|
if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package de.test.antennapod.ui;
|
package de.test.antennapod.ui;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
@ -8,7 +7,6 @@ import android.preference.PreferenceManager;
|
||||||
import android.test.ActivityInstrumentationTestCase2;
|
import android.test.ActivityInstrumentationTestCase2;
|
||||||
import android.test.FlakyTest;
|
import android.test.FlakyTest;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageButton;
|
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
|
||||||
import com.robotium.solo.Solo;
|
import com.robotium.solo.Solo;
|
||||||
|
@ -19,15 +17,12 @@ import java.util.List;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.activity.MainActivity;
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
|
||||||
import de.danoeh.antennapod.core.storage.DBReader;
|
import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
import de.danoeh.antennapod.core.storage.PodDBAdapter;
|
import de.danoeh.antennapod.core.storage.PodDBAdapter;
|
||||||
import de.danoeh.antennapod.core.util.playback.Playable;
|
|
||||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test cases for starting and ending playback from the MainActivity and AudioPlayerActivity
|
* test cases for starting and ending playback from the MainActivity and AudioPlayerActivity
|
||||||
|
@ -43,98 +38,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
|
|
||||||
private Context context;
|
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() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setScreenOn(boolean enable) {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlaybackTest() {
|
public PlaybackTest() {
|
||||||
super(MainActivity.class);
|
super(MainActivity.class);
|
||||||
}
|
}
|
||||||
|
@ -154,9 +57,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
.putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false)
|
.putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false)
|
||||||
.commit();
|
.commit();
|
||||||
|
|
||||||
controller = createController(getActivity());
|
|
||||||
controller.init();
|
|
||||||
|
|
||||||
solo = new Solo(getInstrumentation(), getActivity());
|
solo = new Solo(getInstrumentation(), getActivity());
|
||||||
|
|
||||||
uiTestUtils = new UITestUtils(context);
|
uiTestUtils = new UITestUtils(context);
|
||||||
|
@ -170,7 +70,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
controller.release();
|
|
||||||
solo.finishOpenedActivities();
|
solo.finishOpenedActivities();
|
||||||
uiTestUtils.tearDown();
|
uiTestUtils.tearDown();
|
||||||
|
|
||||||
|
@ -214,8 +113,8 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
|
solo.clickOnView(solo.getView(R.id.butSecondaryAction));
|
||||||
long mediaId = episodes.get(0).getMedia().getId();
|
long mediaId = episodes.get(0).getMedia().getId();
|
||||||
boolean playing = solo.waitForCondition(() -> {
|
boolean playing = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +124,6 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
|
|
||||||
private void startLocalPlaybackFromQueue() {
|
private void startLocalPlaybackFromQueue() {
|
||||||
openNavDrawer();
|
openNavDrawer();
|
||||||
|
|
||||||
// if we try to just click on plain old text then
|
// if we try to just click on plain old text then
|
||||||
// we might wind up clicking on the fragment title and not
|
// we might wind up clicking on the fragment title and not
|
||||||
// the drawer element like we want.
|
// the drawer element like we want.
|
||||||
|
@ -234,19 +132,20 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
|
View targetView = drawerView.getChildAt(QUEUE_DRAWER_LIST_INDEX);
|
||||||
solo.waitForView(targetView);
|
solo.waitForView(targetView);
|
||||||
solo.clickOnView(targetView);
|
solo.clickOnView(targetView);
|
||||||
|
|
||||||
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
|
assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction)));
|
||||||
|
|
||||||
final List<FeedItem> queue = DBReader.getQueue();
|
final List<FeedItem> queue = DBReader.getQueue();
|
||||||
solo.clickOnImageButton(1);
|
solo.clickOnImageButton(1);
|
||||||
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
|
assertTrue(solo.waitForView(solo.getView(R.id.butPlay)));
|
||||||
long mediaId = queue.get(0).getMedia().getId();
|
long mediaId = queue.get(0).getMedia().getId();
|
||||||
boolean playing = solo.waitForCondition(() -> {
|
boolean playing = solo.waitForCondition(() -> {
|
||||||
if(currentMedia != null) {
|
if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}, Timeout.getSmallTimeout());
|
}, Timeout.getSmallTimeout());
|
||||||
|
|
||||||
assertTrue(playing);
|
assertTrue(playing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,18 +168,21 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
uiTestUtils.addLocalFeedData(true);
|
uiTestUtils.addLocalFeedData(true);
|
||||||
List<FeedItem> queue = DBReader.getQueue();
|
List<FeedItem> queue = DBReader.getQueue();
|
||||||
final FeedItem first = queue.get(0);
|
final FeedItem first = queue.get(0);
|
||||||
|
|
||||||
startLocalPlaybackFromQueue();
|
startLocalPlaybackFromQueue();
|
||||||
boolean stopped = solo.waitForCondition(() -> {
|
boolean stopped = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getPlaybackController(getActivity()).getStatus()
|
||||||
return currentMedia.getId() != first.getMedia().getId();
|
!= PlayerStatus.PLAYING) {
|
||||||
|
return true;
|
||||||
|
} else if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
|
return uiTestUtils.getCurrentMedia(getActivity()).getId()
|
||||||
|
!= first.getMedia().getId();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
}, Timeout.getSmallTimeout());
|
}, Timeout.getSmallTimeout());
|
||||||
assertTrue(stopped);
|
assertTrue(stopped);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
PlayerStatus status = controller.getStatus();
|
PlayerStatus status = uiTestUtils.getPlaybackController(getActivity()).getStatus();
|
||||||
assertFalse(status.equals(PlayerStatus.PLAYING));
|
assertFalse(status.equals(PlayerStatus.PLAYING));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,16 +196,18 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
|
|
||||||
startLocalPlaybackFromQueue();
|
startLocalPlaybackFromQueue();
|
||||||
boolean firstPlaying = solo.waitForCondition(() -> {
|
boolean firstPlaying = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == first.getMedia().getId();
|
return uiTestUtils.getCurrentMedia(getActivity()).getId()
|
||||||
|
== first.getMedia().getId();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}, Timeout.getSmallTimeout());
|
}, Timeout.getSmallTimeout());
|
||||||
assertTrue(firstPlaying);
|
assertTrue(firstPlaying);
|
||||||
boolean secondPlaying = solo.waitForCondition(() -> {
|
boolean secondPlaying = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == second.getMedia().getId();
|
return uiTestUtils.getCurrentMedia(getActivity()).getId()
|
||||||
|
== second.getMedia().getId();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -323,8 +227,8 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
startLocalPlayback();
|
startLocalPlayback();
|
||||||
long mediaId = episodes.get(0).getMedia().getId();
|
long mediaId = episodes.get(0).getMedia().getId();
|
||||||
boolean startedPlaying = solo.waitForCondition(() -> {
|
boolean startedPlaying = solo.waitForCondition(() -> {
|
||||||
if (currentMedia != null) {
|
if (uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -332,14 +236,15 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity>
|
||||||
assertTrue(startedPlaying);
|
assertTrue(startedPlaying);
|
||||||
|
|
||||||
boolean stoppedPlaying = solo.waitForCondition(() -> {
|
boolean stoppedPlaying = solo.waitForCondition(() -> {
|
||||||
return currentMedia == null || currentMedia.getId() != mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()) == null
|
||||||
|
|| uiTestUtils.getCurrentMedia(getActivity()).getId() != mediaId;
|
||||||
}, Timeout.getLargeTimeout());
|
}, Timeout.getLargeTimeout());
|
||||||
assertTrue(stoppedPlaying);
|
assertTrue(stoppedPlaying);
|
||||||
|
|
||||||
startLocalPlayback();
|
startLocalPlayback();
|
||||||
boolean startedReplay = solo.waitForCondition(() -> {
|
boolean startedReplay = solo.waitForCondition(() -> {
|
||||||
if(currentMedia != null) {
|
if(uiTestUtils.getCurrentMedia(getActivity()) != null) {
|
||||||
return currentMedia.getId() == mediaId;
|
return uiTestUtils.getCurrentMedia(getActivity()).getId() == mediaId;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.core.feed.EventDistributor;
|
import de.danoeh.antennapod.core.feed.EventDistributor;
|
||||||
import de.danoeh.antennapod.core.feed.Feed;
|
import de.danoeh.antennapod.core.feed.Feed;
|
||||||
import de.danoeh.antennapod.core.feed.FeedImage;
|
import de.danoeh.antennapod.core.feed.FeedImage;
|
||||||
|
@ -28,6 +29,8 @@ import de.danoeh.antennapod.core.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||||
import de.danoeh.antennapod.core.storage.PodDBAdapter;
|
import de.danoeh.antennapod.core.storage.PodDBAdapter;
|
||||||
|
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||||
|
import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
|
||||||
import de.greenrobot.event.EventBus;
|
import de.greenrobot.event.EventBus;
|
||||||
import de.test.antennapod.util.service.download.HTTPBin;
|
import de.test.antennapod.util.service.download.HTTPBin;
|
||||||
import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
|
import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
|
||||||
|
@ -47,6 +50,7 @@ public class UITestUtils {
|
||||||
public static final int NUM_ITEMS_PER_FEED = 10;
|
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 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;
|
private Context context;
|
||||||
|
@ -119,7 +123,7 @@ public class UITestUtils {
|
||||||
}
|
}
|
||||||
Assert.assertFalse(mediaFile.exists());
|
Assert.assertFalse(mediaFile.exists());
|
||||||
|
|
||||||
InputStream in = context.getAssets().open("testfile.mp3");
|
InputStream in = context.getAssets().open(TEST_FILE_NAME);
|
||||||
Assert.assertNotNull(in);
|
Assert.assertNotNull(in);
|
||||||
|
|
||||||
FileOutputStream out = new FileOutputStream(mediaFile);
|
FileOutputStream out = new FileOutputStream(mediaFile);
|
||||||
|
@ -218,4 +222,13 @@ public class UITestUtils {
|
||||||
EventDistributor.getInstance().sendFeedUpdateBroadcast();
|
EventDistributor.getInstance().sendFeedUpdateBroadcast();
|
||||||
EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED_ITEMS, queue));
|
EventBus.getDefault().post(new QueueEvent(QueueEvent.Action.ADDED_ITEMS, queue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PlaybackController getPlaybackController(MainActivity mainActivity) {
|
||||||
|
ExternalPlayerFragment fragment = (ExternalPlayerFragment)mainActivity.getSupportFragmentManager().findFragmentByTag(ExternalPlayerFragment.TAG);
|
||||||
|
return fragment.getPlaybackControllerTestingOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
public FeedMedia getCurrentMedia(MainActivity mainActivity) {
|
||||||
|
return (FeedMedia)getPlaybackController(mainActivity).getMedia();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -191,7 +191,7 @@ public class MainActivity extends ActionBarActivity implements NavDrawerActivity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
externalPlayerFragment = new ExternalPlayerFragment();
|
externalPlayerFragment = new ExternalPlayerFragment();
|
||||||
transaction.replace(R.id.playerFragment, externalPlayerFragment);
|
transaction.replace(R.id.playerFragment, externalPlayerFragment, ExternalPlayerFragment.TAG);
|
||||||
transaction.commit();
|
transaction.commit();
|
||||||
|
|
||||||
checkFirstLaunch();
|
checkFirstLaunch();
|
||||||
|
|
|
@ -26,7 +26,7 @@ import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||||
* if the PlaybackService is running
|
* if the PlaybackService is running
|
||||||
*/
|
*/
|
||||||
public class ExternalPlayerFragment extends Fragment {
|
public class ExternalPlayerFragment extends Fragment {
|
||||||
private static final String TAG = "ExternalPlayerFragment";
|
public static final String TAG = "ExternalPlayerFragment";
|
||||||
|
|
||||||
private ViewGroup fragmentLayout;
|
private ViewGroup fragmentLayout;
|
||||||
private ImageView imgvCover;
|
private ImageView imgvCover;
|
||||||
|
@ -230,4 +230,8 @@ public class ExternalPlayerFragment extends Fragment {
|
||||||
return Converter.getDurationStringLong(position) + " / "
|
return Converter.getDurationStringLong(position) + " / "
|
||||||
+ Converter.getDurationStringLong(duration);
|
+ Converter.getDurationStringLong(duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PlaybackController getPlaybackControllerTestingOnly() {
|
||||||
|
return controller;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue