Search in sources :

Example 6 with AudioRecordSource

use of org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource in project robolectric by robolectric.

the class ShadowAudioRecordTest method nativeReadByteCallsAudioRecordSourceWhenSet.

@Test
public void nativeReadByteCallsAudioRecordSourceWhenSet() {
    AudioRecordSource source = Mockito.mock(AudioRecordSource.class);
    ShadowAudioRecord.setSource(source);
    AudioRecord audioRecord = createAudioRecord();
    audioRecord.startRecording();
    audioRecord.read(new byte[100], 0, 100);
    verify(source).readInByteArray(any(byte[].class), eq(0), eq(100), /* isBlocking=*/
    eq(true));
    verifyNoMoreInteractions(source);
}
Also used : AudioRecord(android.media.AudioRecord) AudioRecordSource(org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource) Test(org.junit.Test)

Example 7 with AudioRecordSource

use of org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource in project robolectric by robolectric.

the class ShadowAudioRecordTest method nativeReadShortCallsAudioRecordSourceWhenSetNonBlockingMOnwards.

@Test
@Config(minSdk = M)
public void nativeReadShortCallsAudioRecordSourceWhenSetNonBlockingMOnwards() {
    AudioRecordSource source = Mockito.mock(AudioRecordSource.class);
    ShadowAudioRecord.setSource(source);
    AudioRecord audioRecord = createAudioRecord();
    audioRecord.startRecording();
    audioRecord.read(new short[100], 0, 100, AudioRecord.READ_NON_BLOCKING);
    verify(source).readInShortArray(any(short[].class), eq(0), eq(100), /* isBlocking=*/
    eq(false));
    verifyNoMoreInteractions(source);
}
Also used : AudioRecord(android.media.AudioRecord) AudioRecordSource(org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource) Test(org.junit.Test) Config(org.robolectric.annotation.Config)

Example 8 with AudioRecordSource

use of org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource in project robolectric by robolectric.

the class ShadowAudioRecordTest method nativeReadFloatCallsAudioRecordSourceWhenSetBlocking.

@Test
@Config(minSdk = M)
public void nativeReadFloatCallsAudioRecordSourceWhenSetBlocking() {
    AudioRecordSource source = Mockito.mock(AudioRecordSource.class);
    ShadowAudioRecord.setSource(source);
    AudioRecord audioRecord = new AudioRecord(AudioSource.MIC, 16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_FLOAT, 1024);
    audioRecord.startRecording();
    audioRecord.read(new float[100], 0, 100, AudioRecord.READ_BLOCKING);
    verify(source).readInFloatArray(any(float[].class), eq(0), eq(100), /* isBlocking=*/
    eq(true));
    verifyNoMoreInteractions(source);
}
Also used : AudioRecord(android.media.AudioRecord) AudioRecordSource(org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource) Test(org.junit.Test) Config(org.robolectric.annotation.Config)

Example 9 with AudioRecordSource

use of org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource in project robolectric by robolectric.

the class ShadowAudioRecordTest method setSourceProvider.

@Test
public void setSourceProvider() {
    byte[] firstAudioRecordInput = new byte[] { 1, 2, 3 };
    AudioRecordSource firstAudioRecordSource = createAudioRecordSource(firstAudioRecordInput);
    AudioRecord firstAudioRecord = createAudioRecord();
    byte[] secondAudioRecordInput = new byte[] { 4, 5, 6, 7, 8 };
    AudioRecordSource subsequentAudioRecordSource = createAudioRecordSource(secondAudioRecordInput);
    AudioRecord secondAudioRecord = createAudioRecord();
    ShadowAudioRecord.setSourceProvider(audioRecord -> {
        if (audioRecord == firstAudioRecord) {
            return firstAudioRecordSource;
        }
        return subsequentAudioRecordSource;
    });
    firstAudioRecord.startRecording();
    byte[] firstAudioRecordData = new byte[100];
    int firstAudioRecordBytesRead = firstAudioRecord.read(firstAudioRecordData, 0, 100);
    firstAudioRecord.stop();
    firstAudioRecord.release();
    // Read from second AudioRecord.
    secondAudioRecord.startRecording();
    byte[] secondAudioRecordData = new byte[100];
    int secondAudioRecordBytesRead = secondAudioRecord.read(secondAudioRecordData, 0, 100);
    secondAudioRecord.stop();
    secondAudioRecord.release();
    assertThat(firstAudioRecordBytesRead).isEqualTo(firstAudioRecordInput.length);
    assertThat(Arrays.copyOf(firstAudioRecordData, firstAudioRecordInput.length)).isEqualTo(firstAudioRecordInput);
    assertThat(secondAudioRecordBytesRead).isEqualTo(secondAudioRecordInput.length);
    assertThat(Arrays.copyOf(secondAudioRecordData, secondAudioRecordInput.length)).isEqualTo(secondAudioRecordInput);
}
Also used : AudioRecord(android.media.AudioRecord) AudioRecordSource(org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource) Test(org.junit.Test)

Example 10 with AudioRecordSource

use of org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource in project robolectric by robolectric.

the class ShadowAudioRecordTest method nativeReadByteBufferCallsAudioRecordSourceWhenSetNonBlockingMOnwards.

@Test
@Config(minSdk = M)
public void nativeReadByteBufferCallsAudioRecordSourceWhenSetNonBlockingMOnwards() {
    AudioRecordSource source = Mockito.mock(AudioRecordSource.class);
    ShadowAudioRecord.setSource(source);
    AudioRecord audioRecord = createAudioRecord();
    audioRecord.startRecording();
    audioRecord.read(ByteBuffer.allocate(100), 100, AudioRecord.READ_NON_BLOCKING);
    verify(source).readInDirectBuffer(any(ByteBuffer.class), eq(100), /* isBlocking=*/
    eq(false));
    verifyNoMoreInteractions(source);
}
Also used : AudioRecord(android.media.AudioRecord) AudioRecordSource(org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource) ByteBuffer(java.nio.ByteBuffer) Test(org.junit.Test) Config(org.robolectric.annotation.Config)

Aggregations

AudioRecord (android.media.AudioRecord)13 Test (org.junit.Test)13 AudioRecordSource (org.robolectric.shadows.ShadowAudioRecord.AudioRecordSource)13 Config (org.robolectric.annotation.Config)8 ByteBuffer (java.nio.ByteBuffer)3