From cc131ba465340201560fec288e9f8a063838dffa Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Fri, 17 Apr 2020 08:25:30 -0700 Subject: [PATCH] aaudio test: add tests for after release Call various functions after calling AAudioStream_release(). Bug: 154274446 Bug: 154274027 Test: this is a test Change-Id: Ia0938362502b15a4ae5608f0619e0bc5ce78ca22 --- media/libaaudio/tests/test_various.cpp | 27 +++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) 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));