@ -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 ) ) ;