diff --git a/media/libaaudio/tests/test_various.cpp b/media/libaaudio/tests/test_various.cpp index 41693e884b..1c2661518b 100644 --- a/media/libaaudio/tests/test_various.cpp +++ b/media/libaaudio/tests/test_various.cpp @@ -75,12 +75,33 @@ void checkReleaseThenClose(aaudio_performance_mode_t perfMode, EXPECT_EQ(AAUDIO_OK, AAudioStream_requestStop(aaudioStream)); EXPECT_EQ(AAUDIO_OK, AAudioStream_release(aaudioStream)); - aaudio_stream_state_t state = AAudioStream_getState(aaudioStream); - EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, state); + EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, AAudioStream_getState(aaudioStream)); // We should be able to call this again without crashing. EXPECT_EQ(AAUDIO_OK, AAudioStream_release(aaudioStream)); - state = AAudioStream_getState(aaudioStream); + EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, AAudioStream_getState(aaudioStream)); + + // We expect these not to crash. + AAudioStream_setBufferSizeInFrames(aaudioStream, 0); + AAudioStream_setBufferSizeInFrames(aaudioStream, 99999999); + + // We should NOT be able to start or change a stream after it has been released. + EXPECT_EQ(AAUDIO_ERROR_INVALID_STATE, AAudioStream_requestStart(aaudioStream)); + EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, AAudioStream_getState(aaudioStream)); + EXPECT_EQ(AAUDIO_ERROR_INVALID_STATE, AAudioStream_requestPause(aaudioStream)); + EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, AAudioStream_getState(aaudioStream)); + EXPECT_EQ(AAUDIO_ERROR_INVALID_STATE, AAudioStream_requestStop(aaudioStream)); + EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, AAudioStream_getState(aaudioStream)); + + // Does this crash? + EXPECT_LT(0, AAudioStream_getFramesRead(aaudioStream)); + EXPECT_LT(0, AAudioStream_getFramesWritten(aaudioStream)); + + // Verify Closing State. Does this crash? + aaudio_stream_state_t state = AAUDIO_STREAM_STATE_UNKNOWN; + EXPECT_EQ(AAUDIO_OK, AAudioStream_waitForStateChange(aaudioStream, + AAUDIO_STREAM_STATE_UNKNOWN, &state, + 500 * NANOS_PER_MILLISECOND)); EXPECT_EQ(AAUDIO_STREAM_STATE_CLOSING, state); EXPECT_EQ(AAUDIO_OK, AAudioStream_close(aaudioStream));