Home | History | Annotate | Download | only in functional
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.mediaframeworktest.functional;
     18 
     19 import com.android.mediaframeworktest.MediaFrameworkTest;
     20 import com.android.mediaframeworktest.MediaNames;
     21 import com.android.mediaframeworktest.MediaProfileReader;
     22 
     23 import android.content.Context;
     24 import android.test.ActivityInstrumentationTestCase;
     25 import android.util.Log;
     26 import android.test.suitebuilder.annotation.LargeTest;
     27 import android.test.suitebuilder.annotation.MediumTest;
     28 import android.test.suitebuilder.annotation.Suppress;
     29 
     30 import java.io.File;
     31 
     32 /**
     33  * Junit / Instrumentation test case for the media player api
     34 
     35  */
     36 public class MediaPlayerApiTest extends ActivityInstrumentationTestCase<MediaFrameworkTest> {
     37    private boolean duratoinWithinTolerence = false;
     38    private String TAG = "MediaPlayerApiTest";
     39    private boolean isWMAEnable = false;
     40    private boolean isWMVEnable = false;
     41 
     42    Context mContext;
     43 
     44    public MediaPlayerApiTest() {
     45      super("com.android.mediaframeworktest", MediaFrameworkTest.class);
     46      isWMAEnable = MediaProfileReader.getWMAEnable();
     47      isWMVEnable = MediaProfileReader.getWMVEnable();
     48    }
     49 
     50     protected void setUp() throws Exception {
     51       super.setUp();
     52 
     53   }
     54 
     55     public boolean verifyDuration(int duration, int expectedDuration){
     56       if ((duration > expectedDuration * 1.1) || (duration < expectedDuration * 0.9))
     57          return false;
     58       else
     59         return true;
     60     }
     61 
     62 
     63 
     64     //Audio
     65     //Wait for PV bugs for MP3 duration
     66     @MediumTest
     67     public void testMP3CBRGetDuration() throws Exception {
     68       int duration = CodecTest.getDuration(MediaNames.MP3CBR);
     69       duratoinWithinTolerence = verifyDuration(duration, MediaNames.MP3CBR_LENGTH);
     70       assertTrue("MP3CBR getDuration", duratoinWithinTolerence);
     71     }
     72 
     73     @MediumTest
     74     public void testMP3VBRGetDuration() throws Exception {
     75       int duration = CodecTest.getDuration(MediaNames.MP3VBR);
     76       Log.v(TAG, "getDuration");
     77       duratoinWithinTolerence = verifyDuration(duration, MediaNames.MP3VBR_LENGTH);
     78       assertTrue("MP3VBR getDuration", duratoinWithinTolerence);
     79     }
     80 
     81     @MediumTest
     82     public void testMIDIGetDuration() throws Exception {
     83       int duration = CodecTest.getDuration(MediaNames.MIDI);
     84       duratoinWithinTolerence = verifyDuration(duration, MediaNames.MIDI_LENGTH);
     85       assertTrue("MIDI getDuration", duratoinWithinTolerence);
     86     }
     87 
     88     @MediumTest
     89     public void testWMA9GetDuration() throws Exception {
     90       if (isWMAEnable) {
     91             int duration = CodecTest.getDuration(MediaNames.WMA9);
     92             duratoinWithinTolerence = verifyDuration(duration, MediaNames.WMA9_LENGTH);
     93             assertTrue("WMA9 getDuration", duratoinWithinTolerence);
     94         }
     95     }
     96 
     97     @MediumTest
     98     public void testAMRGetDuration() throws Exception {
     99       int duration = CodecTest.getDuration(MediaNames.AMR);
    100       duratoinWithinTolerence = verifyDuration(duration, MediaNames.AMR_LENGTH);
    101       assertTrue("AMR getDuration", duratoinWithinTolerence);
    102     }
    103 
    104     /*
    105     public void testOGGGetDuration() throws Exception {
    106       int duration = CodecTest.getDuration(MediaNames.OGG);
    107       duratoinWithinTolerence = verifyDuration(duration, MediaNames.OGG_LENGTH);
    108       assertTrue("OGG getDuration", duratoinWithinTolerence);
    109     }*/
    110 
    111 
    112     //Test cases for GetCurrentPosition
    113     @LargeTest
    114     public void testMP3CBRGetCurrentPosition() throws Exception {
    115       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.MP3CBR);
    116       assertTrue("MP3CBR GetCurrentPosition", currentPosition);
    117     }
    118 
    119     @LargeTest
    120     public void testMP3VBRGetCurrentPosition() throws Exception {
    121       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.MP3VBR);
    122       assertTrue("MP3VBR GetCurrentPosition", currentPosition);
    123     }
    124 
    125     @LargeTest
    126     public void testMIDIGetCurrentPosition() throws Exception {
    127       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.MIDI);
    128       assertTrue("MIDI GetCurrentPosition", currentPosition);
    129     }
    130 
    131     @LargeTest
    132     public void testWMA9GetCurrentPosition() throws Exception {
    133         if (isWMAEnable) {
    134             boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.WMA9);
    135             assertTrue("WMA9 GetCurrentPosition", currentPosition);
    136         }
    137     }
    138 
    139     @LargeTest
    140     public void testAMRGetCurrentPosition() throws Exception {
    141       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.AMR);
    142       assertTrue("AMR GetCurrentPosition", currentPosition);
    143     }
    144 
    145     /*
    146     public void testOGGGetCurrentPosition() throws Exception {
    147       boolean currentPosition = CodecTest.getCurrentPosition(MediaNames.OGG);
    148       assertTrue("OGG GetCurrentPosition", currentPosition);
    149      */
    150 
    151     //Test cases for pause
    152     @LargeTest
    153     public void testMP3CBRPause() throws Exception {
    154       boolean isPaused = CodecTest.pause(MediaNames.MP3CBR);
    155       assertTrue("MP3CBR Pause", isPaused);
    156     }
    157 
    158     @LargeTest
    159     public void testMP3VBRPause() throws Exception {
    160       boolean isPaused = CodecTest.pause(MediaNames.MP3VBR);
    161       assertTrue("MP3VBR Pause", isPaused);
    162     }
    163 
    164     @LargeTest
    165     public void testMIDIPause() throws Exception {
    166       boolean isPaused = CodecTest.pause(MediaNames.MIDI);
    167       assertTrue("MIDI Pause", isPaused);
    168     }
    169 
    170     @LargeTest
    171     public void testWMA9Pause() throws Exception {
    172         if (isWMAEnable) {
    173             boolean isPaused = CodecTest.pause(MediaNames.WMA9);
    174             assertTrue("WMA9 Pause", isPaused);
    175         }
    176     }
    177 
    178     @LargeTest
    179     public void testAMRPause() throws Exception {
    180       boolean isPaused = CodecTest.pause(MediaNames.AMR);
    181       assertTrue("AMR Pause", isPaused);
    182     }
    183 
    184     /*
    185     public void testOGGPause() throws Exception {
    186       boolean isPaused = CodecTest.pause(MediaNames.OGG);
    187       assertTrue("OGG Pause", isPaused);
    188     }*/
    189 
    190     @MediumTest
    191     public void testMP3CBRPrepareStopRelease() throws Exception {
    192       CodecTest.prepareStopRelease(MediaNames.MP3CBR);
    193       assertTrue("MP3CBR prepareStopRelease", true);
    194     }
    195 
    196     @MediumTest
    197     public void testMIDIPrepareStopRelease() throws Exception {
    198       CodecTest.prepareStopRelease(MediaNames.MIDI);
    199       assertTrue("MIDI prepareStopRelease", true);
    200     }
    201 
    202     //One test case for seek before start
    203     @MediumTest
    204     public void testMP3CBRSeekBeforeStart() throws Exception {
    205       boolean seekBeforePlay = CodecTest.seektoBeforeStart(MediaNames.MP3CBR);
    206       assertTrue("MP3CBR SeekBeforePlay", seekBeforePlay);
    207     }
    208 
    209     //Skip test - Bug# 1120249
    210     /*
    211     public void testMP3CBRpreparePauseRelease() throws Exception {
    212       CodecTest.preparePauseRelease(MediaNames.MP3CBR);
    213       assertTrue("MP3CBR preparePauseRelease", true);
    214     }
    215 
    216     public void testMIDIpreparePauseRelease() throws Exception {
    217       CodecTest.preparePauseRelease(MediaNames.MIDI);
    218       assertTrue("MIDI preparePauseRelease", true);
    219     }
    220     */
    221 
    222 
    223     //Test cases for setLooping
    224     @LargeTest
    225     public void testMP3CBRSetLooping() throws Exception {
    226       boolean isLoop = CodecTest.setLooping(MediaNames.MP3CBR);
    227       assertTrue("MP3CBR setLooping", isLoop);
    228     }
    229 
    230     @LargeTest
    231     public void testMP3VBRSetLooping() throws Exception {
    232       boolean isLoop = CodecTest.setLooping(MediaNames.MP3VBR);
    233       Log.v(TAG, "setLooping");
    234       assertTrue("MP3VBR setLooping", isLoop);
    235     }
    236 
    237     @LargeTest
    238     public void testMIDISetLooping() throws Exception {
    239       boolean isLoop = CodecTest.setLooping(MediaNames.MIDI);
    240       assertTrue("MIDI setLooping", isLoop);
    241     }
    242 
    243     @LargeTest
    244     public void testWMA9SetLooping() throws Exception {
    245       if (isWMAEnable) {
    246         boolean isLoop = CodecTest.setLooping(MediaNames.WMA9);
    247         assertTrue("WMA9 setLooping", isLoop);
    248       }
    249     }
    250 
    251     @LargeTest
    252     public void testAMRSetLooping() throws Exception {
    253       boolean isLoop = CodecTest.setLooping(MediaNames.AMR);
    254       assertTrue("AMR setLooping", isLoop);
    255     }
    256 
    257     /*
    258     public void testOGGSetLooping() throws Exception {
    259       boolean isLoop = CodecTest.setLooping(MediaNames.OGG);
    260       assertTrue("OGG setLooping", isLoop);
    261     } */
    262 
    263     //Test cases for seekTo
    264     @LargeTest
    265     public void testMP3CBRSeekTo() throws Exception {
    266       boolean isLoop = CodecTest.seekTo(MediaNames.MP3CBR);
    267       assertTrue("MP3CBR seekTo", isLoop);
    268     }
    269 
    270     @LargeTest
    271     public void testMP3VBRSeekTo() throws Exception {
    272       boolean isLoop = CodecTest.seekTo(MediaNames.MP3VBR);
    273       Log.v(TAG, "seekTo");
    274       assertTrue("MP3VBR seekTo", isLoop);
    275     }
    276 
    277     @LargeTest
    278     public void testMIDISeekTo() throws Exception {
    279       boolean isLoop = CodecTest.seekTo(MediaNames.MIDI);
    280       assertTrue("MIDI seekTo", isLoop);
    281     }
    282 
    283     @LargeTest
    284     public void testWMA9SeekTo() throws Exception {
    285         if (isWMAEnable) {
    286             boolean isLoop = CodecTest.seekTo(MediaNames.WMA9);
    287             assertTrue("WMA9 seekTo", isLoop);
    288         }
    289     }
    290 
    291     @LargeTest
    292     public void testAMRSeekTo() throws Exception {
    293       boolean isLoop = CodecTest.seekTo(MediaNames.AMR);
    294       assertTrue("AMR seekTo", isLoop);
    295     }
    296 
    297     /*
    298     public void testOGGSeekTo() throws Exception {
    299       boolean isLoop = CodecTest.seekTo(MediaNames.OGG);
    300       assertTrue("OGG seekTo", isLoop);
    301     }*/
    302 
    303 
    304     //Jump to the end of the files
    305     @LargeTest
    306     public void testMP3CBRSeekToEnd() throws Exception {
    307       boolean isEnd = CodecTest.seekToEnd(MediaNames.MP3CBR);
    308       assertTrue("MP3CBR seekToEnd", isEnd);
    309     }
    310 
    311     @LargeTest
    312     public void testMP3VBRSeekToEnd() throws Exception {
    313       boolean isEnd = CodecTest.seekToEnd(MediaNames.MP3VBR);
    314       Log.v(TAG, "seekTo");
    315       assertTrue("MP3VBR seekToEnd", isEnd);
    316     }
    317 
    318     @LargeTest
    319     public void testMIDISeekToEnd() throws Exception {
    320       boolean isEnd = CodecTest.seekToEnd(MediaNames.MIDI);
    321       assertTrue("MIDI seekToEnd", isEnd);
    322     }
    323 
    324     @Suppress
    325     @LargeTest
    326     public void testWMA9SeekToEnd() throws Exception {
    327         if (isWMAEnable) {
    328             boolean isEnd = CodecTest.seekToEnd(MediaNames.WMA9);
    329             assertTrue("WMA9 seekToEnd", isEnd);
    330         }
    331     }
    332 
    333     @LargeTest
    334     public void testAMRSeekToEnd() throws Exception {
    335       boolean isEnd = CodecTest.seekToEnd(MediaNames.AMR);
    336       assertTrue("AMR seekToEnd", isEnd);
    337     }
    338 
    339     /*
    340     public void testOGGSeekToEnd() throws Exception {
    341       boolean isEnd = CodecTest.seekToEnd(MediaNames.OGG);
    342       assertTrue("OGG seekToEnd", isEnd);
    343     }*/
    344 
    345     @LargeTest
    346     public void testWAVSeekToEnd() throws Exception {
    347         if (isWMVEnable) {
    348             boolean isEnd = CodecTest.seekToEnd(MediaNames.WAV);
    349             assertTrue("WAV seekToEnd", isEnd);
    350         }
    351     }
    352 
    353     @MediumTest
    354     public void testLargeVideoHeigth() throws Exception {
    355       int height = 0;
    356       height = CodecTest.videoHeight(MediaNames.VIDEO_LARGE_SIZE_3GP);
    357       Log.v(TAG, "Video height = " +  height);
    358       assertEquals("streaming video height", 240, height);
    359     }
    360 
    361     @MediumTest
    362     public void testLargeVideoWidth() throws Exception {
    363       int width = 0;
    364       width = CodecTest.videoWidth(MediaNames.VIDEO_LARGE_SIZE_3GP);
    365       Log.v(TAG, "Video width = " +  width);
    366       assertEquals("streaming video width", 320, width);
    367     }
    368 
    369     @LargeTest
    370     public void testVideoMP4SeekTo() throws Exception {
    371       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_MP4);
    372       assertTrue("Local MP4 SeekTo", isSeek);
    373     }
    374 
    375     @LargeTest
    376     public void testVideoLong3gpSeekTo() throws Exception {
    377       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_LONG_3GP);
    378       assertTrue("Local 3gp SeekTo", isSeek);
    379     }
    380 
    381     @LargeTest
    382     public void testVideoH263AACSeekTo() throws Exception {
    383       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_H263_AAC);
    384       assertTrue("H263AAC SeekTo", isSeek);
    385     }
    386 
    387     @LargeTest
    388     public void testVideoH263AMRSeekTo() throws Exception {
    389       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_H263_AMR);
    390       assertTrue("H263AMR SeekTo", isSeek);
    391     }
    392 
    393     @LargeTest
    394     public void testVideoH264AACSeekTo() throws Exception {
    395       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_H264_AAC);
    396       assertTrue("H264AAC SeekTo", isSeek);
    397     }
    398 
    399     @LargeTest
    400     public void testVideoH264AMRSeekTo() throws Exception {
    401       boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_H264_AMR);
    402       assertTrue("H264AMR SeekTo", isSeek);
    403     }
    404 
    405     @LargeTest
    406     public void testVideoWMVSeekTo() throws Exception {
    407         Log.v(TAG, "wmv not enable");
    408         if (isWMVEnable) {
    409             Log.v(TAG, "wmv enable");
    410             boolean isSeek = CodecTest.videoSeekTo(MediaNames.VIDEO_WMV);
    411             assertTrue("WMV SeekTo", isSeek);
    412         }
    413     }
    414 
    415     @LargeTest
    416     public void testSoundRecord() throws Exception {
    417       boolean isRecordered = CodecTest.mediaRecorderRecord(MediaNames.RECORDER_OUTPUT);
    418       assertTrue("Recorder", isRecordered);
    419     }
    420 
    421     @LargeTest
    422     public void testGetThumbnail() throws Exception {
    423       boolean getThumbnail = CodecTest.getThumbnail(MediaNames.VIDEO_H264_AAC, MediaNames.GOLDEN_THUMBNAIL_OUTPUT_2);
    424       assertTrue("Get Thumbnail", getThumbnail);
    425     }
    426 
    427     //Play a mid file which the duration is around 210 seconds
    428     @LargeTest
    429     public void testMidiResources() throws Exception {
    430       boolean midiResources = CodecTest.resourcesPlayback(MediaFrameworkTest.midiafd,16000);
    431       assertTrue("Play midi from resources", midiResources);
    432     }
    433 
    434     @LargeTest
    435     public void testMp3Resources() throws Exception {
    436       boolean mp3Resources = CodecTest.resourcesPlayback(MediaFrameworkTest.mp3afd,25000);
    437       assertTrue("Play mp3 from resources", mp3Resources);
    438     }
    439 
    440     @MediumTest
    441     public void testPrepareAsyncReset() throws Exception {
    442       //assertTrue(MediaFrameworkTest.checkStreamingServer());
    443       boolean isReset = CodecTest.prepareAsyncReset(MediaNames.STREAM_MP3);
    444       assertTrue("PrepareAsync Reset", isReset);
    445     }
    446 
    447     @MediumTest
    448     public void testIsLooping() throws Exception {
    449         boolean isLooping = CodecTest.isLooping(MediaNames.AMR);
    450         assertTrue("isLooping", isLooping);
    451     }
    452 
    453     @MediumTest
    454     public void testIsLoopingAfterReset() throws Exception {
    455         boolean isLooping = CodecTest.isLoopingAfterReset(MediaNames.AMR);
    456         assertTrue("isLooping after reset", isLooping);
    457     }
    458 
    459     @LargeTest
    460     public void testLocalMp3PrepareAsyncCallback() throws Exception {
    461         boolean onPrepareSuccess =
    462             CodecTest.prepareAsyncCallback(MediaNames.MP3CBR, false);
    463         assertTrue("LocalMp3prepareAsyncCallback", onPrepareSuccess);
    464     }
    465 
    466     @LargeTest
    467     public void testLocalH263AMRPrepareAsyncCallback() throws Exception {
    468         boolean onPrepareSuccess =
    469             CodecTest.prepareAsyncCallback(MediaNames.VIDEO_H263_AMR, false);
    470         assertTrue("testLocalH263AMRPrepareAsyncCallback", onPrepareSuccess);
    471     }
    472 
    473     @LargeTest
    474     public void testStreamPrepareAsyncCallback() throws Exception {
    475         //assertTrue(MediaFrameworkTest.checkStreamingServer());
    476         boolean onPrepareSuccess =
    477             CodecTest.prepareAsyncCallback(MediaNames.STREAM_H264_480_360_1411k, false);
    478         assertTrue("StreamH264PrepareAsyncCallback", onPrepareSuccess);
    479     }
    480 
    481     @LargeTest
    482     public void testStreamPrepareAsyncCallbackReset() throws Exception {
    483         //assertTrue(MediaFrameworkTest.checkStreamingServer());
    484         boolean onPrepareSuccess =
    485             CodecTest.prepareAsyncCallback(MediaNames.STREAM_H264_480_360_1411k, true);
    486         assertTrue("StreamH264PrepareAsyncCallback", onPrepareSuccess);
    487     }
    488 
    489     //Provide a tool to play all kinds of media files in a directory
    490     @Suppress
    491     @LargeTest
    492     public void testMediaSamples() throws Exception {
    493         // load directory files
    494         boolean onCompleteSuccess = false;
    495         File dir = new File(MediaNames.MEDIA_SAMPLE_POOL);
    496         String[] children = dir.list();
    497         if (children == null) {
    498             Log.v("MediaPlayerApiTest:testMediaSamples", "dir is empty");
    499             return;
    500         } else {
    501             for (int i = 0; i < children.length; i++) {
    502                 //Get filename of directory
    503                 String filename = children[i];
    504                 Log.v("MediaPlayerApiTest",
    505                     "testMediaSamples: file to be played: "
    506                     + dir + "/" + filename);
    507                 onCompleteSuccess =
    508                     CodecTest.playMediaSamples(dir + "/" + filename);
    509                 assertTrue("testMediaSamples", onCompleteSuccess);
    510             }
    511        }
    512     }
    513 }
    514