/* * 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.classtest; import android.util.Log; import com.h6ah4i.android.media.IBasicMediaPlayer; import com.h6ah4i.android.media.IMediaPlayerFactory; import com.h6ah4i.android.media.openslmediaplayer.base.BasicMediaPlayerTestCaseBase; import com.h6ah4i.android.media.openslmediaplayer.testing.ParameterizedTestArgs; import com.h6ah4i.android.media.openslmediaplayer.testing.ParameterizedTestSuiteBuilder; import junit.framework.TestSuite; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class BasicMediaPlayerClassTestCase extends BasicMediaPlayerTestCaseBase { private static final String TAG = "BasicMediaPlayerClassTC"; public static TestSuite buildTestSuite( Class<? extends IMediaPlayerFactory> factoryClazz) { final List<BasicTestParams> params = new ArrayList<>(); params.add(new BasicTestParams(factoryClazz)); return ParameterizedTestSuiteBuilder.buildDetail( BasicMediaPlayerClassTestCase.class, params, null, false); } public BasicMediaPlayerClassTestCase(ParameterizedTestArgs args) { super(args); } // // Exposed test cases // public void testCreateAndReleaseMultiplePlayers() throws Throwable { final int N = 20; List<IBasicMediaPlayer> players = new ArrayList<>(); for (int i = 0; i < N; i++) { try { players.add(getFactory().createMediaPlayer()); } catch (IllegalStateException e) { // OpenSLMediaPlayer may throw IllegalStateException if // native resource cannot be allocated Log.i(TAG, "Failed to create player object (COUNT = " + players.size() + ")"); break; } } for (int i = 0; i < players.size(); i++) { players.get(i).release(); } } public void testCreateAndReleaseReversedOrderMultiplePlayers() throws Throwable { final int N = 20; List<IBasicMediaPlayer> players = new ArrayList<>(); for (int i = 0; i < N; i++) { try { players.add(getFactory().createMediaPlayer()); } catch (IllegalStateException e) { // OpenSLMediaPlayer may throw IllegalStateException if // native resource cannot be allocated Log.i(TAG, "Failed to create player object (COUNT = " + players.size() + ")"); break; } } Collections.reverse(players); for (IBasicMediaPlayer player : players) { player.release(); } } public void testStartMultiplePlayers() throws Throwable { final int N = 20; List<IBasicMediaPlayer> players = new ArrayList<>(); for (int i = 0; i < N; i++) { try { players.add(createWrappedPlayerInstance()); } catch (IllegalStateException e) { // OpenSLMediaPlayer may throw IllegalStateException if // native resource cannot be allocated Log.i(TAG, "Failed to create player object (COUNT = " + players.size() + ")"); break; } } for (IBasicMediaPlayer player : players) { transitStateToPrepared(player, null); } for (IBasicMediaPlayer player : players) { player.start(); } for (IBasicMediaPlayer player : players) { player.release(); } } }