Merge pull request #5152 from dev-mca/test/convert-keycode

test(libSceConvertKeycode): cover sceConvertKeycodeGetImeKeyboardType
This commit is contained in:
Dean 2026-10-14 16:06:42 +13:00 committed by GitHub
commit a5f493f90d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,15 @@
add_library(libSceConvertKeycode SHARED EXCLUDE_FROM_ALL Export.cpp)
target_include_directories(libSceConvertKeycode PRIVATE ${LIBS_INCLUDE_DIR})
configure_windows_unwind(libSceConvertKeycode)
if(BUILD_TESTING)
add_test_executable(guest_convert_keycode_tests ${LIBS_INCLUDE_DIR}/tests/GuestConvertKeycode.cpp)
target_include_directories(guest_convert_keycode_tests PRIVATE ${LIBS_INCLUDE_DIR})
target_link_libraries(guest_convert_keycode_tests PRIVATE libSceConvertKeycode libc)
configure_windows_unwind(guest_convert_keycode_tests)
add_test(NAME guest_convert_keycode COMMAND guest_convert_keycode_tests)
if(WIN32)
set_tests_properties(guest_convert_keycode PROPERTIES ENVIRONMENT_MODIFICATION
"PATH=path_list_prepend:$<TARGET_FILE_DIR:libSceConvertKeycode>")
endif()
endif()

View File

@ -0,0 +1,30 @@
#include "SceTypes.hpp"
#include "prx/libc/include/general/VabiMacros.hpp"
#include <cstdint>
#include <cstdlib>
extern "C" {
int APS5_VABI sceConvertKeycodeGetImeKeyboardType(std::int32_t, std::uint32_t*);
}
static void Require(bool value) { if (!value) std::abort(); }
int main() {
constexpr int invalidAddress = static_cast<int>(0x80BC0031u);
constexpr int invalidUserId = static_cast<int>(0x80BC0010u);
Require(sceConvertKeycodeGetImeKeyboardType(0, nullptr) == invalidAddress);
Require(sceConvertKeycodeGetImeKeyboardType(-1, nullptr) == invalidAddress);
std::uint32_t type = 0xFFFFFFFFu;
Require(sceConvertKeycodeGetImeKeyboardType(-1, &type) == invalidUserId);
Require(type == 0xFFFFFFFFu);
Require(sceConvertKeycodeGetImeKeyboardType(0, &type) == 0);
Require(type == 0);
type = 0xFFFFFFFFu;
Require(sceConvertKeycodeGetImeKeyboardType(1, &type) == 0);
Require(type == 0);
return 0;
}