/*
* Copyright (C) 2014 Haruki Hasegawa
*
* 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.h6ah4i.android.media.openslmediaplayer.base;
import android.os.Build;
import java.io.IOException;
import com.h6ah4i.android.media.IBasicMediaPlayer;
import com.h6ah4i.android.media.openslmediaplayer.testing.ParameterizedTestArgs;
public abstract class BasicMediaPlayerStateTestCaseBase
extends BasicMediaPlayerTestCaseBase {
public BasicMediaPlayerStateTestCaseBase(ParameterizedTestArgs args) {
super(args);
}
//
// Test Cases (exported)
//
// State: IDLE
public void testStateIdle() throws Throwable {
implTestStateIdle(getTestParams());
}
public void testStateIdleAfterReset() throws Throwable {
implTestStateIdleAfterReset(getTestParams());
}
// State: INITIALIZED
public void testStateInitialized() throws Throwable {
implTestStateInitialized(getTestParams());
}
public void testStateInitializedAfterReset() throws Throwable {
implTestStateInitializedAfterReset(getTestParams());
}
// State: PREPARING
public void testStatePreparing() throws Throwable {
implTestStatePreparing(getTestParams());
}
public void testStatePreparingAfterReset() throws Throwable {
implTestStatePreparingAfterReset(getTestParams());
}
// State: PREPARED
public void testStatePrepared() throws Throwable {
implTestStatePrepared(getTestParams());
}
public void testStatePreparedAfterReset() throws Throwable {
implTestStatePreparedAfterReset(getTestParams());
}
// State: STARTED
public void testStateStarted() throws Throwable {
implTestStateStarted(getTestParams());
}
public void testStateStartedAfterReset() throws Throwable {
implTestStateStartedAfterReset(getTestParams());
}
// State: PAUSED
public void testStatePaused() throws Throwable {
implTestStatePaused(getTestParams());
}
public void testStatePausedAfterReset() throws Throwable {
implTestStatePausedAfterReset(getTestParams());
}
// State: STOPPEED
public void testStateStopped() throws Throwable {
implTestStateStopped(getTestParams());
}
public void testStateStoppedAfterReset() throws Throwable {
implTestStateStoppedAfterReset(getTestParams());
}
// State: PLAYBACK COMPLETED
public void testStatePlaybackCompleted() throws Throwable {
implTestStatePlaybackCompleted(getTestParams());
}
public void testStatePlaybackCompletedAfterReset() throws Throwable {
implTestStatePlaybackCompletedAfterReset(getTestParams());
}
// State: ERROR (before prepared)
public void testStateErrorBeforePrepared() throws Throwable {
implTestStateErrorBeforePrepared(getTestParams());
}
public void testStateErrorBeforePreparedAndAfterReset() throws Throwable {
implTestStateErrorBeforePreparedAndAfterReset(getTestParams());
}
// State: ERROR (after prepared)
public void testStateErrorAfterPrepared() throws Throwable {
implTestStateErrorAfterPrepared(getTestParams());
}
public void testStateErrorAfterPreparedAndAfterReset() throws Throwable {
implTestStateErrorAfterPreparedAndAfterReset(getTestParams());
}
// State: END
public void testStateEnd() throws Throwable {
implTestStateEnd(getTestParams());
}
//
// Test Cases (state transition & calling actual test method)
//
protected void implTestStateIdle(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToIdle(player, args);
onTestStateIdle(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateIdleAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToIdle(player, args);
onTestStateIdle(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateInitialized(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToInitialized(player, args);
onTestStateInitialized(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateInitializedAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToInitialized(player, args);
onTestStateInitialized(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePreparing(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToPreparing(player, args);
onTestStatePreparing(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePreparingAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToPreparing(player, args);
onTestStatePreparing(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePrepared(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToPrepared(player, args);
onTestStatePrepared(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePreparedAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToPrepared(player, args);
onTestStatePrepared(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateStarted(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToStarted(player, args);
onTestStateStarted(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateStartedAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToStarted(player, args);
onTestStateStarted(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePaused(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToPaused(player, args);
onTestStatePaused(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePausedAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToPaused(player, args);
onTestStatePaused(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateStopped(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToStopped(player, args);
onTestStateStopped(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateStoppedAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToStopped(player, args);
onTestStateStopped(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePlaybackCompleted(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToPlaybackCompleted(player, args);
onTestStatePlaybackCompleted(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStatePlaybackCompletedAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToPlaybackCompleted(player, args);
onTestStatePlaybackCompleted(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateErrorBeforePrepared(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToErrorBeforePrepared(player, args);
onTestStateErrorBeforePrepared(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateErrorBeforePreparedAndAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToErrorBeforePrepared(player, args);
onTestStateErrorBeforePrepared(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateErrorAfterPrepared(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToErrorAfterPrepared(player, args);
onTestStateErrorAfterPrepared(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateErrorAfterPreparedAndAfterReset(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
playLocalFileAndReset(player, args);
transitStateToErrorAfterPrepared(player, args);
onTestStateErrorAfterPrepared(player, args);
} finally {
releaseQuietly(player);
}
}
protected void implTestStateEnd(Object args) throws Throwable {
IBasicMediaPlayer player = createWrappedPlayerInstance();
try {
transitStateToEnd(player, args);
onTestStateEnd(player, args);
} finally {
releaseQuietly(player);
}
}
@Override
protected void setDataSourceForCommonTests(IBasicMediaPlayer player, Object args)
throws IOException {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Older devices returns completely wrong duration for OGG files.
player.setDataSource(getStorageFilePath(LOCAL_440HZ_STEREO_MP3));
} else {
// MP3 format should not be used for this test
// because MP3 file cannot handle duration info correctly.
player.setDataSource(getStorageFilePath(LOCAL_440HZ_STEREO_OGG));
}
}
@Override
protected void setDataSourceForPlaybackCompletedTest(IBasicMediaPlayer player, Object args)
throws IOException {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// Older devices returns completely wrong duration for OGG files.
player.setDataSource(getStorageFilePath(LOCAL_440HZ_STEREO_MP3));
} else {
// MP3 format should not be used for this test
// because MP3 file cannot handle duration info correctly.
player.setDataSource(getStorageFilePath(LOCAL_440HZ_STEREO_OGG));
}
}
//
// Test Methods
//
protected void onTestStateIdle(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStateInitialized(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStatePreparing(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStatePrepared(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStateStarted(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStatePaused(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStateStopped(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
protected void onTestStatePlaybackCompleted(IBasicMediaPlayer player, Object args)
throws Throwable {
failNotOverrided();
}
protected void onTestStateErrorBeforePrepared(IBasicMediaPlayer player, Object args)
throws Throwable {
failNotOverrided();
}
protected void onTestStateErrorAfterPrepared(IBasicMediaPlayer player, Object args)
throws Throwable {
failNotOverrided();
}
protected void onTestStateEnd(IBasicMediaPlayer player, Object args) throws Throwable {
failNotOverrided();
}
}