diff --git a/core/libs/prx/libSceCommonDialog/CMakeLists.txt b/core/libs/prx/libSceCommonDialog/CMakeLists.txt new file mode 100644 index 0000000000..d770a3c871 --- /dev/null +++ b/core/libs/prx/libSceCommonDialog/CMakeLists.txt @@ -0,0 +1,15 @@ +add_library(libSceCommonDialog SHARED EXCLUDE_FROM_ALL Export.cpp) +target_include_directories(libSceCommonDialog PRIVATE ${LIBS_INCLUDE_DIR}) +configure_windows_unwind(libSceCommonDialog) + +if(BUILD_TESTING) + add_test_executable(guest_common_dialog_tests ${LIBS_INCLUDE_DIR}/tests/GuestCommonDialog.cpp) + target_include_directories(guest_common_dialog_tests PRIVATE ${LIBS_INCLUDE_DIR}) + target_link_libraries(guest_common_dialog_tests PRIVATE libSceCommonDialog libc) + configure_windows_unwind(guest_common_dialog_tests) + add_test(NAME guest_common_dialog COMMAND guest_common_dialog_tests) + if(WIN32) + set_tests_properties(guest_common_dialog PROPERTIES ENVIRONMENT_MODIFICATION + "PATH=path_list_prepend:$") + endif() +endif() diff --git a/core/libs/tests/GuestCommonDialog.cpp b/core/libs/tests/GuestCommonDialog.cpp new file mode 100644 index 0000000000..1638caf9ec --- /dev/null +++ b/core/libs/tests/GuestCommonDialog.cpp @@ -0,0 +1,24 @@ +#include "prx/libc/include/general/VabiMacros.hpp" +#include "prx/libSceCommonDialog/CommonDialog.hpp" +#include + +extern "C" { +int APS5_VABI sceCommonDialogInitialize(void); +bool APS5_VABI sceCommonDialogIsUsed(void); +} + +namespace { + +void Require(bool value) { + if (!value) std::abort(); +} + +} + +int main() { + Require(!sceCommonDialogIsUsed()); + Require(sceCommonDialogInitialize() == COMMON_DIALOG_OK); + Require(!sceCommonDialogIsUsed()); + Require(sceCommonDialogInitialize() == COMMON_DIALOG_ERROR_ALREADY_INITIALIZED); + Require(!sceCommonDialogIsUsed()); +}