1package com.xtremelabs.robolectric.shadows; 2 3 4import android.media.AudioManager; 5import com.xtremelabs.robolectric.Robolectric; 6import com.xtremelabs.robolectric.WithTestDefaultsRunner; 7import org.junit.Before; 8import org.junit.Test; 9import org.junit.runner.RunWith; 10 11import static org.junit.Assert.*; 12 13@RunWith(WithTestDefaultsRunner.class) 14public class AudioManagerTest { 15 private AudioManager audioManager; 16 private ShadowAudioManager shadowAudioManager; 17 private AudioManager.OnAudioFocusChangeListener listener; 18 19 @Before 20 public void setUp() throws Exception { 21 audioManager = Robolectric.newInstanceOf(AudioManager.class); 22 shadowAudioManager = Robolectric.shadowOf(audioManager); 23 listener = new AudioManager.OnAudioFocusChangeListener() { 24 @Override 25 public void onAudioFocusChange(int focusChange) { 26 } 27 }; 28 } 29 30 @Test 31 public void requestAudioFocus_shouldRecordArgumentsOfMostRecentCall() { 32 assertNull(shadowAudioManager.getLastAudioFocusRequest()); 33 audioManager.requestAudioFocus(listener, 999, 888); 34 assertSame(listener, shadowAudioManager.getLastAudioFocusRequest().listener); 35 assertEquals(999, shadowAudioManager.getLastAudioFocusRequest().streamType); 36 assertEquals(888, shadowAudioManager.getLastAudioFocusRequest().durationHint); 37 } 38 39 @Test 40 public void requestAudioFocus_shouldReturnTheSpecifiedValue() { 41 int value = audioManager.requestAudioFocus(listener, 999, 888); 42 assertEquals(AudioManager.AUDIOFOCUS_REQUEST_GRANTED, value); 43 44 shadowAudioManager.setNextFocusRequestResponse(AudioManager.AUDIOFOCUS_REQUEST_FAILED); 45 46 value = audioManager.requestAudioFocus(listener, 999, 888); 47 assertEquals(AudioManager.AUDIOFOCUS_REQUEST_FAILED, value); 48 } 49 50 @Test 51 public void abandonAudioFocus_shouldRecordTheListenerOfTheMostRecentCall() { 52 audioManager.abandonAudioFocus(null); 53 assertNull(shadowAudioManager.getLastAbandonedAudioFocusListener()); 54 55 audioManager.abandonAudioFocus(listener); 56 assertSame(listener, shadowAudioManager.getLastAbandonedAudioFocusListener()); 57 } 58 59 @Test 60 public void shouldGetStreamMaxVolume() throws Exception { 61 shadowAudioManager.setStreamMaxVolume(45); 62 63 assertEquals(45, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); 64 } 65 66 @Test 67 public void shouldGetVolume() throws Exception { 68 shadowAudioManager.setStreamVolume(5); 69 70 assertEquals(5, audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)); 71 } 72 73 @Test 74 public void shouldSetVolume() throws Exception { 75 audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 8, 0); 76 77 assertEquals(8, audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)); 78 assertEquals(8, shadowAudioManager.getStreamVolume()); 79 } 80 81} 82