Files
AnyPS5/core/libs/tests/GuestNpPartner.cpp

45 lines
1.3 KiB
C++

#include "prx/libc/include/general/VabiMacros.hpp"
#include <cstdlib>
#include <stdexcept>
extern "C" {
int APS5_VABI sceNpEAAccessInitialize(void);
int APS5_VABI sceNpEAAccessTerminate(void);
int APS5_VABI sceNpHasEAAccessSubscription(int, bool*);
}
namespace {
void Require(bool value) { if (!value) std::abort(); }
template <typename TAction>
bool Throws(TAction action) {
try {
action();
} catch (const std::logic_error&) {
return true;
}
return false;
}
}
int main() {
bool subscribed = true;
Require(Throws([] { sceNpEAAccessTerminate(); }));
Require(Throws([&] { sceNpHasEAAccessSubscription(1, &subscribed); }));
Require(sceNpEAAccessInitialize() == 0);
Require(Throws([] { sceNpEAAccessInitialize(); }));
Require(Throws([] { sceNpHasEAAccessSubscription(1, nullptr); }));
Require(sceNpHasEAAccessSubscription(1, &subscribed) == 0);
Require(!subscribed);
subscribed = true;
Require(sceNpHasEAAccessSubscription(0, &subscribed) == 0);
Require(!subscribed);
Require(sceNpEAAccessTerminate() == 0);
Require(Throws([] { sceNpEAAccessTerminate(); }));
Require(Throws([&] { sceNpHasEAAccessSubscription(1, &subscribed); }));
Require(sceNpEAAccessInitialize() == 0);
Require(sceNpEAAccessTerminate() == 0);
}