diff --git a/core/libs/prx/libSceAudioOut/CMakeLists.txt b/core/libs/prx/libSceAudioOut/CMakeLists.txt index a8e939bab4..bc85082ca5 100644 --- a/core/libs/prx/libSceAudioOut/CMakeLists.txt +++ b/core/libs/prx/libSceAudioOut/CMakeLists.txt @@ -317,6 +317,16 @@ if(BUILD_TESTING) "PATH=path_list_prepend:$") endif() + add_test_executable(guest_audio_out_tests ${LIBS_INCLUDE_DIR}/tests/GuestAudioOut.cpp) + target_include_directories(guest_audio_out_tests PRIVATE ${LIBS_INCLUDE_DIR}) + target_link_libraries(guest_audio_out_tests PRIVATE libSceAudioOut libc) + configure_windows_unwind(guest_audio_out_tests) + add_test(NAME guest_audio_out COMMAND guest_audio_out_tests) + if(WIN32) + set_tests_properties(guest_audio_out PROPERTIES ENVIRONMENT_MODIFICATION + "PATH=path_list_prepend:$") + endif() + add_test_executable(audio_out2_context_handles_tests tests/AudioOut2ContextHandles.cpp) target_include_directories(audio_out2_context_handles_tests PRIVATE ${LIBS_INCLUDE_DIR}) target_link_libraries(audio_out2_context_handles_tests PRIVATE libSceAudioOut libc) diff --git a/core/libs/tests/GuestAudioOut.cpp b/core/libs/tests/GuestAudioOut.cpp new file mode 100644 index 0000000000..b80d9741f9 --- /dev/null +++ b/core/libs/tests/GuestAudioOut.cpp @@ -0,0 +1,22 @@ +#include "prx/libSceAudioOut/include/AudioOut.hpp" +#include "SceTypes.hpp" +#include "prx/libc/include/Shutdown.hpp" +#include + +static void Require(bool value) { + if (!value) { + std::abort(); + } +} + +int main() { + constexpr int invalidPointer = static_cast(0x80260004); + constexpr int invalidHandle = static_cast(0x80260001); + + Require(sceAudioOutInit() == 0); + Require(sceAudioOutGetPortState(invalidHandle, nullptr) == invalidPointer); + Require(sceAudioOutGetPortState(0, nullptr) == invalidPointer); + + LibcRunShutdown_nid_postfix(); + return 0; +}