Files
AnyPS5/core/libs/tests/GuestPlayerSelectionDialog.cpp
T
Nithishvelan M dec0e2013c feat(libScePlayerSelectionDialog): export scePlayerSelectionDialogGetStatus and scePlayerSelectionDialogClose
Implement scePlayerSelectionDialogGetStatus and scePlayerSelectionDialogClose in libScePlayerSelectionDialog, matching the common dialog lifecycle convention across player dialogs, and add unit test coverage in GuestPlayerSelectionDialog.
2026-10-18 10:01:34 +05:30

62 lines
2.4 KiB
C++

#include "prx/libc/include/general/VabiMacros.hpp"
#include <cstdint>
#include <cstdlib>
extern "C" {
int APS5_VABI scePlayerSelectionDialogInitialize(void);
int APS5_VABI scePlayerSelectionDialogOpen(const void* param);
int APS5_VABI scePlayerSelectionDialogUpdateStatus(void);
int APS5_VABI scePlayerSelectionDialogGetStatus(void);
int APS5_VABI scePlayerSelectionDialogGetResult(void* result);
int APS5_VABI scePlayerSelectionDialogClose(void);
int APS5_VABI scePlayerSelectionDialogTerminate(void);
}
namespace {
void Require(bool value) { if (!value) std::abort(); }
constexpr int kStatusFinished = 3;
constexpr int kErrNotInitialized = static_cast<int>(0x80B80003);
constexpr int kErrAlreadyInitialized = static_cast<int>(0x80B80004);
constexpr int kErrNotFinished = static_cast<int>(0x80B80005);
constexpr int kErrArgNull = static_cast<int>(0x80B8000D);
constexpr int kResultUserCanceled = 1;
}
int main() {
std::int64_t param = 0;
std::int32_t result[2] = {-1, -1};
Require(scePlayerSelectionDialogTerminate() == kErrNotInitialized);
Require(scePlayerSelectionDialogOpen(&param) == kErrNotInitialized);
Require(scePlayerSelectionDialogClose() == kErrNotInitialized);
Require(scePlayerSelectionDialogGetResult(result) == kErrNotInitialized);
Require(scePlayerSelectionDialogGetStatus() == 0);
Require(scePlayerSelectionDialogUpdateStatus() == 0);
Require(scePlayerSelectionDialogInitialize() == 0);
Require(scePlayerSelectionDialogInitialize() == kErrAlreadyInitialized);
Require(scePlayerSelectionDialogGetStatus() == 1);
Require(scePlayerSelectionDialogUpdateStatus() == 1);
Require(scePlayerSelectionDialogOpen(nullptr) == kErrArgNull);
Require(scePlayerSelectionDialogGetResult(result) == kErrNotFinished);
Require(scePlayerSelectionDialogOpen(&param) == 0);
Require(scePlayerSelectionDialogGetStatus() == kStatusFinished);
Require(scePlayerSelectionDialogUpdateStatus() == kStatusFinished);
Require(scePlayerSelectionDialogGetResult(nullptr) == kErrArgNull);
Require(scePlayerSelectionDialogGetResult(result) == 0);
Require(result[0] == kResultUserCanceled);
Require(result[1] == -1);
Require(scePlayerSelectionDialogClose() == 0);
Require(scePlayerSelectionDialogTerminate() == 0);
Require(scePlayerSelectionDialogTerminate() == kErrNotInitialized);
Require(scePlayerSelectionDialogGetStatus() == 0);
Require(scePlayerSelectionDialogClose() == kErrNotInitialized);
}